<?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>226281</bug_id>
          
          <creation_ts>2021-05-26 11:15:54 -0700</creation_ts>
          <short_desc>Stop using UncheckedLock in JSDOMGlobalObject</short_desc>
          <delta_ts>2021-05-28 16:54:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763981</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 11:15:54 -0700</bug_when>
    <thetext>Stop using UncheckedLock in JSDOMGlobalObject as it is being phased out in favor of Lock, which supports Clang thread safety analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763987</commentid>
    <comment_count>1</comment_count>
      <attachid>429775</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 11:33:51 -0700</bug_when>
    <thetext>Created attachment 429775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764256</commentid>
    <comment_count>2</comment_count>
      <attachid>429775</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-27 01:46:48 -0700</bug_when>
    <thetext>Comment on attachment 429775
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Clang thread safety analysis.

It&apos;s not clear if the payload of the commit is to
a) Prove `JSDOMGlobalObject` locking more correct
b) Reducing the usage of `UncheckedLock` with the goal of eventually removing `UncheckedLock` on the grounds of &quot;less classes, more simplicity&quot;.

I think `UncheckedLock` is pretty good class for its purpose: it allows `Lock` use sites to be proven more correct by providing an escape hatch for wild behavior using UncheckedLock. (However, some code has already gone in Lock that decreases its usefulness from this perspective.)

From this viewpoint, I think a) is a worthy goal while b) is not, if b) would mean reducing the proof power of `Lock`.

This is on the grounds that if we merge features of `CheckedLock` and `UncheckedLock` into one amalgamation of `Lock`, then it might be that we lose the ability to prove useful aspects or at least it may happen that we _think_ we are proving something when in reality it is easy for all but non-experts to invoke the escape hatch aspects of the implementation by mistake.

&gt; Source/WTF/wtf/Lock.h:195
&gt; +    Locker(Locker&amp;&amp; other) // Not compatible with Clang thread safety analysis.

I would find clang more consistent if it complained about acquire/release mismatch when running the destructor. Unsure if it&apos;s just unimplemented or by design..

I&apos;m not sure the Lock is moving in the right direction..

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:121
&gt;  

To have a payload a) in this commit I&apos;d imagine you&apos;d do following:
```
   JSDOMStructureMap m_structures WTF_GUARDED_BY(m_gcLock);
   ...
```

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:124
&gt; +    Lock m_gcLock;

```
   GCLock m_gcLock;
```

And then you&apos;d have :

```
class WTF_CAPABILITY_LOCK GCLock { ... };
class WTF_CAPABILITY_SCOPED_LOCK GCLocker { ... };

GCLocker { vm.heap, mutableGlobalObject };
mutableGlobalObject.constructors().add(ConstructorClass::info(), temp).iterator-&gt;value.set(vm, &amp;globalObject, constructor);
...
```

So:
1) remove the anti-pattern of passing the locker
2) Change viewpoint
  &quot;Object should be locked if heap says mutator should be fenced. An operation can be done to the object with or without the lock, but be sure to know what you&apos;re doing.&quot;
  to
 &quot;Object should be always locked and only then the operation can be done to the object. The object lock is a special case lock in the way that it does something if heap says mutator should be fenced, otherwise it&apos;s a no-op.&quot;.

&gt; Source/WebCore/bindings/js/JSDOMGuardedObject.cpp:40
&gt; +    if (locker)

so this would be:
```
GCLocker { globalObject.vm().heap, globalObject };
globalObject.guardedObjects().add(this);
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764257</commentid>
    <comment_count>3</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-27 01:57:44 -0700</bug_when>
    <thetext>&gt;easy for all but non-experts to invoke the escape hatch aspects of the implementation by mistake.

all but *experts* ..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764329</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 07:38:47 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #2)
&gt; Comment on attachment 429775 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429775&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Clang thread safety analysis.
&gt; 
&gt; It&apos;s not clear if the payload of the commit is to
&gt; a) Prove `JSDOMGlobalObject` locking more correct
&gt; b) Reducing the usage of `UncheckedLock` with the goal of eventually
&gt; removing `UncheckedLock` on the grounds of &quot;less classes, more simplicity&quot;.

Ideally, a) would be better. However, it is not really possible here. Of course, I am definitely going for b).
Per previously received feedback, I am working to removed UncheckedLock from the code base so that we have a single Lock class.
And by the way, I am almost done (2 small commits away). Yes, having a single Lock adds simplicity.

There are many cases where we can get at least partial validation using Lock, even if the code does something the analysis doesn&apos;t support is some functions and those functions are marked with WTF_IGNORES_THEAD_SAFETY_ANALYSIS. Using a particular Lock type is infectious. By that I mean that if I use it in one class, I may have to use with in many other classes to get things to build
properly (WTF::AutomaticThread was a good example example of that. JSC had to use UncheckedLock because AutomaticThread and vice-versa).

&gt; 
&gt; I think `UncheckedLock` is pretty good class for its purpose: it allows
&gt; `Lock` use sites to be proven more correct by providing an escape hatch for
&gt; wild behavior using UncheckedLock. (However, some code has already gone in
&gt; Lock that decreases its usefulness from this perspective.)

The issue really isn&apos;t with the Lock implementation though. All the code could be using Lock without trouble, albeit using WTF_IGNORES_THEAD_SAFETY_ANALYSIS in some places.
The issue is the the Locker&lt;Lock&gt; specialization is super inflexible and doesn&apos;t allow me to do things that I should be able to do.

I don&apos;t think we want a escape hatch. I think we want the code to get the benefits of analysis as much as possible, and in cases where analysis is not supported, use WTF_IGNORES_THEAD_SAFETY_ANALYSIS.
Note that there are already cases with Locker where analysis is not supported and you have to use WTF_IGNORES_THEAD_SAFETY_ANALYSIS. Using Locker&lt;Lock&gt; does not guarantee you&apos;ll get thread safety analysis, e.g.:
```
if (foo) {
    Locker lock { m_lock }
    // Do something while locked.
}
// Do something while unlocked
```
or using an Optional&lt;Locker&lt;Lock&gt;&gt;.

We also don&apos;t want to have people use the UncheckedLock escape hatch simply because our Locker implementation is to inconvenient to use (e.g. I cannot return a Locker&lt;Lock&gt; from a function).

&gt; 
&gt; From this viewpoint, I think a) is a worthy goal while b) is not, if b)
&gt; would mean reducing the proof power of `Lock`.
&gt; 
&gt; This is on the grounds that if we merge features of `CheckedLock` and
&gt; `UncheckedLock` into one amalgamation of `Lock`, then it might be that we
&gt; lose the ability to prove useful aspects or at least it may happen that we
&gt; _think_ we are proving something when in reality it is easy for all but
&gt; non-experts to invoke the escape hatch aspects of the implementation by
&gt; mistake.
&gt; 
&gt; &gt; Source/WTF/wtf/Lock.h:195
&gt; &gt; +    Locker(Locker&amp;&amp; other) // Not compatible with Clang thread safety analysis.
&gt; 
&gt; I would find clang more consistent if it complained about acquire/release
&gt; mismatch when running the destructor. Unsure if it&apos;s just unimplemented or
&gt; by design..
&gt; 
&gt; I&apos;m not sure the Lock is moving in the right direction..
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:121
&gt; &gt;  
&gt; 
&gt; To have a payload a) in this commit I&apos;d imagine you&apos;d do following:
&gt; ```
&gt;    JSDOMStructureMap m_structures WTF_GUARDED_BY(m_gcLock);
&gt;    ...
&gt; ```
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:124
&gt; &gt; +    Lock m_gcLock;
&gt; 
&gt; ```
&gt;    GCLock m_gcLock;
&gt; ```
&gt; 
&gt; And then you&apos;d have :
&gt; 
&gt; ```
&gt; class WTF_CAPABILITY_LOCK GCLock { ... };
&gt; class WTF_CAPABILITY_SCOPED_LOCK GCLocker { ... };
&gt; 
&gt; GCLocker { vm.heap, mutableGlobalObject };
&gt; mutableGlobalObject.constructors().add(ConstructorClass::info(),
&gt; temp).iterator-&gt;value.set(vm, &amp;globalObject, constructor);
&gt; ...
&gt; ```
&gt; 
&gt; So:
&gt; 1) remove the anti-pattern of passing the locker

I don&apos;t think it is an anti-pattern in those cases though. JSC has the pattern of passing an AbstractLocker (Not a Locker&lt;&gt;) around for functions that usually require a lock to be acquired first.
HOWEVER, there are cases where they know it is safe to run without locking. In such cases, they pass an AbstractLocker { NoLockingNecessary }. It documents that locking is usually necessary and forces call sites to think about locking. It also supports being efficient in cases where we know Locking is pointless (because no other thread is running at the moment for e.g.) I personally see how this pattern can be
useful. I also see how it is incompatible with Clang thread safety validation. However, I disagree that this means that every code using this pattern cannot use the Lock type and has to
use UncheckedLock as a result.

&gt; 2) Change viewpoint
&gt;   &quot;Object should be locked if heap says mutator should be fenced. An
&gt; operation can be done to the object with or without the lock, but be sure to
&gt; know what you&apos;re doing.&quot;
&gt;   to
&gt;  &quot;Object should be always locked and only then the operation can be done to
&gt; the object. The object lock is a special case lock in the way that it does
&gt; something if heap says mutator should be fenced, otherwise it&apos;s a no-op.&quot;.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMGuardedObject.cpp:40
&gt; &gt; +    if (locker)
&gt; 
&gt; so this would be:
&gt; ```
&gt; GCLocker { globalObject.vm().heap, globalObject };
&gt; globalObject.guardedObjects().add(this);
&gt; ```

In the end, I think we want code to benefit from analysis as possible and I think we also want the WebKit project to be as easily hackable as possible. Having a single Lock and a convenient Locker&lt;&gt; go a long way towards the simplicity goal. Having a single Lock type that supports analysis go a long way towards getting as much validation as possible. Sure, there will always be cases where we have to do (or decide to do) things that are not supported by clang analysis, that is fine but the scope should be as limited as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764331</commentid>
    <comment_count>5</comment_count>
      <attachid>429775</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 07:53:58 -0700</bug_when>
    <thetext>Comment on attachment 429775
Patch

I will see what I can do about getting more benefits from analysis in this patch. To be clear though, I 100% think we should get rid of UncheckedLock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764340</commentid>
    <comment_count>6</comment_count>
      <attachid>429882</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 08:55:26 -0700</bug_when>
    <thetext>Created attachment 429882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764341</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 08:57:51 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Created attachment 429882 [details]
&gt; Patch

This should be a lot less controversial. I did not introduce a new type of lock / locker though as this is the opposite direction I want to go to and also, there would be very few users.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764354</commentid>
    <comment_count>8</comment_count>
      <attachid>429885</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 09:24:59 -0700</bug_when>
    <thetext>Created attachment 429885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764372</commentid>
    <comment_count>9</comment_count>
      <attachid>429890</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 09:53:47 -0700</bug_when>
    <thetext>Created attachment 429890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764385</commentid>
    <comment_count>10</comment_count>
      <attachid>429894</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 10:15:26 -0700</bug_when>
    <thetext>Created attachment 429894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764396</commentid>
    <comment_count>11</comment_count>
      <attachid>429897</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 10:29:51 -0700</bug_when>
    <thetext>Created attachment 429897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764695</commentid>
    <comment_count>12</comment_count>
      <attachid>429897</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-27 23:12:58 -0700</bug_when>
    <thetext>Comment on attachment 429897
Patch

From the perspective of changing the lock type, makes sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764755</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-28 07:35:35 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #12)
&gt; Comment on attachment 429897 [details]
&gt; Patch
&gt; 
&gt; From the perspective of changing the lock type, makes sense to me.

Patch is ready for review then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765002</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-28 16:36:20 -0700</bug_when>
    <thetext>Anybody willing to review? I don&apos;t think the patch is controversial anymore as it doesn&apos;t change WTF::Lock and it adds a lot of clang analysis validation to the JSDOMGlobalObject code.

I am super close to having no use of UncheckedLock in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765008</commentid>
    <comment_count>15</comment_count>
      <attachid>429897</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-28 16:44:39 -0700</bug_when>
    <thetext>Comment on attachment 429897
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:259
&gt; +        // The GC thread has to grab the gc lock even though it is not mutating the containers.

I would capitalize &quot;gc&quot; both times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765009</commentid>
    <comment_count>16</comment_count>
      <attachid>429897</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-28 16:45:36 -0700</bug_when>
    <thetext>Comment on attachment 429897
Patch

Could we have avoided all the duplicate code using std::optional&lt;Locker&gt; or would that not work with the clang analysis?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765012</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-28 16:51:21 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 429897 [details]
&gt; Patch
&gt; 
&gt; Could we have avoided all the duplicate code using std::optional&lt;Locker&gt; or
&gt; would that not work with the clang analysis?

std::optional&lt;Locker&gt; does build but then you get no clang thread safety analysis. Analysis does not support &quot;conditional&quot; locking and thus forcing us to use branches like I did if we want the validation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765014</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-28 16:53:32 -0700</bug_when>
    <thetext>Committed r278229 (238266@main): &lt;https://commits.webkit.org/238266@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765015</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-28 16:54:00 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; (In reply to Darin Adler from comment #16)
&gt; &gt; Comment on attachment 429897 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Could we have avoided all the duplicate code using std::optional&lt;Locker&gt; or
&gt; &gt; would that not work with the clang analysis?
&gt; 
&gt; std::optional&lt;Locker&gt; does build but then you get no clang thread safety
&gt; analysis. Analysis does not support &quot;conditional&quot; locking and thus forcing
&gt; us to use branches like I did if we want the validation.

When I said it would build, I meant with WTF_IGNORES_THREAD_SAFETY_ANALYSIS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765016</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-28 16:54:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78637376&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429775</attachid>
            <date>2021-05-26 11:33:51 -0700</date>
            <delta_ts>2021-05-27 08:55:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226281-20210526113350.patch</filename>
            <type>text/plain</type>
            <size>8308</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OWRjMDVkMjMyMWM4YmQzYzU0MDM3NGU4NTQ3ZGI0ODkxZWNmNmNlLi5hNjNlYjczYTg1M2Y2ZTMx
OTc3OTNmYzAwMjVjMjYwZDBlZDViZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL0xv
Y2tEdXJpbmdNYXJraW5nLmg6CisgICAgICAgIChKU0M6OmxvY2tEdXJpbmdNYXJraW5nKToKKwog
MjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0
b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBXVEY6OkF1dG9tYXRpY1RocmVhZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxNWRm
OTFlOTc1ZjI5MjBhZTZhYmY5ODFiM2IwZjIxYjc5Y2VkNDNiLi5iNWRmMzhmZjU0MGY1MjNmYzVm
NmI1OWE5MzBlMWZjYjk5ZmZhZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBVbmNo
ZWNrZWRMb2NrIGluIEpTRE9NR2xvYmFsT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtb3ZlIGNvbnN0cnVjdG9yIHRvIExvY2tlcjxM
b2NrPi4gV2hpbGUgdXNpbmcgdGhpcyBtb3ZlIGNvbnN0cnVjdG9yCisgICAgICAgIGlzIG5vdCBj
b21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFkIHNhZmV0eSBhbmFseXNpcywgaXQgYWxsb3dzIHVz
IHRvIHN1cHBvcnQKKyAgICAgICAgc29tZSBhZGRpdGlvbmFsIHVzZSBjYXNlcyBhbmQgZ2V0IHJp
ZCBvZiBtb3JlIHVzYWdlIG9mIFVuY2hlY2tlZExvY2suCisKKyAgICAgICAgKiB3dGYvTG9jay5o
OgorCiAyMDIxLTA1LTI2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVVJMIHBhdGggc2V0dGVyIG1lc3NlcyB1cCBVVEYtOCBlbmNvZGluZyBh
ZnRlciA/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjNGRlNDU0Y2NhNTM3ZTMwMTIwMWI5YzRkY2MzYzkzODdk
MjdlZS4uNmJkMzBlM2E3YzA4MDE2YWI2ZDUxZWEwY2I0M2QzNzM5ZjJjZjFkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRMb2NrIGluIEpTRE9NR2xvYmFs
T2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYyODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dG9wIHVzaW5nIFVuY2hlY2tlZExvY2sgaW4gSlNET01HbG9iYWxPYmplY3QgYXMgaXQgaXMgYmVp
bmcgcGhhc2VkIG91dCBpbiBmYXZvciBvZiBMb2NrLCB3aGljaCBzdXBwb3J0cworICAgICAgICBD
bGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01HdWFyZGVkT2JqZWN0OjpjbGVhcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XcmFwcGVyQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1
cmUpOgorCiAyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50J3MgYmxvY2tlZFVSTCAmIGRv
Y3VtZW50VVJMIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2tEdXJpbmdNYXJraW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2Nr
RHVyaW5nTWFya2luZy5oCmluZGV4IGZjMjQ2OGY2ZjQyMjhkYjQ5MTI3YTZjZmI2MDE2N2E5ZGZh
MmYyNTguLmZkMjQ0NjljMWEwMmQ4ZWY2YmY1MjM3MjE0ZTI5ZmVlMzhhYjdkYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2tEdXJpbmdNYXJraW5nLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9ja0R1cmluZ01hcmtpbmcuaApAQCAtMzUsNyAr
MzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KIGF1
dG8gbG9ja0R1cmluZ01hcmtpbmcoSGVhcCYgaGVhcCwgTG9ja1R5cGUmIHBhc3NlZExvY2spCiB7
Ci0gICAgcmV0dXJuIExvY2tlciB7IGhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkgPyAmcGFz
c2VkTG9jayA6IG51bGxwdHIgfTsKKyAgICBPcHRpb25hbDxMb2NrZXI8TG9ja1R5cGU+PiBsb2Nr
ZXI7CisgICAgaWYgKGhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkpCisgICAgICAgIGxvY2tl
ci5lbXBsYWNlKHBhc3NlZExvY2spOworICAgIHJldHVybiBsb2NrZXI7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9jay5oIGIvU291cmNlL1dU
Ri93dGYvTG9jay5oCmluZGV4IGVkNDg5NzU0NDVmNDJlMjE1MThjMTJkMjYyM2MwMjJmODg4MGMx
MmIuLjI5YWRkNGRlYTc2ZDY1OGU2ZGVkYjFjMDM3ZWRhZDYxYTQ4MjU4NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0xvY2suaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKQEAgLTE3
Nyw3ICsxNzcsNiBAQCBwdWJsaWM6CiBpbmxpbmUgdm9pZCBhc3NlcnRJc0hlbGQoY29uc3QgTG9j
ayYgbG9jaykgV1RGX0FTU0VSVFNfQUNRVUlSRURfTE9DSyhsb2NrKSB7IEFTU0VSVF9VTlVTRUQo
bG9jaywgbG9jay5pc0hlbGQoKSk7IH0KIAogLy8gTG9ja2VyIHNwZWNpYWxpemF0aW9uIHRvIHVz
ZSB3aXRoIExvY2suCi0vLyBOb24tbW92YWJsZSBzaW1wbGUgc2NvcGVkIGxvY2sgaG9sZGVyLgog
Ly8gRXhhbXBsZTogTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogdGVtcGxhdGUgPD4KIGNsYXNz
IFdURl9DQVBBQklMSVRZX1NDT1BFRF9MT0NLIExvY2tlcjxMb2NrPiA6IHB1YmxpYyBBYnN0cmFj
dExvY2tlciB7CkBAIC0xOTMsNiArMTkyLDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2lzTG9j
a2VkKHRydWUpCiAgICAgewogICAgIH0KKyAgICBMb2NrZXIoTG9ja2VyJiYgb3RoZXIpIC8vIE5v
dCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFkIHNhZmV0eSBhbmFseXNpcy4KKyAgICAgICAg
OiBtX2xvY2sob3RoZXIubV9sb2NrKQorICAgICAgICAsIG1faXNMb2NrZWQoc3RkOjpleGNoYW5n
ZShvdGhlci5tX2lzTG9ja2VkLCBmYWxzZSkpCisgICAgeworICAgIH0KICAgICB+TG9ja2VyKCkg
V1RGX1JFTEVBU0VTX0xPQ0soKQogICAgIHsKICAgICAgICAgaWYgKG1faXNMb2NrZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCA5NTZk
NTFhZDQ4MGQ0ZGQyYzBhODkzOGRlYWY0NGRhYWJhYTc1NmRmLi4wYmIyYjQzYTMzYTVmMDM5Zjdk
ZDNkYjYyMmNiNDZjM2EwMGI5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAogcHVibGljOgotICAgIFVuY2hlY2tlZExv
Y2smIGdjTG9jaygpIHsgcmV0dXJuIG1fZ2NMb2NrOyB9CisgICAgTG9jayYgZ2NMb2NrKCkgeyBy
ZXR1cm4gbV9nY0xvY2s7IH0KIAogICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzKGNv
bnN0IEFic3RyYWN0TG9ja2VyJikgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzOyB9CiAgICAgSlNET01D
b25zdHJ1Y3Rvck1hcCYgY29uc3RydWN0b3JzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyByZXR1
cm4gbV9jb25zdHJ1Y3RvcnM7IH0KQEAgLTEyMSw3ICsxMjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBSZWY8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIHVpbnQ4X3QgbV93b3JsZElzTm9y
bWFsOwotICAgIFVuY2hlY2tlZExvY2sgbV9nY0xvY2s7CisgICAgTG9jayBtX2djTG9jazsKICAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJveHk7CiAKIHByaXZhdGU6CkBA
IC0xNDQsOCArMTQ0LDEwIEBAIGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Db25zdHJ1Y3Rv
cihKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsCiAgICAgQVNTRVJUKCFj
b25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Jj4oZ2xvYmFsT2JqZWN0KS5jb25zdHJ1Y3RvcnMo
Tm9Mb2NraW5nTmVjZXNzYXJ5KS5jb250YWlucyhDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCkpKTsK
ICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiB0ZW1wOwogICAgIEpTRE9NR2xv
YmFsT2JqZWN0JiBtdXRhYmxlR2xvYmFsT2JqZWN0ID0gY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCY+KGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBsb2NrZXIgPSBKU0M6OmxvY2tEdXJpbmdN
YXJraW5nKHZtLmhlYXAsIG11dGFibGVHbG9iYWxPYmplY3QuZ2NMb2NrKCkpOwotICAgIG11dGFi
bGVHbG9iYWxPYmplY3QuY29uc3RydWN0b3JzKGxvY2tlcikuYWRkKENvbnN0cnVjdG9yQ2xhc3M6
OmluZm8oKSwgdGVtcCkuaXRlcmF0b3ItPnZhbHVlLnNldCh2bSwgJmdsb2JhbE9iamVjdCwgY29u
c3RydWN0b3IpOworICAgIGlmIChhdXRvIGxvY2tlciA9IEpTQzo6bG9ja0R1cmluZ01hcmtpbmco
dm0uaGVhcCwgbXV0YWJsZUdsb2JhbE9iamVjdC5nY0xvY2soKSkpCisgICAgICAgIG11dGFibGVH
bG9iYWxPYmplY3QuY29uc3RydWN0b3JzKCpsb2NrZXIpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjpp
bmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0
cnVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIG11dGFibGVHbG9iYWxPYmplY3QuY29uc3RydWN0
b3JzKE5vTG9ja2luZ05lY2Vzc2FyeSkuYWRkKENvbnN0cnVjdG9yQ2xhc3M6OmluZm8oKSwgdGVt
cCkuaXRlcmF0b3ItPnZhbHVlLnNldCh2bSwgJmdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOwog
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAKaW5kZXggYTgzNTkwMzM4MWE1ZmUwZDFlNjlk
MDU4NzQ5YzZiMTBhYTVkNjhiNi4uZjU5MWMxYzcxYjU1OTMxYTU5YjFhOWIzMGE2YTJiMjAxOTBi
MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVk
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRP
YmplY3QuY3BwCkBAIC0zNyw3ICszNywxMCBAQCBET01HdWFyZGVkT2JqZWN0OjpET01HdWFyZGVk
T2JqZWN0KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQ2VsbCYgZ3Vhcgogewog
ICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoZ2xvYmFsT2JqZWN0LnZtKCkuaGVh
cCwgZ2xvYmFsT2JqZWN0LmdjTG9jaygpKTsKICAgICBnbG9iYWxPYmplY3Qudm0oKS5oZWFwLndy
aXRlQmFycmllcigmZ2xvYmFsT2JqZWN0LCAmZ3VhcmRlZCk7Ci0gICAgZ2xvYmFsT2JqZWN0Lmd1
YXJkZWRPYmplY3RzKGxvY2tlcikuYWRkKHRoaXMpOworICAgIGlmIChsb2NrZXIpCisgICAgICAg
IGdsb2JhbE9iamVjdC5ndWFyZGVkT2JqZWN0cygqbG9ja2VyKS5hZGQodGhpcyk7CisgICAgZWxz
ZQorICAgICAgICBnbG9iYWxPYmplY3QuZ3VhcmRlZE9iamVjdHMoTm9Mb2NraW5nTmVjZXNzYXJ5
KS5hZGQodGhpcyk7CiB9CiAKIERPTUd1YXJkZWRPYmplY3Q6On5ET01HdWFyZGVkT2JqZWN0KCkK
QEAgLTUwLDcgKzUzLDEwIEBAIHZvaWQgRE9NR3VhcmRlZE9iamVjdDo6Y2xlYXIoKQogICAgIEFT
U0VSVCghbV9ndWFyZGVkIHx8IG1fZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAobV9ndWFyZGVkICYm
IG1fZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtp
bmcobV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCwgbV9nbG9iYWxPYmplY3QtPmdjTG9jaygpKTsK
LSAgICAgICAgbV9nbG9iYWxPYmplY3QtPmd1YXJkZWRPYmplY3RzKGxvY2tlcikucmVtb3ZlKHRo
aXMpOworICAgICAgICBpZiAobG9ja2VyKQorICAgICAgICAgICAgbV9nbG9iYWxPYmplY3QtPmd1
YXJkZWRPYmplY3RzKCpsb2NrZXIpLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9nbG9iYWxPYmplY3QtPmd1YXJkZWRPYmplY3RzKE5vTG9ja2luZ05lY2Vzc2FyeSku
cmVtb3ZlKHRoaXMpOwogICAgIH0KICAgICBtX2d1YXJkZWQuY2xlYXIoKTsKICAgICBtX2dsb2Jh
bE9iamVjdC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
cmFwcGVyQ2FjaGUuY3BwCmluZGV4IDJkNzAzMDZiZDg3NzI2ZWQ4NzI4M2FiMzEwZGEzNjJlMzFl
ZGM3MzkuLjZmZjdmMTVhZGY5MDlmNTVkZGM2N2ExZTBiZjM1ODY5MzkxODcxZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgU3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgQ2xhc3NJbmYKIFN0cnVjdHVyZSogY2FjaGVET01T
dHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogewogICAgIGF1dG8gbG9ja2VyID0g
bG9ja0R1cmluZ01hcmtpbmcoZ2xvYmFsT2JqZWN0LnZtKCkuaGVhcCwgZ2xvYmFsT2JqZWN0Lmdj
TG9jaygpKTsKLSAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVj
dC5zdHJ1Y3R1cmVzKGxvY2tlcik7CisgICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMg
PSBsb2NrZXIgPyBnbG9iYWxPYmplY3Quc3RydWN0dXJlcygqbG9ja2VyKSA6IGdsb2JhbE9iamVj
dC5zdHJ1Y3R1cmVzKE5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVz
LmNvbnRhaW5zKGNsYXNzSW5mbykpOwogICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0lu
Zm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC52bSgpLCAmZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429882</attachid>
            <date>2021-05-27 08:55:26 -0700</date>
            <delta_ts>2021-05-27 09:24:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226281-20210527085525.patch</filename>
            <type>text/plain</type>
            <size>19563</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGVjZjJiYTU1NDNjYmNjMzQ0OTdiMTJkZWU1YTk5YTJiY2U2YjMyLi5iN2MzMzU4OGY1MDljMzdm
ZmQzNzc5ZDQ0MGU5ZGVhOThmMmFkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBKU0M6
OmxvY2tEdXJpbmdNYXJraW5nKCkgYW5kIGl0cyBub3cgZW1wdHkgaGVhZGVyIGdpdmVuIHRoYXQg
aXQgZG9lcyBjb25kaXRpb25hbAorICAgICAgICBsb2NraW5nIGFuZCBpdCBpcyBub3QgY29tcGF0
aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAg
ICogaGVhcC9Mb2NrRHVyaW5nTWFya2luZy5oOiBSZW1vdmVkLgorCiAyMDIxLTA1LTI3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVu
aWZpZWQgYnVpbGQgZml4ZXMsIGxhdGUgTWF5IDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1
MTc4NTNmMWY2NDRmNDIxZDIzZWIwZDE5YjNkNTIyM2U0OTJmMjYuLjMzZjkxN2M1NjY5ZTU0NDIx
M2IyYzYwYzJiNmIyYWY2NzUzNzI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
dXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRMb2Nr
IGluIEpTRE9NR2xvYmFsT2JqZWN0IGFuZCB1c2UgTG9jayBpbnN0ZWFkIG9mIGJlbmVmaXQgZnJv
bSBDbGFuZyB0aHJlYWQKKyAgICAgICAgc2FmZXR5IGFuYWx5c2lzLiBUaGlzIGlzIGEgc3RlcCB0
b3dhcmRzIHBoYXNpbmcgb3V0IFVuY2hlY2tlZExvY2sgYW5kIGltcHJvdmluZyB0aGUgdGhyZWFk
CisgICAgICAgIHNhZmV0eSBvZiBvdXIgY29kZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVj
dDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpET01HdWFyZGVkT2JqZWN0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpET01HdWFy
ZGVkT2JqZWN0OjpyZW1vdmVGcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUd1YXJkZWRPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTVN0cnVjdHVyZSk6CisKIDIw
MjEtMDUtMjcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNDQ0MzQpIERpc3BhdGNoIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQgb24g
dGhlIG1haW4gZnJhbWUgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDVkZjY5M2VmZDdkNzAxYTQwNGIyNTc5YjY1Yzg5YWY4NDg0MGQyNTIuLjYyY2FmNjEyMTcwODdi
NjUzNGExYTdiZWYyZDdiMzI5YWQzMGYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTY3NCw3ICs2NzQsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuaAogICAgIGhlYXAvTG9j
YWxBbGxvY2F0b3IuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKLSAgICBoZWFw
L0xvY2tEdXJpbmdNYXJraW5nLmgKICAgICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oCiAgICAg
aGVhcC9NYXJrU3RhY2suaAogICAgIGhlYXAvTWFya2VkQmxvY2suaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5NDI3NjExMzRkYTFmNjA5NzU3YmI1Yjg3NWFlMjZmYTkxMWFiNTA0
Li4wNGIxOTM0NTgwMGM5MmE5N2E5MTgxMjliM2E5NWJiNTM1NjIyYzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwLDcgKzE3MCw2IEBACiAJCTBGMjAxNzgyMURDQURENDIw
MEVBNTk1MCAvKiBERkdGbG93TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIwMTc4MTFEQ0FERDQwMDBFQTU5NTAgLyogREZHRmxvd01hcC5oICov
OyB9OwogCQkwRjIwMTc4NTFEQ0FFMTQ5MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc4
NDFEQ0FFMTQ3MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggKi87IH07CiAJCTBG
MjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjAxNzg4MURDQjk0
MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCAqLzsgfTsKLQkJMEYyMDhB
RDcxREYwOTI1RDAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwOEFENjFERjA5MjVBMDA3RDMyNjkg
LyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIzNUJCRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzEsNyArMjM3MCw2IEBA
CiAJCTBGMjAxNzg0MURDQUUxNDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7
IHBhdGggPSBkZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjAxNzg3MURDQjk0MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1
ZVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUFi
c3RyYWN0VmFsdWVQYWlyLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIwMTc4ODFEQ0I5NDIyMDBFQTU5
NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oOyBwYXRoID0gZGZnL0RGR05vZGVB
YnN0cmFjdFZhbHVlUGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjIwOEFE
NjFERjA5MjVBMDA3RDMyNjkgLyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9ja0R1cmluZ01hcmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMEMyNTgxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2
NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NjUsNyArNjQ2Myw2IEBACiAJCQkJMEY3
NUEwNTkyMDBEMjVGMDAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkwRjc1
QTA1NzIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCAqLywKIAkJCQkwRjc1QTA1
QTIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggKi8sCi0JCQkJMEYy
MDhBRDYxREYwOTI1QTAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggKi8sCiAJCQkJMTRC
NzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgKi8sCiAJCQkJ
MTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovLAogCQkJ
CTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8sCkBAIC0xMDMw
NCw3ICsxMDMwMSw2IEBACiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9j
YWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzVBMDYwMjAwRDI2MEIwMDM4RTJD
RiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMjA4QUQ3
MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5nTWFya2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDFlZmViYjAzNWZlYWJiZTQwZDgzNTVkMTAzNmYy
NzA4OWQ2Y2ZiZTYuLjExMzdlOWMzYThiYzcyZWMxYmVmZTE0NWVmNmYxNDgyODYyMzVjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ikluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiTG9j
a0R1cmluZ01hcmtpbmcuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQYXJzZXJN
b2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9ja0R1cmluZ01hcmtpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2tEdXJpbmdNYXJraW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj
MjQ2OGY2ZjQyMjhkYjQ5MTI3YTZjZmI2MDE2N2E5ZGZhMmYyNTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9ja0R1cmluZ01hcmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi0vLyBVc2UgdGhpcyBsb2NrIHNjb3BlIGxpa2Ugc286Ci0vLyBhdXRvIGxv
Y2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKGhlYXAsIGxvY2spOwotdGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+Ci1hdXRvIGxvY2tEdXJpbmdNYXJraW5nKEhlYXAmIGhlYXAsIExvY2tUeXBlJiBw
YXNzZWRMb2NrKQotewotICAgIHJldHVybiBMb2NrZXIgeyBoZWFwLm11dGF0b3JTaG91bGRCZUZl
bmNlZCgpID8gJnBhc3NlZExvY2sgOiBudWxscHRyIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKaW5kZXggZWYyZWFjZTNkZWVhODg3OWU0Nzk4NDRjYzEwMTg4YzQ2YTVmMDdiNC4uMWZlNDVl
ODMxYWU0NTQ5MmM0Y2I4MTRlMTJlMTE1Mzg2OGNlM2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjU4LDEzICsyNTgsMTMg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNP
YmplY3QtPm1fZ2NMb2NrIH07CiAKLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmUgOiB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmVzKGxvY2tlcikudmFsdWVzKCkpCisgICAgICAgIGZvciAoYXV0byYg
c3RydWN0dXJlIDogdGhpc09iamVjdC0+c3RydWN0dXJlcygpLnZhbHVlcygpKQogICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoc3RydWN0dXJlKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGNvbnN0
cnVjdG9yIDogdGhpc09iamVjdC0+Y29uc3RydWN0b3JzKGxvY2tlcikudmFsdWVzKCkpCisgICAg
ICAgIGZvciAoYXV0byYgY29uc3RydWN0b3IgOiB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS52
YWx1ZXMoKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGNvbnN0cnVjdG9yKTsKIAotICAg
ICAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiB0aGlzT2JqZWN0LT5ndWFyZGVkT2JqZWN0cyhsb2Nr
ZXIpKQorICAgICAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiB0aGlzT2JqZWN0LT5ndWFyZGVkT2Jq
ZWN0cygpKQogICAgICAgICAgICAgZ3VhcmRlZC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAg
ICAgfQogCkBAIC0zMDIsNiArMzAyLDcgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG8KIAogdm9p
ZCBKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCiB7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fZ2NMb2NrIH07CiAgICAgYXV0byBndWFyZGVkT2JqZWN0c0NvcHkgPSBt
X2d1YXJkZWRPYmplY3RzOwogICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IGd1YXJkZWRPYmplY3Rz
Q29weSkKICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDk1NmQ1MWFkNDgwZDRkZDJjMGE4OTM4
ZGVhZjQ0ZGFhYmFhNzU2ZGYuLjQ0YjZhNWQ4ODMzZDA5ODk3OWQ3Y2FjYzlhOGE5MGRhZDc2MThi
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Mb2NrRHVyaW5nTWFya2luZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtH
Q01hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCwxMiArNTcsMTYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAogcHVibGljOgotICAg
IFVuY2hlY2tlZExvY2smIGdjTG9jaygpIHsgcmV0dXJuIG1fZ2NMb2NrOyB9CisgICAgTG9jayYg
Z2NMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhtX2djTG9jaykgeyByZXR1cm4gbV9nY0xvY2s7IH0K
IAotICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JikgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzOyB9Ci0gICAgSlNET01Db25zdHJ1Y3Rvck1hcCYgY29u
c3RydWN0b3JzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7
IH0KKyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIFdURl9SRVFVSVJFU19MT0NL
KG1fZ2NMb2NrKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7IH0KKyAgICBKU0RPTUNvbnN0cnVjdG9y
TWFwJiBjb25zdHJ1Y3RvcnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2djTG9jaykgeyByZXR1cm4g
bV9jb25zdHJ1Y3RvcnM7IH0KKyAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0
cygpIFdURl9SRVFVSVJFU19MT0NLKG1fZ2NMb2NrKSB7IHJldHVybiBtX2d1YXJkZWRPYmplY3Rz
OyB9CiAKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0cyhjb25zdCBBYnN0
cmFjdExvY2tlciYpIHsgcmV0dXJuIG1fZ3VhcmRlZE9iamVjdHM7IH0KKyAgICAvLyBUaGUgZm9s
bG93aW5nIGRvbid0IHJlcXVpcmUgZ3JhYmJpbmcgdGhlIGdjTG9jayBmaXJzdCBhbmQgYXJlIG9u
bHkgY2FsbGVkIHdoZW4gdGhlIEhlYXAgc2F5cyB0aGUgbXV0YXRvcnMgZG9uJ3QgaGF2ZSB0byBi
ZSBmZW5jZWQuCisgICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMoTm9Mb2NraW5nTmVj
ZXNzYXJ5VGFnKTsKKyAgICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoTm9Mb2Nr
aW5nTmVjZXNzYXJ5VGFnKTsKKyAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0
cyhOb0xvY2tpbmdOZWNlc3NhcnlUYWcpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCkBAIC0xMTUsMTMgKzExOCwxMyBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRl
ckltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlcios
IEpTQzo6SlNTdHJpbmcqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJik7
CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQ
cm9wZXJ0aWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OkpTTW9kdWxlUmVjb3JkKiwgSlNDOjpKU1ZhbHVlKTsKIAotICAgIEpT
RE9NU3RydWN0dXJlTWFwIG1fc3RydWN0dXJlczsKLSAgICBKU0RPTUNvbnN0cnVjdG9yTWFwIG1f
Y29uc3RydWN0b3JzOwotICAgIERPTUd1YXJkZWRPYmplY3RTZXQgbV9ndWFyZGVkT2JqZWN0czsK
KyAgICBKU0RPTVN0cnVjdHVyZU1hcCBtX3N0cnVjdHVyZXMgV1RGX0dVQVJERURfQllfTE9DSyht
X2djTG9jayk7CisgICAgSlNET01Db25zdHJ1Y3Rvck1hcCBtX2NvbnN0cnVjdG9ycyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fZ2NMb2NrKTsKKyAgICBET01HdWFyZGVkT2JqZWN0U2V0IG1fZ3VhcmRl
ZE9iamVjdHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2djTG9jayk7CiAKICAgICBSZWY8RE9NV3Jh
cHBlcldvcmxkPiBtX3dvcmxkOwogICAgIHVpbnQ4X3QgbV93b3JsZElzTm9ybWFsOwotICAgIFVu
Y2hlY2tlZExvY2sgbV9nY0xvY2s7CisgICAgTG9jayBtX2djTG9jazsKICAgICBKU0M6OldyaXRl
QmFycmllcjxKU0M6OkpTUHJveHk+IG1fcHJveHk7CiAKIHByaXZhdGU6CkBAIC0xNDQsMTEgKzE0
NywzMyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0RE9NQ29uc3RydWN0b3IoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbAogICAgIEFTU0VSVCghY29uc3RfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCY+KGdsb2JhbE9iamVjdCkuY29uc3RydWN0b3JzKE5vTG9ja2luZ05l
Y2Vzc2FyeSkuY29udGFpbnMoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKSk7CiAgICAgSlNDOjpX
cml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKICAgICBKU0RPTUdsb2JhbE9iamVjdCYg
bXV0YWJsZUdsb2JhbE9iamVjdCA9IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QmPihnbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gbG9ja2VyID0gSlNDOjpsb2NrRHVyaW5nTWFya2luZyh2bS5o
ZWFwLCBtdXRhYmxlR2xvYmFsT2JqZWN0LmdjTG9jaygpKTsKLSAgICBtdXRhYmxlR2xvYmFsT2Jq
ZWN0LmNvbnN0cnVjdG9ycyhsb2NrZXIpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRl
bXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsK
KyAgICBpZiAodm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkgeworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbXV0YWJsZUdsb2JhbE9iamVjdC5nY0xvY2soKSB9OworICAgICAgICBtdXRh
YmxlR2xvYmFsT2JqZWN0LmNvbnN0cnVjdG9ycygpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZv
KCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVj
dG9yKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKyAgICBtdXRhYmxlR2xv
YmFsT2JqZWN0LmNvbnN0cnVjdG9ycyhOb0xvY2tpbmdOZWNlc3NhcnkpLmFkZChDb25zdHJ1Y3Rv
ckNsYXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmpl
Y3QsIGNvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKK2lubGluZSBK
U0RPTVN0cnVjdHVyZU1hcCYgSlNET01HbG9iYWxPYmplY3Q6OnN0cnVjdHVyZXMoTm9Mb2NraW5n
TmVjZXNzYXJ5VGFnKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghdm0oKS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpLCAi
VGhpcyBmdW5jdGlvbiBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIHRoZSBoZWFwIGRvZXNuJ3Qg
cmVxdWlyZSBtdXRhdG9ycyB0byBiZSBmZW5jZWQiKTsKKyAgICByZXR1cm4gbV9zdHJ1Y3R1cmVz
OworfQorCitpbmxpbmUgSlNET01Db25zdHJ1Y3Rvck1hcCYgSlNET01HbG9iYWxPYmplY3Q6OmNv
bnN0cnVjdG9ycyhOb0xvY2tpbmdOZWNlc3NhcnlUYWcpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2bSgpLmhlYXAubXV0YXRv
clNob3VsZEJlRmVuY2VkKCksICJUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgc2FmZSB0byBjYWxsIHdo
ZW4gdGhlIGhlYXAgZG9lc24ndCByZXF1aXJlIG11dGF0b3JzIHRvIGJlIGZlbmNlZCIpOworICAg
IHJldHVybiBtX2NvbnN0cnVjdG9yczsKK30KKworaW5saW5lIERPTUd1YXJkZWRPYmplY3RTZXQm
IEpTRE9NR2xvYmFsT2JqZWN0OjpndWFyZGVkT2JqZWN0cyhOb0xvY2tpbmdOZWNlc3NhcnlUYWcp
IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCF2bSgpLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCksICJUaGlzIGZ1bmN0aW9u
IGlzIG9ubHkgc2FmZSB0byBjYWxsIHdoZW4gdGhlIGhlYXAgZG9lc24ndCByZXF1aXJlIG11dGF0
b3JzIHRvIGJlIGZlbmNlZCIpOworICAgIHJldHVybiBtX2d1YXJkZWRPYmplY3RzOworfQorCiBX
RUJDT1JFX0VYUE9SVCBKU0RPTUdsb2JhbE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwogCiBKU0RPTUdsb2JhbE9iamVjdCog
dG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRE9NV3JhcHBlcldv
cmxkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJk
ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2Jq
ZWN0LmNwcAppbmRleCBhODM1OTAzMzgxYTVmZTBkMWU2OWQwNTg3NDljNmIxMGFhNWQ2OGI2Li42
ZWNjMWZmYjFlZGQyOGNiNDE0MGM4ZDA1YmE0YzMzZDhkYmI0NzY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAKQEAgLTM1LDkgKzM1
LDEzIEBAIERPTUd1YXJkZWRPYmplY3Q6OkRPTUd1YXJkZWRPYmplY3QoSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDZWxsJiBndWFyCiAgICAgLCBtX2d1YXJkZWQoJmd1YXJkZWQp
CiAgICAgLCBtX2dsb2JhbE9iamVjdCgmZ2xvYmFsT2JqZWN0KQogewotICAgIGF1dG8gbG9ja2Vy
ID0gbG9ja0R1cmluZ01hcmtpbmcoZ2xvYmFsT2JqZWN0LnZtKCkuaGVhcCwgZ2xvYmFsT2JqZWN0
LmdjTG9jaygpKTsKICAgICBnbG9iYWxPYmplY3Qudm0oKS5oZWFwLndyaXRlQmFycmllcigmZ2xv
YmFsT2JqZWN0LCAmZ3VhcmRlZCk7Ci0gICAgZ2xvYmFsT2JqZWN0Lmd1YXJkZWRPYmplY3RzKGxv
Y2tlcikuYWRkKHRoaXMpOworICAgIGlmIChnbG9iYWxPYmplY3Qudm0oKS5oZWFwLm11dGF0b3JT
aG91bGRCZUZlbmNlZCgpKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxPYmplY3Qu
Z2NMb2NrKCkgfTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0Lmd1YXJkZWRPYmplY3RzKCkuYWRkKHRo
aXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdsb2JhbE9iamVjdC5ndWFyZGVkT2Jq
ZWN0cyhOb0xvY2tpbmdOZWNlc3NhcnkpLmFkZCh0aGlzKTsKIH0KIAogRE9NR3VhcmRlZE9iamVj
dDo6fkRPTUd1YXJkZWRPYmplY3QoKQpAQCAtNDgsMTQgKzUyLDIzIEBAIERPTUd1YXJkZWRPYmpl
Y3Q6On5ET01HdWFyZGVkT2JqZWN0KCkKIHZvaWQgRE9NR3VhcmRlZE9iamVjdDo6Y2xlYXIoKQog
ewogICAgIEFTU0VSVCghbV9ndWFyZGVkIHx8IG1fZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAobV9n
dWFyZGVkICYmIG1fZ2xvYmFsT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1
cmluZ01hcmtpbmcobV9nbG9iYWxPYmplY3QtPnZtKCkuaGVhcCwgbV9nbG9iYWxPYmplY3QtPmdj
TG9jaygpKTsKLSAgICAgICAgbV9nbG9iYWxPYmplY3QtPmd1YXJkZWRPYmplY3RzKGxvY2tlciku
cmVtb3ZlKHRoaXMpOwotICAgIH0KKyAgICByZW1vdmVGcm9tR2xvYmFsT2JqZWN0KCk7CiAgICAg
bV9ndWFyZGVkLmNsZWFyKCk7CiAgICAgbV9nbG9iYWxPYmplY3QuY2xlYXIoKTsKIH0KIAordm9p
ZCBET01HdWFyZGVkT2JqZWN0OjpyZW1vdmVGcm9tR2xvYmFsT2JqZWN0KCkKK3sKKyAgICBpZiAo
IW1fZ3VhcmRlZCB8fCAhbV9nbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKSB7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2dsb2JhbE9iamVjdC0+Z2NMb2NrKCkgfTsKKyAgICAg
ICAgbV9nbG9iYWxPYmplY3QtPmd1YXJkZWRPYmplY3RzKCkucmVtb3ZlKHRoaXMpOworICAgIH0g
ZWxzZQorICAgICAgICBtX2dsb2JhbE9iamVjdC0+Z3VhcmRlZE9iamVjdHMoTm9Mb2NraW5nTmVj
ZXNzYXJ5KS5yZW1vdmUodGhpcyk7Cit9CisKIHZvaWQgRE9NR3VhcmRlZE9iamVjdDo6Y29udGV4
dERlc3Ryb3llZCgpCiB7CiAgICAgQWN0aXZlRE9NQ2FsbGJhY2s6OmNvbnRleHREZXN0cm95ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgK
aW5kZXggN2I1MjkwYWQzZmIzNTlkNGFhNTIzNTZhZGRlMGI0Yjg0ZTVhNWZiNi4uZTU3NmZmMWE2
NTcxN2QwYjI1Yzk1NDE0YWU4ODFiNGYzZTRlYTFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgKQEAgLTU1LDYgKzU1LDkgQEAgcHJvdGVj
dGVkOgogCiAgICAgSlNDOjpXZWFrPEpTQzo6SlNDZWxsPiBtX2d1YXJkZWQ7CiAgICAgSlNDOjpX
ZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHJlbW92ZUZyb21HbG9iYWxPYmplY3QoKTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBET01HdWFyZGVkIDogcHVibGljIERPTUd1YXJkZWRPYmplY3QgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuY3BwCmluZGV4IDJkNzAz
MDZiZDg3NzI2ZWQ4NzI4M2FiMzEwZGEzNjJlMzFlZGM3MzkuLjI5MjUzZmUzMjQ1ZGU3MWQ0ZmEy
NTNlMGE0Mzk4YmQ1MTZmODZiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlckNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXJDYWNoZS5jcHAKQEAgLTM1LDEwICszNSwxNSBAQCBTdHJ1Y3R1cmUqIGdl
dENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25z
dCBDbGFzc0luZgogCiBTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKGdsb2Jh
bE9iamVjdC52bSgpLmhlYXAsIGdsb2JhbE9iamVjdC5nY0xvY2soKSk7Ci0gICAgSlNET01TdHJ1
Y3R1cmVNYXAmIHN0cnVjdHVyZXMgPSBnbG9iYWxPYmplY3Quc3RydWN0dXJlcyhsb2NrZXIpOwot
ICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsKLSAgICByZXR1cm4g
c3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxP
YmplY3Qudm0oKSwgJmdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSkuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpOworICAgIGF1dG8gYWRkVG9TdHJ1Y3R1cmVzID0gW10oSlNET01TdHJ1Y3R1cmVNYXAmIHN0
cnVjdHVyZXMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykgeworICAgICAgICBBU1NFUlQoIXN0
cnVjdHVyZXMuY29udGFpbnMoY2xhc3NJbmZvKSk7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmVz
LnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC52bSgp
LCAmZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAg
fTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LnZtKCkuaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQo
KSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsT2JqZWN0LmdjTG9jaygpIH07Cisg
ICAgICAgIHJldHVybiBhZGRUb1N0cnVjdHVyZXMoZ2xvYmFsT2JqZWN0LnN0cnVjdHVyZXMoKSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGNsYXNzSW5mbyk7CisgICAgfQorICAgIHJldHVybiBh
ZGRUb1N0cnVjdHVyZXMoZ2xvYmFsT2JqZWN0LnN0cnVjdHVyZXMoTm9Mb2NraW5nTmVjZXNzYXJ5
KSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGNsYXNzSW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429885</attachid>
            <date>2021-05-27 09:24:59 -0700</date>
            <delta_ts>2021-05-27 09:53:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226281-20210527092458.patch</filename>
            <type>text/plain</type>
            <size>18725</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGVjZjJiYTU1NDNjYmNjMzQ0OTdiMTJkZWU1YTk5YTJiY2U2YjMyLi5iN2MzMzU4OGY1MDljMzdm
ZmQzNzc5ZDQ0MGU5ZGVhOThmMmFkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBKU0M6
OmxvY2tEdXJpbmdNYXJraW5nKCkgYW5kIGl0cyBub3cgZW1wdHkgaGVhZGVyIGdpdmVuIHRoYXQg
aXQgZG9lcyBjb25kaXRpb25hbAorICAgICAgICBsb2NraW5nIGFuZCBpdCBpcyBub3QgY29tcGF0
aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAg
ICogaGVhcC9Mb2NrRHVyaW5nTWFya2luZy5oOiBSZW1vdmVkLgorCiAyMDIxLTA1LTI3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVu
aWZpZWQgYnVpbGQgZml4ZXMsIGxhdGUgTWF5IDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1
MTc4NTNmMWY2NDRmNDIxZDIzZWIwZDE5YjNkNTIyM2U0OTJmMjYuLjMzZjkxN2M1NjY5ZTU0NDIx
M2IyYzYwYzJiNmIyYWY2NzUzNzI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
dXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRMb2Nr
IGluIEpTRE9NR2xvYmFsT2JqZWN0IGFuZCB1c2UgTG9jayBpbnN0ZWFkIG9mIGJlbmVmaXQgZnJv
bSBDbGFuZyB0aHJlYWQKKyAgICAgICAgc2FmZXR5IGFuYWx5c2lzLiBUaGlzIGlzIGEgc3RlcCB0
b3dhcmRzIHBoYXNpbmcgb3V0IFVuY2hlY2tlZExvY2sgYW5kIGltcHJvdmluZyB0aGUgdGhyZWFk
CisgICAgICAgIHNhZmV0eSBvZiBvdXIgY29kZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVj
dDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpET01HdWFyZGVkT2JqZWN0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpET01HdWFy
ZGVkT2JqZWN0OjpyZW1vdmVGcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUd1YXJkZWRPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTVN0cnVjdHVyZSk6CisKIDIw
MjEtMDUtMjcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNDQ0MzQpIERpc3BhdGNoIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQgb24g
dGhlIG1haW4gZnJhbWUgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDVkZjY5M2VmZDdkNzAxYTQwNGIyNTc5YjY1Yzg5YWY4NDg0MGQyNTIuLjYyY2FmNjEyMTcwODdi
NjUzNGExYTdiZWYyZDdiMzI5YWQzMGYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTY3NCw3ICs2NzQsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuaAogICAgIGhlYXAvTG9j
YWxBbGxvY2F0b3IuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKLSAgICBoZWFw
L0xvY2tEdXJpbmdNYXJraW5nLmgKICAgICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oCiAgICAg
aGVhcC9NYXJrU3RhY2suaAogICAgIGhlYXAvTWFya2VkQmxvY2suaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5NDI3NjExMzRkYTFmNjA5NzU3YmI1Yjg3NWFlMjZmYTkxMWFiNTA0
Li4wNGIxOTM0NTgwMGM5MmE5N2E5MTgxMjliM2E5NWJiNTM1NjIyYzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwLDcgKzE3MCw2IEBACiAJCTBGMjAxNzgyMURDQURENDIw
MEVBNTk1MCAvKiBERkdGbG93TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIwMTc4MTFEQ0FERDQwMDBFQTU5NTAgLyogREZHRmxvd01hcC5oICov
OyB9OwogCQkwRjIwMTc4NTFEQ0FFMTQ5MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc4
NDFEQ0FFMTQ3MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggKi87IH07CiAJCTBG
MjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjAxNzg4MURDQjk0
MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCAqLzsgfTsKLQkJMEYyMDhB
RDcxREYwOTI1RDAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwOEFENjFERjA5MjVBMDA3RDMyNjkg
LyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIzNUJCRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzEsNyArMjM3MCw2IEBA
CiAJCTBGMjAxNzg0MURDQUUxNDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7
IHBhdGggPSBkZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjAxNzg3MURDQjk0MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1
ZVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUFi
c3RyYWN0VmFsdWVQYWlyLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIwMTc4ODFEQ0I5NDIyMDBFQTU5
NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oOyBwYXRoID0gZGZnL0RGR05vZGVB
YnN0cmFjdFZhbHVlUGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjIwOEFE
NjFERjA5MjVBMDA3RDMyNjkgLyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9ja0R1cmluZ01hcmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMEMyNTgxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2
NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NjUsNyArNjQ2Myw2IEBACiAJCQkJMEY3
NUEwNTkyMDBEMjVGMDAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkwRjc1
QTA1NzIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCAqLywKIAkJCQkwRjc1QTA1
QTIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggKi8sCi0JCQkJMEYy
MDhBRDYxREYwOTI1QTAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggKi8sCiAJCQkJMTRC
NzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgKi8sCiAJCQkJ
MTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovLAogCQkJ
CTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8sCkBAIC0xMDMw
NCw3ICsxMDMwMSw2IEBACiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9j
YWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzVBMDYwMjAwRDI2MEIwMDM4RTJD
RiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMjA4QUQ3
MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5nTWFya2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDFlZmViYjAzNWZlYWJiZTQwZDgzNTVkMTAzNmYy
NzA4OWQ2Y2ZiZTYuLjExMzdlOWMzYThiYzcyZWMxYmVmZTE0NWVmNmYxNDgyODYyMzVjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ikluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiTG9j
a0R1cmluZ01hcmtpbmcuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQYXJzZXJN
b2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9ja0R1cmluZ01hcmtpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2tEdXJpbmdNYXJraW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj
MjQ2OGY2ZjQyMjhkYjQ5MTI3YTZjZmI2MDE2N2E5ZGZhMmYyNTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9ja0R1cmluZ01hcmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi0vLyBVc2UgdGhpcyBsb2NrIHNjb3BlIGxpa2Ugc286Ci0vLyBhdXRvIGxv
Y2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKGhlYXAsIGxvY2spOwotdGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+Ci1hdXRvIGxvY2tEdXJpbmdNYXJraW5nKEhlYXAmIGhlYXAsIExvY2tUeXBlJiBw
YXNzZWRMb2NrKQotewotICAgIHJldHVybiBMb2NrZXIgeyBoZWFwLm11dGF0b3JTaG91bGRCZUZl
bmNlZCgpID8gJnBhc3NlZExvY2sgOiBudWxscHRyIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKaW5kZXggZWYyZWFjZTNkZWVhODg3OWU0Nzk4NDRjYzEwMTg4YzQ2YTVmMDdiNC4uMWZlNDVl
ODMxYWU0NTQ5MmM0Y2I4MTRlMTJlMTE1Mzg2OGNlM2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjU4LDEzICsyNTgsMTMg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNP
YmplY3QtPm1fZ2NMb2NrIH07CiAKLSAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmUgOiB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmVzKGxvY2tlcikudmFsdWVzKCkpCisgICAgICAgIGZvciAoYXV0byYg
c3RydWN0dXJlIDogdGhpc09iamVjdC0+c3RydWN0dXJlcygpLnZhbHVlcygpKQogICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoc3RydWN0dXJlKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGNvbnN0
cnVjdG9yIDogdGhpc09iamVjdC0+Y29uc3RydWN0b3JzKGxvY2tlcikudmFsdWVzKCkpCisgICAg
ICAgIGZvciAoYXV0byYgY29uc3RydWN0b3IgOiB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMoKS52
YWx1ZXMoKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGNvbnN0cnVjdG9yKTsKIAotICAg
ICAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiB0aGlzT2JqZWN0LT5ndWFyZGVkT2JqZWN0cyhsb2Nr
ZXIpKQorICAgICAgICBmb3IgKGF1dG8mIGd1YXJkZWQgOiB0aGlzT2JqZWN0LT5ndWFyZGVkT2Jq
ZWN0cygpKQogICAgICAgICAgICAgZ3VhcmRlZC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAg
ICAgfQogCkBAIC0zMDIsNiArMzAyLDcgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG8KIAogdm9p
ZCBKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCiB7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fZ2NMb2NrIH07CiAgICAgYXV0byBndWFyZGVkT2JqZWN0c0NvcHkgPSBt
X2d1YXJkZWRPYmplY3RzOwogICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IGd1YXJkZWRPYmplY3Rz
Q29weSkKICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDk1NmQ1MWFkNDgwZDRkZDJjMGE4OTM4
ZGVhZjQ0ZGFhYmFhNzU2ZGYuLmY1MWNmY2FlYzUxYzNiOWUyOGIzNGE2ZGQ5N2I5ZmY5ZDRiYTNl
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Mb2NrRHVyaW5nTWFya2luZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtH
Q01hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCwxMiArNTcsMTkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAogcHVibGljOgotICAg
IFVuY2hlY2tlZExvY2smIGdjTG9jaygpIHsgcmV0dXJuIG1fZ2NMb2NrOyB9CisgICAgTG9jayYg
Z2NMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhtX2djTG9jaykgeyByZXR1cm4gbV9nY0xvY2s7IH0K
IAotICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JikgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzOyB9Ci0gICAgSlNET01Db25zdHJ1Y3Rvck1hcCYgY29u
c3RydWN0b3JzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7
IH0KKyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIFdURl9SRVFVSVJFU19MT0NL
KG1fZ2NMb2NrKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7IH0KKyAgICBKU0RPTUNvbnN0cnVjdG9y
TWFwJiBjb25zdHJ1Y3RvcnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2djTG9jaykgeyByZXR1cm4g
bV9jb25zdHJ1Y3RvcnM7IH0KKyAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0
cygpIFdURl9SRVFVSVJFU19MT0NLKG1fZ2NMb2NrKSB7IHJldHVybiBtX2d1YXJkZWRPYmplY3Rz
OyB9CiAKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0cyhjb25zdCBBYnN0
cmFjdExvY2tlciYpIHsgcmV0dXJuIG1fZ3VhcmRlZE9iamVjdHM7IH0KKyAgICAvLyBUaGUgZm9s
bG93aW5nIGRvbid0IHJlcXVpcmUgZ3JhYmJpbmcgdGhlIGdjTG9jayBmaXJzdCBhbmQgYXJlIG9u
bHkgY2FsbGVkIHdoZW46CisgICAgLy8gLSBUaGUgY2FsbGVyIGRvZXNuJ3QgbXV0YXRlIHRoZSBk
YXRhIHN0cnVjdHVyZS4KKyAgICAvLyBvcgorICAgIC8vIC0gVGhlIEhlYXAgc2F5cyB0aGF0IG11
dGF0b3JzIGRvbid0IGhhdmUgdG8gYmUgZmVuY2VkLgorICAgIEpTRE9NU3RydWN0dXJlTWFwJiBz
dHJ1Y3R1cmVzKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVU
WV9BTkFMWVNJUyB7IHJldHVybiBtX3N0cnVjdHVyZXM7IH0KKyAgICBKU0RPTUNvbnN0cnVjdG9y
TWFwJiBjb25zdHJ1Y3RvcnMoTm9Mb2NraW5nTmVjZXNzYXJ5VGFnKSBXVEZfSUdOT1JFU19USFJF
QURfU0FGRVRZX0FOQUxZU0lTIHsgcmV0dXJuIG1fY29uc3RydWN0b3JzOyB9CisgICAgRE9NR3Vh
cmRlZE9iamVjdFNldCYgZ3VhcmRlZE9iamVjdHMoTm9Mb2NraW5nTmVjZXNzYXJ5VGFnKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsgcmV0dXJuIG1fZ3VhcmRlZE9iamVjdHM7
IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKIApAQCAtMTE1LDEzICsxMjEsMTMgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBK
U0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpK
U1ZhbHVlLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdpbiYpOwogICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU01vZHVs
ZVJlY29yZCosIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBKU0RPTVN0cnVjdHVyZU1hcCBtX3N0cnVj
dHVyZXM7Ci0gICAgSlNET01Db25zdHJ1Y3Rvck1hcCBtX2NvbnN0cnVjdG9yczsKLSAgICBET01H
dWFyZGVkT2JqZWN0U2V0IG1fZ3VhcmRlZE9iamVjdHM7CisgICAgSlNET01TdHJ1Y3R1cmVNYXAg
bV9zdHJ1Y3R1cmVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9nY0xvY2spOworICAgIEpTRE9NQ29u
c3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2djTG9jayk7
CisgICAgRE9NR3VhcmRlZE9iamVjdFNldCBtX2d1YXJkZWRPYmplY3RzIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9nY0xvY2spOwogCiAgICAgUmVmPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAg
ICB1aW50OF90IG1fd29ybGRJc05vcm1hbDsKLSAgICBVbmNoZWNrZWRMb2NrIG1fZ2NMb2NrOwor
ICAgIExvY2sgbV9nY0xvY2s7CiAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU1Byb3h5PiBt
X3Byb3h5OwogCiBwcml2YXRlOgpAQCAtMTQ0LDggKzE1MCwxMiBAQCBpbmxpbmUgSlNDOjpKU09i
amVjdCogZ2V0RE9NQ29uc3RydWN0b3IoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbAogICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2Jh
bE9iamVjdCkuY29uc3RydWN0b3JzKE5vTG9ja2luZ05lY2Vzc2FyeSkuY29udGFpbnMoQ29uc3Ry
dWN0b3JDbGFzczo6aW5mbygpKSk7CiAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVj
dD4gdGVtcDsKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgbXV0YWJsZUdsb2JhbE9iamVjdCA9IGNv
bnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QmPihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gbG9j
a2VyID0gSlNDOjpsb2NrRHVyaW5nTWFya2luZyh2bS5oZWFwLCBtdXRhYmxlR2xvYmFsT2JqZWN0
LmdjTG9jaygpKTsKLSAgICBtdXRhYmxlR2xvYmFsT2JqZWN0LmNvbnN0cnVjdG9ycyhsb2NrZXIp
LmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQo
dm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKKyAgICBpZiAodm0uaGVhcC5tdXRhdG9y
U2hvdWxkQmVGZW5jZWQoKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbXV0YWJsZUdsb2Jh
bE9iamVjdC5nY0xvY2soKSB9OworICAgICAgICBtdXRhYmxlR2xvYmFsT2JqZWN0LmNvbnN0cnVj
dG9ycygpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1
ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOworICAgIH0KKyAgICBtdXRhYmxlR2xvYmFsT2JqZWN0LmNvbnN0cnVjdG9ycyhO
b0xvY2tpbmdOZWNlc3NhcnkpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRlbXApLml0
ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwCmluZGV4IGE4MzU5MDMzODFhNWZlMGQxZTY5ZDA1ODc0
OWM2YjEwYWE1ZDY4YjYuLjZlY2MxZmZiMWVkZDI4Y2I0MTQwYzhkMDViYTRjMzNkOGRiYjQ3NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0
LmNwcApAQCAtMzUsOSArMzUsMTMgQEAgRE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9iamVj
dChKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0NlbGwmIGd1YXIKICAgICAsIG1f
Z3VhcmRlZCgmZ3VhcmRlZCkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KCZnbG9iYWxPYmplY3QpCiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyhnbG9iYWxPYmplY3Qudm0oKS5o
ZWFwLCBnbG9iYWxPYmplY3QuZ2NMb2NrKCkpOwogICAgIGdsb2JhbE9iamVjdC52bSgpLmhlYXAu
d3JpdGVCYXJyaWVyKCZnbG9iYWxPYmplY3QsICZndWFyZGVkKTsKLSAgICBnbG9iYWxPYmplY3Qu
Z3VhcmRlZE9iamVjdHMobG9ja2VyKS5hZGQodGhpcyk7CisgICAgaWYgKGdsb2JhbE9iamVjdC52
bSgpLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGdsb2JhbE9iamVjdC5nY0xvY2soKSB9OworICAgICAgICBnbG9iYWxPYmplY3QuZ3VhcmRl
ZE9iamVjdHMoKS5hZGQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2xvYmFs
T2JqZWN0Lmd1YXJkZWRPYmplY3RzKE5vTG9ja2luZ05lY2Vzc2FyeSkuYWRkKHRoaXMpOwogfQog
CiBET01HdWFyZGVkT2JqZWN0Ojp+RE9NR3VhcmRlZE9iamVjdCgpCkBAIC00OCwxNCArNTIsMjMg
QEAgRE9NR3VhcmRlZE9iamVjdDo6fkRPTUd1YXJkZWRPYmplY3QoKQogdm9pZCBET01HdWFyZGVk
T2JqZWN0OjpjbGVhcigpCiB7CiAgICAgQVNTRVJUKCFtX2d1YXJkZWQgfHwgbV9nbG9iYWxPYmpl
Y3QpOwotICAgIGlmIChtX2d1YXJkZWQgJiYgbV9nbG9iYWxPYmplY3QpIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyhtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwLCBt
X2dsb2JhbE9iamVjdC0+Z2NMb2NrKCkpOwotICAgICAgICBtX2dsb2JhbE9iamVjdC0+Z3VhcmRl
ZE9iamVjdHMobG9ja2VyKS5yZW1vdmUodGhpcyk7Ci0gICAgfQorICAgIHJlbW92ZUZyb21HbG9i
YWxPYmplY3QoKTsKICAgICBtX2d1YXJkZWQuY2xlYXIoKTsKICAgICBtX2dsb2JhbE9iamVjdC5j
bGVhcigpOwogfQogCit2b2lkIERPTUd1YXJkZWRPYmplY3Q6OnJlbW92ZUZyb21HbG9iYWxPYmpl
Y3QoKQoreworICAgIGlmICghbV9ndWFyZGVkIHx8ICFtX2dsb2JhbE9iamVjdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG1fZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAubXV0YXRvclNob3Vs
ZEJlRmVuY2VkKCkpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZ2xvYmFsT2JqZWN0LT5n
Y0xvY2soKSB9OworICAgICAgICBtX2dsb2JhbE9iamVjdC0+Z3VhcmRlZE9iamVjdHMoKS5yZW1v
dmUodGhpcyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fZ2xvYmFsT2JqZWN0LT5ndWFyZGVkT2Jq
ZWN0cyhOb0xvY2tpbmdOZWNlc3NhcnkpLnJlbW92ZSh0aGlzKTsKK30KKwogdm9pZCBET01HdWFy
ZGVkT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBBY3RpdmVET01DYWxsYmFjazo6
Y29udGV4dERlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HdWFyZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUd1YXJkZWRPYmplY3QuaAppbmRleCA3YjUyOTBhZDNmYjM1OWQ0YWE1MjM1NmFkZGUwYjRiODRl
NWE1ZmI2Li5lNTc2ZmYxYTY1NzE3ZDBiMjVjOTU0MTRhZTg4MWI0ZjNlNGVhMWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaApAQCAtNTUs
NiArNTUsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBKU0M6OldlYWs8SlNDOjpKU0NlbGw+IG1fZ3Vh
cmRlZDsKICAgICBKU0M6OldlYWs8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Owor
Citwcml2YXRlOgorICAgIHZvaWQgcmVtb3ZlRnJvbUdsb2JhbE9iamVjdCgpOwogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERPTUd1YXJkZWQgOiBwdWJsaWMgRE9NR3VhcmRlZE9i
amVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNo
ZS5jcHAKaW5kZXggMmQ3MDMwNmJkODc3MjZlZDg3MjgzYWIzMTBkYTM2MmUzMWVkYzczOS4uMjky
NTNmZTMyNDVkZTcxZDRmYTI1M2UwYTQzOThiZDUxNmY4NmI5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmNwcApAQCAtMzUsMTAgKzM1LDE1
IEBAIFN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5mCiAKIFN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1
cmUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogewotICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1
cmluZ01hcmtpbmcoZ2xvYmFsT2JqZWN0LnZtKCkuaGVhcCwgZ2xvYmFsT2JqZWN0LmdjTG9jaygp
KTsKLSAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC5zdHJ1
Y3R1cmVzKGxvY2tlcik7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5m
bykpOwotICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgYXV0byBhZGRUb1N0cnVjdHVyZXMgPSBbXShKU0RP
TVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcywgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSB7Cisg
ICAgICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsKKyAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4o
Z2xvYmFsT2JqZWN0LnZtKCksICZnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKKyAgICB9OworICAgIGlmIChnbG9iYWxPYmplY3Qudm0oKS5oZWFwLm11dGF0
b3JTaG91bGRCZUZlbmNlZCgpKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBnbG9iYWxPYmpl
Y3QuZ2NMb2NrKCkgfTsKKyAgICAgICAgcmV0dXJuIGFkZFRvU3RydWN0dXJlcyhnbG9iYWxPYmpl
Y3Quc3RydWN0dXJlcygpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NJbmZvKTsKKyAg
ICB9CisgICAgcmV0dXJuIGFkZFRvU3RydWN0dXJlcyhnbG9iYWxPYmplY3Quc3RydWN0dXJlcyhO
b0xvY2tpbmdOZWNlc3NhcnkpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NJbmZvKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429890</attachid>
            <date>2021-05-27 09:53:47 -0700</date>
            <delta_ts>2021-05-27 10:16:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226281-20210527095346.patch</filename>
            <type>text/plain</type>
            <size>20789</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGVjZjJiYTU1NDNjYmNjMzQ0OTdiMTJkZWU1YTk5YTJiY2U2YjMyLi5iN2MzMzU4OGY1MDljMzdm
ZmQzNzc5ZDQ0MGU5ZGVhOThmMmFkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBKU0M6
OmxvY2tEdXJpbmdNYXJraW5nKCkgYW5kIGl0cyBub3cgZW1wdHkgaGVhZGVyIGdpdmVuIHRoYXQg
aXQgZG9lcyBjb25kaXRpb25hbAorICAgICAgICBsb2NraW5nIGFuZCBpdCBpcyBub3QgY29tcGF0
aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAg
ICogaGVhcC9Mb2NrRHVyaW5nTWFya2luZy5oOiBSZW1vdmVkLgorCiAyMDIxLTA1LTI3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVu
aWZpZWQgYnVpbGQgZml4ZXMsIGxhdGUgTWF5IDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1
MTc4NTNmMWY2NDRmNDIxZDIzZWIwZDE5YjNkNTIyM2U0OTJmMjYuLjMzZjkxN2M1NjY5ZTU0NDIx
M2IyYzYwYzJiNmIyYWY2NzUzNzI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
dXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRMb2Nr
IGluIEpTRE9NR2xvYmFsT2JqZWN0IGFuZCB1c2UgTG9jayBpbnN0ZWFkIG9mIGJlbmVmaXQgZnJv
bSBDbGFuZyB0aHJlYWQKKyAgICAgICAgc2FmZXR5IGFuYWx5c2lzLiBUaGlzIGlzIGEgc3RlcCB0
b3dhcmRzIHBoYXNpbmcgb3V0IFVuY2hlY2tlZExvY2sgYW5kIGltcHJvdmluZyB0aGUgdGhyZWFk
CisgICAgICAgIHNhZmV0eSBvZiBvdXIgY29kZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVj
dDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpET01HdWFyZGVkT2JqZWN0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpET01HdWFy
ZGVkT2JqZWN0OjpyZW1vdmVGcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUd1YXJkZWRPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTVN0cnVjdHVyZSk6CisKIDIw
MjEtMDUtMjcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNDQ0MzQpIERpc3BhdGNoIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQgb24g
dGhlIG1haW4gZnJhbWUgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDVkZjY5M2VmZDdkNzAxYTQwNGIyNTc5YjY1Yzg5YWY4NDg0MGQyNTIuLjYyY2FmNjEyMTcwODdi
NjUzNGExYTdiZWYyZDdiMzI5YWQzMGYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTY3NCw3ICs2NzQsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuaAogICAgIGhlYXAvTG9j
YWxBbGxvY2F0b3IuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKLSAgICBoZWFw
L0xvY2tEdXJpbmdNYXJraW5nLmgKICAgICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oCiAgICAg
aGVhcC9NYXJrU3RhY2suaAogICAgIGhlYXAvTWFya2VkQmxvY2suaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5NDI3NjExMzRkYTFmNjA5NzU3YmI1Yjg3NWFlMjZmYTkxMWFiNTA0
Li4wNGIxOTM0NTgwMGM5MmE5N2E5MTgxMjliM2E5NWJiNTM1NjIyYzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwLDcgKzE3MCw2IEBACiAJCTBGMjAxNzgyMURDQURENDIw
MEVBNTk1MCAvKiBERkdGbG93TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIwMTc4MTFEQ0FERDQwMDBFQTU5NTAgLyogREZHRmxvd01hcC5oICov
OyB9OwogCQkwRjIwMTc4NTFEQ0FFMTQ5MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc4
NDFEQ0FFMTQ3MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggKi87IH07CiAJCTBG
MjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjAxNzg4MURDQjk0
MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCAqLzsgfTsKLQkJMEYyMDhB
RDcxREYwOTI1RDAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwOEFENjFERjA5MjVBMDA3RDMyNjkg
LyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIzNUJCRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzEsNyArMjM3MCw2IEBA
CiAJCTBGMjAxNzg0MURDQUUxNDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7
IHBhdGggPSBkZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjAxNzg3MURDQjk0MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1
ZVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUFi
c3RyYWN0VmFsdWVQYWlyLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIwMTc4ODFEQ0I5NDIyMDBFQTU5
NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oOyBwYXRoID0gZGZnL0RGR05vZGVB
YnN0cmFjdFZhbHVlUGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjIwOEFE
NjFERjA5MjVBMDA3RDMyNjkgLyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9ja0R1cmluZ01hcmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMEMyNTgxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2
NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NjUsNyArNjQ2Myw2IEBACiAJCQkJMEY3
NUEwNTkyMDBEMjVGMDAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkwRjc1
QTA1NzIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCAqLywKIAkJCQkwRjc1QTA1
QTIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggKi8sCi0JCQkJMEYy
MDhBRDYxREYwOTI1QTAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggKi8sCiAJCQkJMTRC
NzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgKi8sCiAJCQkJ
MTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovLAogCQkJ
CTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8sCkBAIC0xMDMw
NCw3ICsxMDMwMSw2IEBACiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9j
YWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzVBMDYwMjAwRDI2MEIwMDM4RTJD
RiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMjA4QUQ3
MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5nTWFya2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDFlZmViYjAzNWZlYWJiZTQwZDgzNTVkMTAzNmYy
NzA4OWQ2Y2ZiZTYuLjExMzdlOWMzYThiYzcyZWMxYmVmZTE0NWVmNmYxNDgyODYyMzVjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ikluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiTG9j
a0R1cmluZ01hcmtpbmcuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQYXJzZXJN
b2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9ja0R1cmluZ01hcmtpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2tEdXJpbmdNYXJraW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj
MjQ2OGY2ZjQyMjhkYjQ5MTI3YTZjZmI2MDE2N2E5ZGZhMmYyNTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9ja0R1cmluZ01hcmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi0vLyBVc2UgdGhpcyBsb2NrIHNjb3BlIGxpa2Ugc286Ci0vLyBhdXRvIGxv
Y2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKGhlYXAsIGxvY2spOwotdGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+Ci1hdXRvIGxvY2tEdXJpbmdNYXJraW5nKEhlYXAmIGhlYXAsIExvY2tUeXBlJiBw
YXNzZWRMb2NrKQotewotICAgIHJldHVybiBMb2NrZXIgeyBoZWFwLm11dGF0b3JTaG91bGRCZUZl
bmNlZCgpID8gJnBhc3NlZExvY2sgOiBudWxscHRyIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKaW5kZXggZWYyZWFjZTNkZWVhODg3OWU0Nzk4NDRjYzEwMTg4YzQ2YTVmMDdiNC4uM2NiZDky
NzlhNTE4YzY3NTBmYTU2Zjk4OGZjMDM1NjQ3MjA4YjE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjU2LDE1ICsyNTYsMTYg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKICAgICB7CisgICAgICAgIC8vIFRoZSBHQyB0aHJlYWQgaGFzIHRvIGdyYWIg
dGhlIGdjIGxvY2sgZXZlbiB0aG91Z2ggaXQgaXMgbm90IG11dGF0aW5nIHRoZSBjb250YWluZXJz
LgogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+bV9nY0xvY2sgfTsKIAotICAg
ICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZSA6IHRoaXNPYmplY3QtPnN0cnVjdHVyZXMobG9ja2Vy
KS52YWx1ZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmUgOiBtX3N0cnVjdHVyZXMu
dmFsdWVzKCkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChzdHJ1Y3R1cmUpOwogCi0gICAg
ICAgIGZvciAoYXV0byYgY29uc3RydWN0b3IgOiB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMobG9j
a2VyKS52YWx1ZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBjb25zdHJ1Y3RvciA6IG1fY29uc3Ry
dWN0b3JzLnZhbHVlcygpKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoY29uc3RydWN0b3Ip
OwogCi0gICAgICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IHRoaXNPYmplY3QtPmd1YXJkZWRPYmpl
Y3RzKGxvY2tlcikpCisgICAgICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IG1fZ3VhcmRlZE9iamVj
dHMpCiAgICAgICAgICAgICBndWFyZGVkLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9
CiAKQEAgLTMwMiw3ICszMDMsMTAgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG8KIAogdm9pZCBK
U0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCiB7Ci0gICAgYXV0byBn
dWFyZGVkT2JqZWN0c0NvcHkgPSBtX2d1YXJkZWRPYmplY3RzOworICAgIC8vIE5vIGxvY2tpbmcg
aXMgbmVjZXNzYXJ5IGhlcmUgc2luY2Ugd2UgYXJlIG5vdCBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IHJldHVybmVkIGNvbnRhaW5lci4KKyAgICAvLyBDYWxsaW5nIEpTRE9NR3VhcmRlZE9iamVjdDo6
Y2xlYXIoKSB3aWxsIGhvd2V2ZXIgbW9kaWZ5IHRoZSBndWFyZGVkIG9iamVjdHMgY29udGFpbmVy
IGJ1dAorICAgIC8vIGl0IHdpbGwgZ3JhYiB0aGUgbG9jayBhcyBuZWVkZWQuCisgICAgYXV0byBn
dWFyZGVkT2JqZWN0c0NvcHkgPSBndWFyZGVkT2JqZWN0cygpOwogICAgIGZvciAoYXV0byYgZ3Vh
cmRlZCA6IGd1YXJkZWRPYmplY3RzQ29weSkKICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4
IDk1NmQ1MWFkNDgwZDRkZDJjMGE4OTM4ZGVhZjQ0ZGFhYmFhNzU2ZGYuLjkyN2U3ZGM4ZDNkNmQ1
NTBhMmZlYjk2N2FmOGEzNmVkNjc4NTQ2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNH
bG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMu
aD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb2NrRHVyaW5nTWFya2luZy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01OCwxMiArNTcsMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKIAogcHVibGljOgotICAgIFVuY2hlY2tlZExvY2smIGdjTG9jaygpIHsgcmV0dXJu
IG1fZ2NMb2NrOyB9CisgICAgTG9jayYgZ2NMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhtX2djTG9j
aykgeyByZXR1cm4gbV9nY0xvY2s7IH0KIAotICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1
cmVzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzOyB9Ci0gICAg
SlNET01Db25zdHJ1Y3Rvck1hcCYgY29uc3RydWN0b3JzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikg
eyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7IH0KKyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0
dXJlcygpIFdURl9SRVFVSVJFU19MT0NLKG1fZ2NMb2NrKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7
IH0KKyAgICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhtX2djTG9jaykgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7IH0KKyAgICBET01HdWFyZGVk
T2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0cygpIFdURl9SRVFVSVJFU19MT0NLKG1fZ2NMb2NrKSB7
IHJldHVybiBtX2d1YXJkZWRPYmplY3RzOyB9CiAKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBn
dWFyZGVkT2JqZWN0cyhjb25zdCBBYnN0cmFjdExvY2tlciYpIHsgcmV0dXJuIG1fZ3VhcmRlZE9i
amVjdHM7IH0KKyAgICAvLyBObyBsb2NraW5nIGlzIG5lY2Vzc2FyeSBmb3IgY2FsbCBzaXRlcyB0
aGF0IGRvIG5vdCBtdXRhdGUgdGhlIGNvbnRhaW5lcnMgYW5kIGFyZSBub3Qgb24gdGhlIEdDIHRo
cmVhZC4KKyAgICBjb25zdCBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIGNvbnN0IFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeyBBU1NFUlQoIVRocmVhZDo6bWF5QmVH
Q1RocmVhZCgpKTsgcmV0dXJuIG1fc3RydWN0dXJlczsgfQorICAgIGNvbnN0IEpTRE9NQ29uc3Ry
dWN0b3JNYXAmIGNvbnN0cnVjdG9ycygpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlf
QU5BTFlTSVMgeyBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpKTsgcmV0dXJuIG1fY29u
c3RydWN0b3JzOyB9CisgICAgY29uc3QgRE9NR3VhcmRlZE9iamVjdFNldCYgZ3VhcmRlZE9iamVj
dHMoKSBjb25zdCBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsgQVNTRVJUKCFU
aHJlYWQ6Om1heUJlR0NUaHJlYWQoKSk7IHJldHVybiBtX2d1YXJkZWRPYmplY3RzOyB9CisKKyAg
ICAvLyBUaGUgZm9sbG93aW5nIGRvbid0IHJlcXVpcmUgZ3JhYmJpbmcgdGhlIGdjTG9jayBmaXJz
dCBhbmQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIEhlYXAgc2F5cyB0aGF0IG11dGF0
b3JzIGRvbid0IGhhdmUgdG8gYmUgZmVuY2VkLgorICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1
Y3R1cmVzKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9B
TkFMWVNJUyB7IEFTU0VSVCghdm0oKS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKTsgcmV0
dXJuIG1fc3RydWN0dXJlczsgfQorICAgIEpTRE9NQ29uc3RydWN0b3JNYXAmIGNvbnN0cnVjdG9y
cyhOb0xvY2tpbmdOZWNlc3NhcnlUYWcpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMgeyBBU1NFUlQoIXZtKCkuaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSk7IHJldHVybiBt
X2NvbnN0cnVjdG9yczsgfQorICAgIERPTUd1YXJkZWRPYmplY3RTZXQmIGd1YXJkZWRPYmplY3Rz
KE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UyB7IEFTU0VSVCghdm0oKS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKTsgcmV0dXJuIG1f
Z3VhcmRlZE9iamVjdHM7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIApAQCAtMTE1LDEzICsxMjMsMTMgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRN
b2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpT
U3RyaW5nKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdpbiYpOwogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGll
cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU01vZHVsZVJlY29yZCosIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBKU0RPTVN0cnVj
dHVyZU1hcCBtX3N0cnVjdHVyZXM7Ci0gICAgSlNET01Db25zdHJ1Y3Rvck1hcCBtX2NvbnN0cnVj
dG9yczsKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0IG1fZ3VhcmRlZE9iamVjdHM7CisgICAgSlNE
T01TdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9nY0xvY2sp
OworICAgIEpTRE9NQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnMgV1RGX0dVQVJERURfQllf
TE9DSyhtX2djTG9jayk7CisgICAgRE9NR3VhcmRlZE9iamVjdFNldCBtX2d1YXJkZWRPYmplY3Rz
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9nY0xvY2spOwogCiAgICAgUmVmPERPTVdyYXBwZXJXb3Js
ZD4gbV93b3JsZDsKICAgICB1aW50OF90IG1fd29ybGRJc05vcm1hbDsKLSAgICBVbmNoZWNrZWRM
b2NrIG1fZ2NMb2NrOworICAgIExvY2sgbV9nY0xvY2s7CiAgICAgSlNDOjpXcml0ZUJhcnJpZXI8
SlNDOjpKU1Byb3h5PiBtX3Byb3h5OwogCiBwcml2YXRlOgpAQCAtMTM4LDE0ICsxNDYsMTkgQEAg
cHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+CiBpbmxpbmUgSlNDOjpK
U09iamVjdCogZ2V0RE9NQ29uc3RydWN0b3IoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgaWYgKEpTQzo6SlNPYmplY3QqIGNvbnN0cnVj
dG9yID0gY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2JhbE9iamVjdCkuY29uc3Ry
dWN0b3JzKE5vTG9ja2luZ05lY2Vzc2FyeSkuZ2V0KENvbnN0cnVjdG9yQ2xhc3M6OmluZm8oKSku
Z2V0KCkpCisgICAgLy8gTm8gbG9ja2luZyBpcyBuZWNlc3NhcnkgdW5sZXNzIHdlIG5lZWQgdG8g
YWRkIGEgbmV3IGNvbnN0cnVjdG9yIHRvIEpTRE9NR2xvYmFsT2JqZWN0Ojpjb25zdHJ1Y3RvcnMo
KS4KKyAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBjb25zdF9jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Jj4oZ2xvYmFsT2JqZWN0KS5jb25zdHJ1Y3RvcnMoKS5nZXQoQ29uc3RydWN0
b3JDbGFzczo6aW5mbygpKS5nZXQoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAg
IEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlKHZt
LCBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGNvbnN0X2Nhc3Q8SlNET01H
bG9iYWxPYmplY3QmPihnbG9iYWxPYmplY3QpLCBDb25zdHJ1Y3RvckNsYXNzOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Jj4oZ2xvYmFsT2JqZWN0KSk7Ci0gICAgQVNTRVJUKCFjb25zdF9jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Jj4oZ2xvYmFsT2JqZWN0KS5jb25zdHJ1Y3RvcnMoTm9Mb2NraW5nTmVjZXNzYXJ5KS5j
b250YWlucyhDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCkpKTsKKyAgICBBU1NFUlQoIWNvbnN0X2Nh
c3Q8SlNET01HbG9iYWxPYmplY3QmPihnbG9iYWxPYmplY3QpLmNvbnN0cnVjdG9ycygpLmNvbnRh
aW5zKENvbnN0cnVjdG9yQ2xhc3M6OmluZm8oKSkpOwogICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpT
Qzo6SlNPYmplY3Q+IHRlbXA7CiAgICAgSlNET01HbG9iYWxPYmplY3QmIG11dGFibGVHbG9iYWxP
YmplY3QgPSBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Jj4oZ2xvYmFsT2JqZWN0KTsKLSAg
ICBhdXRvIGxvY2tlciA9IEpTQzo6bG9ja0R1cmluZ01hcmtpbmcodm0uaGVhcCwgbXV0YWJsZUds
b2JhbE9iamVjdC5nY0xvY2soKSk7Ci0gICAgbXV0YWJsZUdsb2JhbE9iamVjdC5jb25zdHJ1Y3Rv
cnMobG9ja2VyKS5hZGQoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpLCB0ZW1wKS5pdGVyYXRvci0+
dmFsdWUuc2V0KHZtLCAmZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CisgICAgaWYgKHZtLmhl
YXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG11
dGFibGVHbG9iYWxPYmplY3QuZ2NMb2NrKCkgfTsKKyAgICAgICAgbXV0YWJsZUdsb2JhbE9iamVj
dC5jb25zdHJ1Y3RvcnMoKS5hZGQoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpLCB0ZW1wKS5pdGVy
YXRvci0+dmFsdWUuc2V0KHZtLCAmZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CisgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisgICAgbXV0YWJsZUdsb2JhbE9iamVjdC5jb25z
dHJ1Y3RvcnMoTm9Mb2NraW5nTmVjZXNzYXJ5KS5hZGQoQ29uc3RydWN0b3JDbGFzczo6aW5mbygp
LCB0ZW1wKS5pdGVyYXRvci0+dmFsdWUuc2V0KHZtLCAmZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rv
cik7CiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmNwcAppbmRleCBhODM1OTAzMzgxYTVmZTBk
MWU2OWQwNTg3NDljNmIxMGFhNWQ2OGI2Li42ZWNjMWZmYjFlZGQyOGNiNDE0MGM4ZDA1YmE0YzMz
ZDhkYmI0NzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1
YXJkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3Vh
cmRlZE9iamVjdC5jcHAKQEAgLTM1LDkgKzM1LDEzIEBAIERPTUd1YXJkZWRPYmplY3Q6OkRPTUd1
YXJkZWRPYmplY3QoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDZWxsJiBndWFy
CiAgICAgLCBtX2d1YXJkZWQoJmd1YXJkZWQpCiAgICAgLCBtX2dsb2JhbE9iamVjdCgmZ2xvYmFs
T2JqZWN0KQogewotICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoZ2xvYmFsT2Jq
ZWN0LnZtKCkuaGVhcCwgZ2xvYmFsT2JqZWN0LmdjTG9jaygpKTsKICAgICBnbG9iYWxPYmplY3Qu
dm0oKS5oZWFwLndyaXRlQmFycmllcigmZ2xvYmFsT2JqZWN0LCAmZ3VhcmRlZCk7Ci0gICAgZ2xv
YmFsT2JqZWN0Lmd1YXJkZWRPYmplY3RzKGxvY2tlcikuYWRkKHRoaXMpOworICAgIGlmIChnbG9i
YWxPYmplY3Qudm0oKS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKSB7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBnbG9iYWxPYmplY3QuZ2NMb2NrKCkgfTsKKyAgICAgICAgZ2xvYmFsT2Jq
ZWN0Lmd1YXJkZWRPYmplY3RzKCkuYWRkKHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGdsb2JhbE9iamVjdC5ndWFyZGVkT2JqZWN0cyhOb0xvY2tpbmdOZWNlc3NhcnkpLmFkZCh0
aGlzKTsKIH0KIAogRE9NR3VhcmRlZE9iamVjdDo6fkRPTUd1YXJkZWRPYmplY3QoKQpAQCAtNDgs
MTQgKzUyLDIzIEBAIERPTUd1YXJkZWRPYmplY3Q6On5ET01HdWFyZGVkT2JqZWN0KCkKIHZvaWQg
RE9NR3VhcmRlZE9iamVjdDo6Y2xlYXIoKQogewogICAgIEFTU0VSVCghbV9ndWFyZGVkIHx8IG1f
Z2xvYmFsT2JqZWN0KTsKLSAgICBpZiAobV9ndWFyZGVkICYmIG1fZ2xvYmFsT2JqZWN0KSB7Ci0g
ICAgICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcobV9nbG9iYWxPYmplY3QtPnZt
KCkuaGVhcCwgbV9nbG9iYWxPYmplY3QtPmdjTG9jaygpKTsKLSAgICAgICAgbV9nbG9iYWxPYmpl
Y3QtPmd1YXJkZWRPYmplY3RzKGxvY2tlcikucmVtb3ZlKHRoaXMpOwotICAgIH0KKyAgICByZW1v
dmVGcm9tR2xvYmFsT2JqZWN0KCk7CiAgICAgbV9ndWFyZGVkLmNsZWFyKCk7CiAgICAgbV9nbG9i
YWxPYmplY3QuY2xlYXIoKTsKIH0KIAordm9pZCBET01HdWFyZGVkT2JqZWN0OjpyZW1vdmVGcm9t
R2xvYmFsT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fZ3VhcmRlZCB8fCAhbV9nbG9iYWxPYmplY3Qp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFwLm11
dGF0b3JTaG91bGRCZUZlbmNlZCgpKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2dsb2Jh
bE9iamVjdC0+Z2NMb2NrKCkgfTsKKyAgICAgICAgbV9nbG9iYWxPYmplY3QtPmd1YXJkZWRPYmpl
Y3RzKCkucmVtb3ZlKHRoaXMpOworICAgIH0gZWxzZQorICAgICAgICBtX2dsb2JhbE9iamVjdC0+
Z3VhcmRlZE9iamVjdHMoTm9Mb2NraW5nTmVjZXNzYXJ5KS5yZW1vdmUodGhpcyk7Cit9CisKIHZv
aWQgRE9NR3VhcmRlZE9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAgQWN0aXZlRE9N
Q2FsbGJhY2s6OmNvbnRleHREZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgKaW5kZXggN2I1MjkwYWQzZmIzNTlkNGFhNTIzNTZh
ZGRlMGI0Yjg0ZTVhNWZiNi4uZTU3NmZmMWE2NTcxN2QwYjI1Yzk1NDE0YWU4ODFiNGYzZTRlYTFh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0
LmgKQEAgLTU1LDYgKzU1LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgSlNDOjpXZWFrPEpTQzo6SlND
ZWxsPiBtX2d1YXJkZWQ7CiAgICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2Jh
bE9iamVjdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHJlbW92ZUZyb21HbG9iYWxPYmplY3QoKTsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBET01HdWFyZGVkIDogcHVibGljIERP
TUd1YXJkZWRPYmplY3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
cmFwcGVyQ2FjaGUuY3BwCmluZGV4IDJkNzAzMDZiZDg3NzI2ZWQ4NzI4M2FiMzEwZGEzNjJlMzFl
ZGM3MzkuLjlmZjE3YjM0YjI3MjI1NzQzZTUwNDc4MzRiODNhY2U3ZjM5ZTE0MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5jcHAKQEAgLTI5
LDE2ICsyOSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBTdHJ1Y3R1cmUqIGdldENhY2hl
ZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbykKIHsKLSAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9
IGdsb2JhbE9iamVjdC5zdHJ1Y3R1cmVzKE5vTG9ja2luZ05lY2Vzc2FyeSk7Ci0gICAgcmV0dXJu
IHN0cnVjdHVyZXMuZ2V0KGNsYXNzSW5mbykuZ2V0KCk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5zdHJ1Y3R1cmVzKCkuZ2V0KGNsYXNzSW5mbykuZ2V0KCk7CiB9CiAKIFN0cnVjdHVyZSogY2Fj
aGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogewotICAgIGF1dG8gbG9j
a2VyID0gbG9ja0R1cmluZ01hcmtpbmcoZ2xvYmFsT2JqZWN0LnZtKCkuaGVhcCwgZ2xvYmFsT2Jq
ZWN0LmdjTG9jaygpKTsKLSAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2Jh
bE9iamVjdC5zdHJ1Y3R1cmVzKGxvY2tlcik7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRh
aW5zKGNsYXNzSW5mbykpOwotICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgYXV0byBhZGRUb1N0cnVjdHVy
ZXMgPSBbXShKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcywgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKSB7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8p
KTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LnZtKCksICZnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkp
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICB9OworICAgIGlmIChnbG9iYWxPYmplY3Qudm0o
KS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBnbG9iYWxPYmplY3QuZ2NMb2NrKCkgfTsKKyAgICAgICAgcmV0dXJuIGFkZFRvU3RydWN0dXJl
cyhnbG9iYWxPYmplY3Quc3RydWN0dXJlcygpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xh
c3NJbmZvKTsKKyAgICB9CisgICAgcmV0dXJuIGFkZFRvU3RydWN0dXJlcyhnbG9iYWxPYmplY3Qu
c3RydWN0dXJlcyhOb0xvY2tpbmdOZWNlc3NhcnkpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
Y2xhc3NJbmZvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="451174"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429894</attachid>
            <date>2021-05-27 10:15:26 -0700</date>
            <delta_ts>2021-05-27 10:43:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226281-20210527101525.patch</filename>
            <type>text/plain</type>
            <size>20725</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGVjZjJiYTU1NDNjYmNjMzQ0OTdiMTJkZWU1YTk5YTJiY2U2YjMyLi5iN2MzMzU4OGY1MDljMzdm
ZmQzNzc5ZDQ0MGU5ZGVhOThmMmFkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBKU0M6
OmxvY2tEdXJpbmdNYXJraW5nKCkgYW5kIGl0cyBub3cgZW1wdHkgaGVhZGVyIGdpdmVuIHRoYXQg
aXQgZG9lcyBjb25kaXRpb25hbAorICAgICAgICBsb2NraW5nIGFuZCBpdCBpcyBub3QgY29tcGF0
aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAg
ICogaGVhcC9Mb2NrRHVyaW5nTWFya2luZy5oOiBSZW1vdmVkLgorCiAyMDIxLTA1LTI3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVu
aWZpZWQgYnVpbGQgZml4ZXMsIGxhdGUgTWF5IDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1
MTc4NTNmMWY2NDRmNDIxZDIzZWIwZDE5YjNkNTIyM2U0OTJmMjYuLjMzZjkxN2M1NjY5ZTU0NDIx
M2IyYzYwYzJiNmIyYWY2NzUzNzI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
dXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRMb2Nr
IGluIEpTRE9NR2xvYmFsT2JqZWN0IGFuZCB1c2UgTG9jayBpbnN0ZWFkIG9mIGJlbmVmaXQgZnJv
bSBDbGFuZyB0aHJlYWQKKyAgICAgICAgc2FmZXR5IGFuYWx5c2lzLiBUaGlzIGlzIGEgc3RlcCB0
b3dhcmRzIHBoYXNpbmcgb3V0IFVuY2hlY2tlZExvY2sgYW5kIGltcHJvdmluZyB0aGUgdGhyZWFk
CisgICAgICAgIHNhZmV0eSBvZiBvdXIgY29kZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVj
dDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpET01HdWFyZGVkT2JqZWN0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpET01HdWFy
ZGVkT2JqZWN0OjpyZW1vdmVGcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUd1YXJkZWRPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTVN0cnVjdHVyZSk6CisKIDIw
MjEtMDUtMjcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNDQ0MzQpIERpc3BhdGNoIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQgb24g
dGhlIG1haW4gZnJhbWUgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDVkZjY5M2VmZDdkNzAxYTQwNGIyNTc5YjY1Yzg5YWY4NDg0MGQyNTIuLjYyY2FmNjEyMTcwODdi
NjUzNGExYTdiZWYyZDdiMzI5YWQzMGYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTY3NCw3ICs2NzQsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuaAogICAgIGhlYXAvTG9j
YWxBbGxvY2F0b3IuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKLSAgICBoZWFw
L0xvY2tEdXJpbmdNYXJraW5nLmgKICAgICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oCiAgICAg
aGVhcC9NYXJrU3RhY2suaAogICAgIGhlYXAvTWFya2VkQmxvY2suaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5NDI3NjExMzRkYTFmNjA5NzU3YmI1Yjg3NWFlMjZmYTkxMWFiNTA0
Li4wNGIxOTM0NTgwMGM5MmE5N2E5MTgxMjliM2E5NWJiNTM1NjIyYzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwLDcgKzE3MCw2IEBACiAJCTBGMjAxNzgyMURDQURENDIw
MEVBNTk1MCAvKiBERkdGbG93TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIwMTc4MTFEQ0FERDQwMDBFQTU5NTAgLyogREZHRmxvd01hcC5oICov
OyB9OwogCQkwRjIwMTc4NTFEQ0FFMTQ5MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc4
NDFEQ0FFMTQ3MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggKi87IH07CiAJCTBG
MjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjAxNzg4MURDQjk0
MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCAqLzsgfTsKLQkJMEYyMDhB
RDcxREYwOTI1RDAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwOEFENjFERjA5MjVBMDA3RDMyNjkg
LyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIzNUJCRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzEsNyArMjM3MCw2IEBA
CiAJCTBGMjAxNzg0MURDQUUxNDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7
IHBhdGggPSBkZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjAxNzg3MURDQjk0MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1
ZVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUFi
c3RyYWN0VmFsdWVQYWlyLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIwMTc4ODFEQ0I5NDIyMDBFQTU5
NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oOyBwYXRoID0gZGZnL0RGR05vZGVB
YnN0cmFjdFZhbHVlUGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjIwOEFE
NjFERjA5MjVBMDA3RDMyNjkgLyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9ja0R1cmluZ01hcmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMEMyNTgxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2
NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NjUsNyArNjQ2Myw2IEBACiAJCQkJMEY3
NUEwNTkyMDBEMjVGMDAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkwRjc1
QTA1NzIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCAqLywKIAkJCQkwRjc1QTA1
QTIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggKi8sCi0JCQkJMEYy
MDhBRDYxREYwOTI1QTAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggKi8sCiAJCQkJMTRC
NzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgKi8sCiAJCQkJ
MTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovLAogCQkJ
CTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8sCkBAIC0xMDMw
NCw3ICsxMDMwMSw2IEBACiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9j
YWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzVBMDYwMjAwRDI2MEIwMDM4RTJD
RiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMjA4QUQ3
MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5nTWFya2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDFlZmViYjAzNWZlYWJiZTQwZDgzNTVkMTAzNmYy
NzA4OWQ2Y2ZiZTYuLjExMzdlOWMzYThiYzcyZWMxYmVmZTE0NWVmNmYxNDgyODYyMzVjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ikluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiTG9j
a0R1cmluZ01hcmtpbmcuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQYXJzZXJN
b2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9ja0R1cmluZ01hcmtpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2tEdXJpbmdNYXJraW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj
MjQ2OGY2ZjQyMjhkYjQ5MTI3YTZjZmI2MDE2N2E5ZGZhMmYyNTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9ja0R1cmluZ01hcmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi0vLyBVc2UgdGhpcyBsb2NrIHNjb3BlIGxpa2Ugc286Ci0vLyBhdXRvIGxv
Y2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKGhlYXAsIGxvY2spOwotdGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+Ci1hdXRvIGxvY2tEdXJpbmdNYXJraW5nKEhlYXAmIGhlYXAsIExvY2tUeXBlJiBw
YXNzZWRMb2NrKQotewotICAgIHJldHVybiBMb2NrZXIgeyBoZWFwLm11dGF0b3JTaG91bGRCZUZl
bmNlZCgpID8gJnBhc3NlZExvY2sgOiBudWxscHRyIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKaW5kZXggZWYyZWFjZTNkZWVhODg3OWU0Nzk4NDRjYzEwMTg4YzQ2YTVmMDdiNC4uM2NiZDky
NzlhNTE4YzY3NTBmYTU2Zjk4OGZjMDM1NjQ3MjA4YjE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjU2LDE1ICsyNTYsMTYg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKICAgICB7CisgICAgICAgIC8vIFRoZSBHQyB0aHJlYWQgaGFzIHRvIGdyYWIg
dGhlIGdjIGxvY2sgZXZlbiB0aG91Z2ggaXQgaXMgbm90IG11dGF0aW5nIHRoZSBjb250YWluZXJz
LgogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+bV9nY0xvY2sgfTsKIAotICAg
ICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZSA6IHRoaXNPYmplY3QtPnN0cnVjdHVyZXMobG9ja2Vy
KS52YWx1ZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmUgOiBtX3N0cnVjdHVyZXMu
dmFsdWVzKCkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChzdHJ1Y3R1cmUpOwogCi0gICAg
ICAgIGZvciAoYXV0byYgY29uc3RydWN0b3IgOiB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMobG9j
a2VyKS52YWx1ZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBjb25zdHJ1Y3RvciA6IG1fY29uc3Ry
dWN0b3JzLnZhbHVlcygpKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoY29uc3RydWN0b3Ip
OwogCi0gICAgICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IHRoaXNPYmplY3QtPmd1YXJkZWRPYmpl
Y3RzKGxvY2tlcikpCisgICAgICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IG1fZ3VhcmRlZE9iamVj
dHMpCiAgICAgICAgICAgICBndWFyZGVkLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9
CiAKQEAgLTMwMiw3ICszMDMsMTAgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG8KIAogdm9pZCBK
U0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cygpCiB7Ci0gICAgYXV0byBn
dWFyZGVkT2JqZWN0c0NvcHkgPSBtX2d1YXJkZWRPYmplY3RzOworICAgIC8vIE5vIGxvY2tpbmcg
aXMgbmVjZXNzYXJ5IGhlcmUgc2luY2Ugd2UgYXJlIG5vdCBkaXJlY3RseSBtb2RpZnlpbmcgdGhl
IHJldHVybmVkIGNvbnRhaW5lci4KKyAgICAvLyBDYWxsaW5nIEpTRE9NR3VhcmRlZE9iamVjdDo6
Y2xlYXIoKSB3aWxsIGhvd2V2ZXIgbW9kaWZ5IHRoZSBndWFyZGVkIG9iamVjdHMgY29udGFpbmVy
IGJ1dAorICAgIC8vIGl0IHdpbGwgZ3JhYiB0aGUgbG9jayBhcyBuZWVkZWQuCisgICAgYXV0byBn
dWFyZGVkT2JqZWN0c0NvcHkgPSBndWFyZGVkT2JqZWN0cygpOwogICAgIGZvciAoYXV0byYgZ3Vh
cmRlZCA6IGd1YXJkZWRPYmplY3RzQ29weSkKICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4
IDk1NmQ1MWFkNDgwZDRkZDJjMGE4OTM4ZGVhZjQ0ZGFhYmFhNzU2ZGYuLmM0Yzc0ZTcxMjM2ZTgx
YmIwYmU4OGZmZWZlMjkwNGU2NTRlOGVjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNH
bG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMu
aD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb2NrRHVyaW5nTWFya2luZy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01OCwxMiArNTcsMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKIAogcHVibGljOgotICAgIFVuY2hlY2tlZExvY2smIGdjTG9jaygpIHsgcmV0dXJu
IG1fZ2NMb2NrOyB9CisgICAgTG9jayYgZ2NMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhtX2djTG9j
aykgeyByZXR1cm4gbV9nY0xvY2s7IH0KIAotICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1
cmVzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyByZXR1cm4gbV9zdHJ1Y3R1cmVzOyB9Ci0gICAg
SlNET01Db25zdHJ1Y3Rvck1hcCYgY29uc3RydWN0b3JzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikg
eyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7IH0KKyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0
dXJlcygpIFdURl9SRVFVSVJFU19MT0NLKG1fZ2NMb2NrKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7
IH0KKyAgICBKU0RPTUNvbnN0cnVjdG9yTWFwJiBjb25zdHJ1Y3RvcnMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhtX2djTG9jaykgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7IH0KKyAgICBET01HdWFyZGVk
T2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0cygpIFdURl9SRVFVSVJFU19MT0NLKG1fZ2NMb2NrKSB7
IHJldHVybiBtX2d1YXJkZWRPYmplY3RzOyB9CiAKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBn
dWFyZGVkT2JqZWN0cyhjb25zdCBBYnN0cmFjdExvY2tlciYpIHsgcmV0dXJuIG1fZ3VhcmRlZE9i
amVjdHM7IH0KKyAgICAvLyBObyBsb2NraW5nIGlzIG5lY2Vzc2FyeSBmb3IgY2FsbCBzaXRlcyB0
aGF0IGRvIG5vdCBtdXRhdGUgdGhlIGNvbnRhaW5lcnMgYW5kIGFyZSBub3Qgb24gdGhlIEdDIHRo
cmVhZC4KKyAgICBjb25zdCBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIGNvbnN0IFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeyBBU1NFUlQoIVRocmVhZDo6bWF5QmVH
Q1RocmVhZCgpKTsgcmV0dXJuIG1fc3RydWN0dXJlczsgfQorICAgIGNvbnN0IEpTRE9NQ29uc3Ry
dWN0b3JNYXAmIGNvbnN0cnVjdG9ycygpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlf
QU5BTFlTSVMgeyBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpKTsgcmV0dXJuIG1fY29u
c3RydWN0b3JzOyB9CisgICAgY29uc3QgRE9NR3VhcmRlZE9iamVjdFNldCYgZ3VhcmRlZE9iamVj
dHMoKSBjb25zdCBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsgQVNTRVJUKCFU
aHJlYWQ6Om1heUJlR0NUaHJlYWQoKSk7IHJldHVybiBtX2d1YXJkZWRPYmplY3RzOyB9CisKKyAg
ICAvLyBUaGUgZm9sbG93aW5nIGRvbid0IHJlcXVpcmUgZ3JhYmJpbmcgdGhlIGdjTG9jayBmaXJz
dCBhbmQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIEhlYXAgc2F5cyB0aGF0IG11dGF0
b3JzIGRvbid0IGhhdmUgdG8gYmUgZmVuY2VkLgorICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1
Y3R1cmVzKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9B
TkFMWVNJUyB7IEFTU0VSVCghdm0oKS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKTsgcmV0
dXJuIG1fc3RydWN0dXJlczsgfQorICAgIEpTRE9NQ29uc3RydWN0b3JNYXAmIGNvbnN0cnVjdG9y
cyhOb0xvY2tpbmdOZWNlc3NhcnlUYWcpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMgeyBBU1NFUlQoIXZtKCkuaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSk7IHJldHVybiBt
X2NvbnN0cnVjdG9yczsgfQorICAgIERPTUd1YXJkZWRPYmplY3RTZXQmIGd1YXJkZWRPYmplY3Rz
KE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UyB7IEFTU0VSVCghdm0oKS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKTsgcmV0dXJuIG1f
Z3VhcmRlZE9iamVjdHM7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIApAQCAtMTE1LDEzICsxMjMsMTMgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRN
b2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpT
U3RyaW5nKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdpbiYpOwogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGll
cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU01vZHVsZVJlY29yZCosIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBKU0RPTVN0cnVj
dHVyZU1hcCBtX3N0cnVjdHVyZXM7Ci0gICAgSlNET01Db25zdHJ1Y3Rvck1hcCBtX2NvbnN0cnVj
dG9yczsKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0IG1fZ3VhcmRlZE9iamVjdHM7CisgICAgSlNE
T01TdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9nY0xvY2sp
OworICAgIEpTRE9NQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1Y3RvcnMgV1RGX0dVQVJERURfQllf
TE9DSyhtX2djTG9jayk7CisgICAgRE9NR3VhcmRlZE9iamVjdFNldCBtX2d1YXJkZWRPYmplY3Rz
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9nY0xvY2spOwogCiAgICAgUmVmPERPTVdyYXBwZXJXb3Js
ZD4gbV93b3JsZDsKICAgICB1aW50OF90IG1fd29ybGRJc05vcm1hbDsKLSAgICBVbmNoZWNrZWRM
b2NrIG1fZ2NMb2NrOworICAgIExvY2sgbV9nY0xvY2s7CiAgICAgSlNDOjpXcml0ZUJhcnJpZXI8
SlNDOjpKU1Byb3h5PiBtX3Byb3h5OwogCiBwcml2YXRlOgpAQCAtMTM4LDE0ICsxNDYsMTkgQEAg
cHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+CiBpbmxpbmUgSlNDOjpK
U09iamVjdCogZ2V0RE9NQ29uc3RydWN0b3IoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgaWYgKEpTQzo6SlNPYmplY3QqIGNvbnN0cnVj
dG9yID0gY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2JhbE9iamVjdCkuY29uc3Ry
dWN0b3JzKE5vTG9ja2luZ05lY2Vzc2FyeSkuZ2V0KENvbnN0cnVjdG9yQ2xhc3M6OmluZm8oKSku
Z2V0KCkpCisgICAgLy8gTm8gbG9ja2luZyBpcyBuZWNlc3NhcnkgdW5sZXNzIHdlIG5lZWQgdG8g
YWRkIGEgbmV3IGNvbnN0cnVjdG9yIHRvIEpTRE9NR2xvYmFsT2JqZWN0Ojpjb25zdHJ1Y3RvcnMo
KS4KKyAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QuY29u
c3RydWN0b3JzKCkuZ2V0KENvbnN0cnVjdG9yQ2xhc3M6OmluZm8oKSkuZ2V0KCkpCiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IENv
bnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZSh2bSwgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Jj4oZ2xvYmFsT2JqZWN0KSwgQ29u
c3RydWN0b3JDbGFzczo6cHJvdG90eXBlRm9yU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QpKSwg
Y29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2JhbE9iamVjdCkpOwotICAgIEFTU0VS
VCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2JhbE9iamVjdCkuY29uc3RydWN0
b3JzKE5vTG9ja2luZ05lY2Vzc2FyeSkuY29udGFpbnMoQ29uc3RydWN0b3JDbGFzczo6aW5mbygp
KSk7CisgICAgQVNTRVJUKCFnbG9iYWxPYmplY3QuY29uc3RydWN0b3JzKCkuY29udGFpbnMoQ29u
c3RydWN0b3JDbGFzczo6aW5mbygpKSk7CiAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09i
amVjdD4gdGVtcDsKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgbXV0YWJsZUdsb2JhbE9iamVjdCA9
IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QmPihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
bG9ja2VyID0gSlNDOjpsb2NrRHVyaW5nTWFya2luZyh2bS5oZWFwLCBtdXRhYmxlR2xvYmFsT2Jq
ZWN0LmdjTG9jaygpKTsKLSAgICBtdXRhYmxlR2xvYmFsT2JqZWN0LmNvbnN0cnVjdG9ycyhsb2Nr
ZXIpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5z
ZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKKyAgICBpZiAodm0uaGVhcC5tdXRh
dG9yU2hvdWxkQmVGZW5jZWQoKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbXV0YWJsZUds
b2JhbE9iamVjdC5nY0xvY2soKSB9OworICAgICAgICBtdXRhYmxlR2xvYmFsT2JqZWN0LmNvbnN0
cnVjdG9ycygpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52
YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOworICAgIH0KKyAgICBtdXRhYmxlR2xvYmFsT2JqZWN0LmNvbnN0cnVjdG9y
cyhOb0xvY2tpbmdOZWNlc3NhcnkpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRlbXAp
Lml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKICAg
ICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwCmluZGV4IGE4MzU5MDMzODFhNWZlMGQxZTY5ZDA1
ODc0OWM2YjEwYWE1ZDY4YjYuLjZlY2MxZmZiMWVkZDI4Y2I0MTQwYzhkMDViYTRjMzNkOGRiYjQ3
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2Jq
ZWN0LmNwcApAQCAtMzUsOSArMzUsMTMgQEAgRE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9i
amVjdChKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0NlbGwmIGd1YXIKICAgICAs
IG1fZ3VhcmRlZCgmZ3VhcmRlZCkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KCZnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyhnbG9iYWxPYmplY3Qudm0o
KS5oZWFwLCBnbG9iYWxPYmplY3QuZ2NMb2NrKCkpOwogICAgIGdsb2JhbE9iamVjdC52bSgpLmhl
YXAud3JpdGVCYXJyaWVyKCZnbG9iYWxPYmplY3QsICZndWFyZGVkKTsKLSAgICBnbG9iYWxPYmpl
Y3QuZ3VhcmRlZE9iamVjdHMobG9ja2VyKS5hZGQodGhpcyk7CisgICAgaWYgKGdsb2JhbE9iamVj
dC52bSgpLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkpIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IGdsb2JhbE9iamVjdC5nY0xvY2soKSB9OworICAgICAgICBnbG9iYWxPYmplY3QuZ3Vh
cmRlZE9iamVjdHMoKS5hZGQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2xv
YmFsT2JqZWN0Lmd1YXJkZWRPYmplY3RzKE5vTG9ja2luZ05lY2Vzc2FyeSkuYWRkKHRoaXMpOwog
fQogCiBET01HdWFyZGVkT2JqZWN0Ojp+RE9NR3VhcmRlZE9iamVjdCgpCkBAIC00OCwxNCArNTIs
MjMgQEAgRE9NR3VhcmRlZE9iamVjdDo6fkRPTUd1YXJkZWRPYmplY3QoKQogdm9pZCBET01HdWFy
ZGVkT2JqZWN0OjpjbGVhcigpCiB7CiAgICAgQVNTRVJUKCFtX2d1YXJkZWQgfHwgbV9nbG9iYWxP
YmplY3QpOwotICAgIGlmIChtX2d1YXJkZWQgJiYgbV9nbG9iYWxPYmplY3QpIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyhtX2dsb2JhbE9iamVjdC0+dm0oKS5oZWFw
LCBtX2dsb2JhbE9iamVjdC0+Z2NMb2NrKCkpOwotICAgICAgICBtX2dsb2JhbE9iamVjdC0+Z3Vh
cmRlZE9iamVjdHMobG9ja2VyKS5yZW1vdmUodGhpcyk7Ci0gICAgfQorICAgIHJlbW92ZUZyb21H
bG9iYWxPYmplY3QoKTsKICAgICBtX2d1YXJkZWQuY2xlYXIoKTsKICAgICBtX2dsb2JhbE9iamVj
dC5jbGVhcigpOwogfQogCit2b2lkIERPTUd1YXJkZWRPYmplY3Q6OnJlbW92ZUZyb21HbG9iYWxP
YmplY3QoKQoreworICAgIGlmICghbV9ndWFyZGVkIHx8ICFtX2dsb2JhbE9iamVjdCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAubXV0YXRvclNo
b3VsZEJlRmVuY2VkKCkpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZ2xvYmFsT2JqZWN0
LT5nY0xvY2soKSB9OworICAgICAgICBtX2dsb2JhbE9iamVjdC0+Z3VhcmRlZE9iamVjdHMoKS5y
ZW1vdmUodGhpcyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fZ2xvYmFsT2JqZWN0LT5ndWFyZGVk
T2JqZWN0cyhOb0xvY2tpbmdOZWNlc3NhcnkpLnJlbW92ZSh0aGlzKTsKK30KKwogdm9pZCBET01H
dWFyZGVkT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBBY3RpdmVET01DYWxsYmFj
azo6Y29udGV4dERlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUd1YXJkZWRPYmplY3QuaAppbmRleCA3YjUyOTBhZDNmYjM1OWQ0YWE1MjM1NmFkZGUwYjRi
ODRlNWE1ZmI2Li5lNTc2ZmYxYTY1NzE3ZDBiMjVjOTU0MTRhZTg4MWI0ZjNlNGVhMWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaApAQCAt
NTUsNiArNTUsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBKU0M6OldlYWs8SlNDOjpKU0NlbGw+IG1f
Z3VhcmRlZDsKICAgICBKU0M6OldlYWs8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworCitwcml2YXRlOgorICAgIHZvaWQgcmVtb3ZlRnJvbUdsb2JhbE9iamVjdCgpOwogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERPTUd1YXJkZWQgOiBwdWJsaWMgRE9NR3VhcmRl
ZE9iamVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdy
YXBwZXJDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJD
YWNoZS5jcHAKaW5kZXggMmQ3MDMwNmJkODc3MjZlZDg3MjgzYWIzMTBkYTM2MmUzMWVkYzczOS4u
OWZmMTdiMzRiMjcyMjU3NDNlNTA0NzgzNGI4M2FjZTdmMzllMTQwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmNwcApAQCAtMjksMTYgKzI5
LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIFN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3Ry
dWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKQogewotICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFs
T2JqZWN0LnN0cnVjdHVyZXMoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKLSAgICByZXR1cm4gc3RydWN0
dXJlcy5nZXQoY2xhc3NJbmZvKS5nZXQoKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LnN0cnVj
dHVyZXMoKS5nZXQoY2xhc3NJbmZvKS5nZXQoKTsKIH0KIAogU3RydWN0dXJlKiBjYWNoZURPTVN0
cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBs
b2NrRHVyaW5nTWFya2luZyhnbG9iYWxPYmplY3Qudm0oKS5oZWFwLCBnbG9iYWxPYmplY3QuZ2NM
b2NrKCkpOwotICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0
LnN0cnVjdHVyZXMobG9ja2VyKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZXMuY29udGFpbnMoY2xh
c3NJbmZvKSk7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LnZtKCksICZnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBhdXRvIGFkZFRvU3RydWN0dXJlcyA9IFtd
KEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8p
IHsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5mbykpOworICAg
ICAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPihnbG9iYWxPYmplY3Qudm0oKSwgJmdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSkuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOworICAgIH07CisgICAgaWYgKGdsb2JhbE9iamVjdC52bSgpLmhlYXAu
bXV0YXRvclNob3VsZEJlRmVuY2VkKCkpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2Jh
bE9iamVjdC5nY0xvY2soKSB9OworICAgICAgICByZXR1cm4gYWRkVG9TdHJ1Y3R1cmVzKGdsb2Jh
bE9iamVjdC5zdHJ1Y3R1cmVzKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc0luZm8p
OworICAgIH0KKyAgICByZXR1cm4gYWRkVG9TdHJ1Y3R1cmVzKGdsb2JhbE9iamVjdC5zdHJ1Y3R1
cmVzKE5vTG9ja2luZ05lY2Vzc2FyeSksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc0lu
Zm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="commit-queue"
          id="451183"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429897</attachid>
            <date>2021-05-27 10:29:51 -0700</date>
            <delta_ts>2021-05-28 16:44:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226281-20210527102951.patch</filename>
            <type>text/plain</type>
            <size>22033</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGVjZjJiYTU1NDNjYmNjMzQ0OTdiMTJkZWU1YTk5YTJiY2U2YjMyLi5iN2MzMzU4OGY1MDljMzdm
ZmQzNzc5ZDQ0MGU5ZGVhOThmMmFkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBKU0M6
OmxvY2tEdXJpbmdNYXJraW5nKCkgYW5kIGl0cyBub3cgZW1wdHkgaGVhZGVyIGdpdmVuIHRoYXQg
aXQgZG9lcyBjb25kaXRpb25hbAorICAgICAgICBsb2NraW5nIGFuZCBpdCBpcyBub3QgY29tcGF0
aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAg
ICogaGVhcC9Mb2NrRHVyaW5nTWFya2luZy5oOiBSZW1vdmVkLgorCiAyMDIxLTA1LTI3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVu
aWZpZWQgYnVpbGQgZml4ZXMsIGxhdGUgTWF5IDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1
MTc4NTNmMWY2NDRmNDIxZDIzZWIwZDE5YjNkNTIyM2U0OTJmMjYuLjMzZjkxN2M1NjY5ZTU0NDIx
M2IyYzYwYzJiNmIyYWY2NzUzNzI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MS0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
dXNpbmcgVW5jaGVja2VkTG9jayBpbiBKU0RPTUdsb2JhbE9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBVbmNoZWNrZWRMb2Nr
IGluIEpTRE9NR2xvYmFsT2JqZWN0IGFuZCB1c2UgTG9jayBpbnN0ZWFkIG9mIGJlbmVmaXQgZnJv
bSBDbGFuZyB0aHJlYWQKKyAgICAgICAgc2FmZXR5IGFuYWx5c2lzLiBUaGlzIGlzIGEgc3RlcCB0
b3dhcmRzIHBoYXNpbmcgb3V0IFVuY2hlY2tlZExvY2sgYW5kIGltcHJvdmluZyB0aGUgdGhyZWFk
CisgICAgICAgIHNhZmV0eSBvZiBvdXIgY29kZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVj
dDo6Y2xlYXJET01HdWFyZGVkT2JqZWN0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NR3VhcmRlZE9iamVjdDo6RE9NR3VhcmRlZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpET01HdWFyZGVkT2JqZWN0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpET01HdWFy
ZGVkT2JqZWN0OjpyZW1vdmVGcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUd1YXJkZWRPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTVN0cnVjdHVyZSk6CisKIDIw
MjEtMDUtMjcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNDQ0MzQpIERpc3BhdGNoIGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQgb24g
dGhlIG1haW4gZnJhbWUgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDVkZjY5M2VmZDdkNzAxYTQwNGIyNTc5YjY1Yzg5YWY4NDg0MGQyNTIuLjYyY2FmNjEyMTcwODdi
NjUzNGExYTdiZWYyZDdiMzI5YWQzMGYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTY3NCw3ICs2NzQsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuaAogICAgIGhlYXAvTG9j
YWxBbGxvY2F0b3IuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKLSAgICBoZWFw
L0xvY2tEdXJpbmdNYXJraW5nLmgKICAgICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oCiAgICAg
aGVhcC9NYXJrU3RhY2suaAogICAgIGhlYXAvTWFya2VkQmxvY2suaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5NDI3NjExMzRkYTFmNjA5NzU3YmI1Yjg3NWFlMjZmYTkxMWFiNTA0
Li4wNGIxOTM0NTgwMGM5MmE5N2E5MTgxMjliM2E5NWJiNTM1NjIyYzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTcwLDcgKzE3MCw2IEBACiAJCTBGMjAxNzgyMURDQURENDIw
MEVBNTk1MCAvKiBERkdGbG93TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIwMTc4MTFEQ0FERDQwMDBFQTU5NTAgLyogREZHRmxvd01hcC5oICov
OyB9OwogCQkwRjIwMTc4NTFEQ0FFMTQ5MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc4
NDFEQ0FFMTQ3MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggKi87IH07CiAJCTBG
MjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjAxNzg4MURDQjk0
MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCAqLzsgfTsKLQkJMEYyMDhB
RDcxREYwOTI1RDAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwOEFENjFERjA5MjVBMDA3RDMyNjkg
LyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIzNUJCRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzEsNyArMjM3MCw2IEBA
CiAJCTBGMjAxNzg0MURDQUUxNDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7
IHBhdGggPSBkZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjAxNzg3MURDQjk0MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1
ZVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUFi
c3RyYWN0VmFsdWVQYWlyLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIwMTc4ODFEQ0I5NDIyMDBFQTU5
NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oOyBwYXRoID0gZGZnL0RGR05vZGVB
YnN0cmFjdFZhbHVlUGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjIwOEFE
NjFERjA5MjVBMDA3RDMyNjkgLyogTG9ja0R1cmluZ01hcmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9ja0R1cmluZ01hcmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMEMyNTgxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2
NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NjUsNyArNjQ2Myw2IEBACiAJCQkJMEY3
NUEwNTkyMDBEMjVGMDAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkwRjc1
QTA1NzIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCAqLywKIAkJCQkwRjc1QTA1
QTIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggKi8sCi0JCQkJMEYy
MDhBRDYxREYwOTI1QTAwN0QzMjY5IC8qIExvY2tEdXJpbmdNYXJraW5nLmggKi8sCiAJCQkJMTRC
NzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgKi8sCiAJCQkJ
MTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovLAogCQkJ
CTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8sCkBAIC0xMDMw
NCw3ICsxMDMwMSw2IEBACiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9j
YWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzVBMDYwMjAwRDI2MEIwMDM4RTJD
RiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMjA4QUQ3
MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5nTWFya2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDFlZmViYjAzNWZlYWJiZTQwZDgzNTVkMTAzNmYy
NzA4OWQ2Y2ZiZTYuLjExMzdlOWMzYThiYzcyZWMxYmVmZTE0NWVmNmYxNDgyODYyMzVjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ikluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiTG9j
a0R1cmluZ01hcmtpbmcuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQYXJzZXJN
b2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9ja0R1cmluZ01hcmtpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2tEdXJpbmdNYXJraW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj
MjQ2OGY2ZjQyMjhkYjQ5MTI3YTZjZmI2MDE2N2E5ZGZhMmYyNTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9ja0R1cmluZ01hcmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi0vLyBVc2UgdGhpcyBsb2NrIHNjb3BlIGxpa2Ugc286Ci0vLyBhdXRvIGxv
Y2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKGhlYXAsIGxvY2spOwotdGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+Ci1hdXRvIGxvY2tEdXJpbmdNYXJraW5nKEhlYXAmIGhlYXAsIExvY2tUeXBlJiBw
YXNzZWRMb2NrKQotewotICAgIHJldHVybiBMb2NrZXIgeyBoZWFwLm11dGF0b3JTaG91bGRCZUZl
bmNlZCgpID8gJnBhc3NlZExvY2sgOiBudWxscHRyIH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKaW5kZXggZWYyZWFjZTNkZWVhODg3OWU0Nzk4NDRjYzEwMTg4YzQ2YTVmMDdiNC4uMWFiMGUx
NmFmYWQ1YTRkMDNjMmM4YTdlYTc4ZWRhYzc5N2FiNWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjU2LDE1ICsyNTYsMTYg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxs
LCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKICAgICB7CisgICAgICAgIC8vIFRoZSBHQyB0aHJlYWQgaGFzIHRvIGdyYWIg
dGhlIGdjIGxvY2sgZXZlbiB0aG91Z2ggaXQgaXMgbm90IG11dGF0aW5nIHRoZSBjb250YWluZXJz
LgogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+bV9nY0xvY2sgfTsKIAotICAg
ICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZSA6IHRoaXNPYmplY3QtPnN0cnVjdHVyZXMobG9ja2Vy
KS52YWx1ZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmUgOiB0aGlzT2JqZWN0LT5t
X3N0cnVjdHVyZXMudmFsdWVzKCkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChzdHJ1Y3R1
cmUpOwogCi0gICAgICAgIGZvciAoYXV0byYgY29uc3RydWN0b3IgOiB0aGlzT2JqZWN0LT5jb25z
dHJ1Y3RvcnMobG9ja2VyKS52YWx1ZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBjb25zdHJ1Y3Rv
ciA6IHRoaXNPYmplY3QtPm1fY29uc3RydWN0b3JzLnZhbHVlcygpKQogICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoY29uc3RydWN0b3IpOwogCi0gICAgICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6
IHRoaXNPYmplY3QtPmd1YXJkZWRPYmplY3RzKGxvY2tlcikpCisgICAgICAgIGZvciAoYXV0byYg
Z3VhcmRlZCA6IHRoaXNPYmplY3QtPm1fZ3VhcmRlZE9iamVjdHMpCiAgICAgICAgICAgICBndWFy
ZGVkLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CiAKQEAgLTMwMCw5ICszMDEsMTIg
QEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcChKU0dsb2JhbE9iamVjdCoganNHbG8KICAgICByZXBvcnRFeGNlcHRpb24oanNHbG9iYWxP
YmplY3QsIGV4Y2VwdGlvbik7CiB9CiAKLXZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmNsZWFyRE9N
R3VhcmRlZE9iamVjdHMoKQordm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6Y2xlYXJET01HdWFyZGVk
T2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXV0byBndWFyZGVkT2JqZWN0c0NvcHkgPSBtX2d1YXJk
ZWRPYmplY3RzOworICAgIC8vIE5vIGxvY2tpbmcgaXMgbmVjZXNzYXJ5IGhlcmUgc2luY2Ugd2Ug
YXJlIG5vdCBkaXJlY3RseSBtb2RpZnlpbmcgdGhlIHJldHVybmVkIGNvbnRhaW5lci4KKyAgICAv
LyBDYWxsaW5nIEpTRE9NR3VhcmRlZE9iamVjdDo6Y2xlYXIoKSB3aWxsIGhvd2V2ZXIgbW9kaWZ5
IHRoZSBndWFyZGVkIG9iamVjdHMgY29udGFpbmVyIGJ1dAorICAgIC8vIGl0IHdpbGwgZ3JhYiB0
aGUgbG9jayBhcyBuZWVkZWQuCisgICAgYXV0byBndWFyZGVkT2JqZWN0c0NvcHkgPSBndWFyZGVk
T2JqZWN0cygpOwogICAgIGZvciAoYXV0byYgZ3VhcmRlZCA6IGd1YXJkZWRPYmplY3RzQ29weSkK
ICAgICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IDk1NmQ1MWFkNDgwZDRkZDJjMGE4OTM4ZGVh
ZjQ0ZGFhYmFhNzU2ZGYuLjFmMDA2MjM5MGRmMzQ1NDlmNDc3OWI0ZjE1YTExOWVmNGU4NjhiOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApA
QCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Mb2NrRHVyaW5nTWFya2luZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01h
cC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCwxMiArNTcsMjEgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAogcHVibGljOgotICAgIFVu
Y2hlY2tlZExvY2smIGdjTG9jaygpIHsgcmV0dXJuIG1fZ2NMb2NrOyB9CisgICAgTG9jayYgZ2NM
b2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhtX2djTG9jaykgeyByZXR1cm4gbV9nY0xvY2s7IH0KIAot
ICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikg
eyByZXR1cm4gbV9zdHJ1Y3R1cmVzOyB9Ci0gICAgSlNET01Db25zdHJ1Y3Rvck1hcCYgY29uc3Ry
dWN0b3JzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcnM7IH0K
KyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcygpIFdURl9SRVFVSVJFU19MT0NLKG1f
Z2NMb2NrKSB7IHJldHVybiBtX3N0cnVjdHVyZXM7IH0KKyAgICBKU0RPTUNvbnN0cnVjdG9yTWFw
JiBjb25zdHJ1Y3RvcnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2djTG9jaykgeyByZXR1cm4gbV9j
b25zdHJ1Y3RvcnM7IH0KKyAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0cygp
IFdURl9SRVFVSVJFU19MT0NLKG1fZ2NMb2NrKSB7IHJldHVybiBtX2d1YXJkZWRPYmplY3RzOyB9
CiAKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0JiBndWFyZGVkT2JqZWN0cyhjb25zdCBBYnN0cmFj
dExvY2tlciYpIHsgcmV0dXJuIG1fZ3VhcmRlZE9iamVjdHM7IH0KKyAgICAvLyBObyBsb2NraW5n
IGlzIG5lY2Vzc2FyeSBmb3IgY2FsbCBzaXRlcyB0aGF0IGRvIG5vdCBtdXRhdGUgdGhlIGNvbnRh
aW5lcnMgYW5kIGFyZSBub3Qgb24gdGhlIEdDIHRocmVhZC4KKyAgICBjb25zdCBKU0RPTVN0cnVj
dHVyZU1hcCYgc3RydWN0dXJlcygpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5B
TFlTSVMgeyBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpKTsgcmV0dXJuIG1fc3RydWN0
dXJlczsgfQorICAgIGNvbnN0IEpTRE9NQ29uc3RydWN0b3JNYXAmIGNvbnN0cnVjdG9ycygpIGNv
bnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeyBBU1NFUlQoIVRocmVhZDo6
bWF5QmVHQ1RocmVhZCgpKTsgcmV0dXJuIG1fY29uc3RydWN0b3JzOyB9CisgICAgY29uc3QgRE9N
R3VhcmRlZE9iamVjdFNldCYgZ3VhcmRlZE9iamVjdHMoKSBjb25zdCBXVEZfSUdOT1JFU19USFJF
QURfU0FGRVRZX0FOQUxZU0lTIHsgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSk7IHJl
dHVybiBtX2d1YXJkZWRPYmplY3RzOyB9CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIGRvbid0IHJl
cXVpcmUgZ3JhYmJpbmcgdGhlIGdjTG9jayBmaXJzdCBhbmQgc2hvdWxkIG9ubHkgYmUgY2FsbGVk
IHdoZW4gdGhlIEhlYXAgc2F5cyB0aGF0IG11dGF0b3JzIGRvbid0IGhhdmUgdG8gYmUgZmVuY2Vk
LgorICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzKE5vTG9ja2luZ05lY2Vzc2FyeVRh
ZykgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7IEFTU0VSVCghdm0oKS5oZWFw
Lm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKTsgcmV0dXJuIG1fc3RydWN0dXJlczsgfQorICAgIEpT
RE9NQ29uc3RydWN0b3JNYXAmIGNvbnN0cnVjdG9ycyhOb0xvY2tpbmdOZWNlc3NhcnlUYWcpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeyBBU1NFUlQoIXZtKCkuaGVhcC5tdXRh
dG9yU2hvdWxkQmVGZW5jZWQoKSk7IHJldHVybiBtX2NvbnN0cnVjdG9yczsgfQorICAgIERPTUd1
YXJkZWRPYmplY3RTZXQmIGd1YXJkZWRPYmplY3RzKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgV1RG
X0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyB7IEFTU0VSVCghdm0oKS5oZWFwLm11dGF0
b3JTaG91bGRCZUZlbmNlZCgpKTsgcmV0dXJuIG1fZ3VhcmRlZE9iamVjdHM7IH0KIAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIApA
QCAtODAsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdo
dEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKTsK
IAotICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygpOworICAgIHZvaWQgY2xlYXJET01H
dWFyZGVkT2JqZWN0cygpIGNvbnN0OwogCiAgICAgSlNDOjpKU1Byb3h5JiBwcm94eSgpIGNvbnN0
IHsgQVNTRVJUKG1fcHJveHkpOyByZXR1cm4gKm1fcHJveHkuZ2V0KCk7IH0KIApAQCAtMTE1LDEz
ICsxMjMsMTMgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNl
KiBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNN
b2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OlNv
dXJjZU9yaWdpbiYpOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVh
dGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVs
ZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU01vZHVsZVJlY29yZCosIEpTQzo6SlNWYWx1
ZSk7CiAKLSAgICBKU0RPTVN0cnVjdHVyZU1hcCBtX3N0cnVjdHVyZXM7Ci0gICAgSlNET01Db25z
dHJ1Y3Rvck1hcCBtX2NvbnN0cnVjdG9yczsKLSAgICBET01HdWFyZGVkT2JqZWN0U2V0IG1fZ3Vh
cmRlZE9iamVjdHM7CisgICAgSlNET01TdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9nY0xvY2spOworICAgIEpTRE9NQ29uc3RydWN0b3JNYXAgbV9jb25zdHJ1
Y3RvcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2djTG9jayk7CisgICAgRE9NR3VhcmRlZE9iamVj
dFNldCBtX2d1YXJkZWRPYmplY3RzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9nY0xvY2spOwogCiAg
ICAgUmVmPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAgICB1aW50OF90IG1fd29ybGRJc05v
cm1hbDsKLSAgICBVbmNoZWNrZWRMb2NrIG1fZ2NMb2NrOworICAgIExvY2sgbV9nY0xvY2s7CiAg
ICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU1Byb3h5PiBtX3Byb3h5OwogCiBwcml2YXRlOgpA
QCAtMTM4LDE0ICsxNDYsMTkgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9y
Q2xhc3M+CiBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0RE9NQ29uc3RydWN0b3IoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgaWYgKEpT
Qzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yID0gY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+
KGdsb2JhbE9iamVjdCkuY29uc3RydWN0b3JzKE5vTG9ja2luZ05lY2Vzc2FyeSkuZ2V0KENvbnN0
cnVjdG9yQ2xhc3M6OmluZm8oKSkuZ2V0KCkpCisgICAgLy8gTm8gbG9ja2luZyBpcyBuZWNlc3Nh
cnkgdW5sZXNzIHdlIG5lZWQgdG8gYWRkIGEgbmV3IGNvbnN0cnVjdG9yIHRvIEpTRE9NR2xvYmFs
T2JqZWN0Ojpjb25zdHJ1Y3RvcnMoKS4KKyAgICBpZiAoSlNDOjpKU09iamVjdCogY29uc3RydWN0
b3IgPSBnbG9iYWxPYmplY3QuY29uc3RydWN0b3JzKCkuZ2V0KENvbnN0cnVjdG9yQ2xhc3M6Omlu
Zm8oKSkuZ2V0KCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICBKU0M6OkpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZSh2bSwgQ29uc3RydWN0
b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKHZtLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Jj4oZ2xvYmFsT2JqZWN0KSwgQ29uc3RydWN0b3JDbGFzczo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QpKSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2Jh
bE9iamVjdCkpOwotICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGds
b2JhbE9iamVjdCkuY29uc3RydWN0b3JzKE5vTG9ja2luZ05lY2Vzc2FyeSkuY29udGFpbnMoQ29u
c3RydWN0b3JDbGFzczo6aW5mbygpKSk7CisgICAgQVNTRVJUKCFnbG9iYWxPYmplY3QuY29uc3Ry
dWN0b3JzKCkuY29udGFpbnMoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKSk7CiAgICAgSlNDOjpX
cml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKICAgICBKU0RPTUdsb2JhbE9iamVjdCYg
bXV0YWJsZUdsb2JhbE9iamVjdCA9IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QmPihnbG9i
YWxPYmplY3QpOwotICAgIGF1dG8gbG9ja2VyID0gSlNDOjpsb2NrRHVyaW5nTWFya2luZyh2bS5o
ZWFwLCBtdXRhYmxlR2xvYmFsT2JqZWN0LmdjTG9jaygpKTsKLSAgICBtdXRhYmxlR2xvYmFsT2Jq
ZWN0LmNvbnN0cnVjdG9ycyhsb2NrZXIpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCksIHRl
bXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsK
KyAgICBpZiAodm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkgeworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbXV0YWJsZUdsb2JhbE9iamVjdC5nY0xvY2soKSB9OworICAgICAgICBtdXRh
YmxlR2xvYmFsT2JqZWN0LmNvbnN0cnVjdG9ycygpLmFkZChDb25zdHJ1Y3RvckNsYXNzOjppbmZv
KCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmplY3QsIGNvbnN0cnVj
dG9yKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKyAgICBtdXRhYmxlR2xv
YmFsT2JqZWN0LmNvbnN0cnVjdG9ycyhOb0xvY2tpbmdOZWNlc3NhcnkpLmFkZChDb25zdHJ1Y3Rv
ckNsYXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sICZnbG9iYWxPYmpl
Y3QsIGNvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuY3BwCmluZGV4IGE4
MzU5MDMzODFhNWZlMGQxZTY5ZDA1ODc0OWM2YjEwYWE1ZDY4YjYuLjZlY2MxZmZiMWVkZDI4Y2I0
MTQwYzhkMDViYTRjMzNkOGRiYjQ3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmNwcApAQCAtMzUsOSArMzUsMTMgQEAgRE9NR3VhcmRl
ZE9iamVjdDo6RE9NR3VhcmRlZE9iamVjdChKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU0NlbGwmIGd1YXIKICAgICAsIG1fZ3VhcmRlZCgmZ3VhcmRlZCkKICAgICAsIG1fZ2xvYmFs
T2JqZWN0KCZnbG9iYWxPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFy
a2luZyhnbG9iYWxPYmplY3Qudm0oKS5oZWFwLCBnbG9iYWxPYmplY3QuZ2NMb2NrKCkpOwogICAg
IGdsb2JhbE9iamVjdC52bSgpLmhlYXAud3JpdGVCYXJyaWVyKCZnbG9iYWxPYmplY3QsICZndWFy
ZGVkKTsKLSAgICBnbG9iYWxPYmplY3QuZ3VhcmRlZE9iamVjdHMobG9ja2VyKS5hZGQodGhpcyk7
CisgICAgaWYgKGdsb2JhbE9iamVjdC52bSgpLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkp
IHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbE9iamVjdC5nY0xvY2soKSB9OworICAg
ICAgICBnbG9iYWxPYmplY3QuZ3VhcmRlZE9iamVjdHMoKS5hZGQodGhpcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZ2xvYmFsT2JqZWN0Lmd1YXJkZWRPYmplY3RzKE5vTG9ja2luZ05l
Y2Vzc2FyeSkuYWRkKHRoaXMpOwogfQogCiBET01HdWFyZGVkT2JqZWN0Ojp+RE9NR3VhcmRlZE9i
amVjdCgpCkBAIC00OCwxNCArNTIsMjMgQEAgRE9NR3VhcmRlZE9iamVjdDo6fkRPTUd1YXJkZWRP
YmplY3QoKQogdm9pZCBET01HdWFyZGVkT2JqZWN0OjpjbGVhcigpCiB7CiAgICAgQVNTRVJUKCFt
X2d1YXJkZWQgfHwgbV9nbG9iYWxPYmplY3QpOwotICAgIGlmIChtX2d1YXJkZWQgJiYgbV9nbG9i
YWxPYmplY3QpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyhtX2ds
b2JhbE9iamVjdC0+dm0oKS5oZWFwLCBtX2dsb2JhbE9iamVjdC0+Z2NMb2NrKCkpOwotICAgICAg
ICBtX2dsb2JhbE9iamVjdC0+Z3VhcmRlZE9iamVjdHMobG9ja2VyKS5yZW1vdmUodGhpcyk7Ci0g
ICAgfQorICAgIHJlbW92ZUZyb21HbG9iYWxPYmplY3QoKTsKICAgICBtX2d1YXJkZWQuY2xlYXIo
KTsKICAgICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOwogfQogCit2b2lkIERPTUd1YXJkZWRPYmpl
Y3Q6OnJlbW92ZUZyb21HbG9iYWxPYmplY3QoKQoreworICAgIGlmICghbV9ndWFyZGVkIHx8ICFt
X2dsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkpIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZ2xvYmFsT2JqZWN0LT5nY0xvY2soKSB9OworICAgICAgICBtX2dsb2JhbE9iamVj
dC0+Z3VhcmRlZE9iamVjdHMoKS5yZW1vdmUodGhpcyk7CisgICAgfSBlbHNlCisgICAgICAgIG1f
Z2xvYmFsT2JqZWN0LT5ndWFyZGVkT2JqZWN0cyhOb0xvY2tpbmdOZWNlc3NhcnkpLnJlbW92ZSh0
aGlzKTsKK30KKwogdm9pZCBET01HdWFyZGVkT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsK
ICAgICBBY3RpdmVET01DYWxsYmFjazo6Y29udGV4dERlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAppbmRleCA3YjUyOTBhZDNm
YjM1OWQ0YWE1MjM1NmFkZGUwYjRiODRlNWE1ZmI2Li5lNTc2ZmYxYTY1NzE3ZDBiMjVjOTU0MTRh
ZTg4MWI0ZjNlNGVhMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUd1YXJkZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUd1YXJkZWRPYmplY3QuaApAQCAtNTUsNiArNTUsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBKU0M6
OldlYWs8SlNDOjpKU0NlbGw+IG1fZ3VhcmRlZDsKICAgICBKU0M6OldlYWs8SlNET01HbG9iYWxP
YmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworCitwcml2YXRlOgorICAgIHZvaWQgcmVtb3ZlRnJvbUds
b2JhbE9iamVjdCgpOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERPTUd1YXJk
ZWQgOiBwdWJsaWMgRE9NR3VhcmRlZE9iamVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5jcHAKaW5kZXggMmQ3MDMwNmJkODc3MjZlZDg3Mjgz
YWIzMTBkYTM2MmUzMWVkYzczOS4uNzMzOTY1YzM1Y2ZiZTEyYWEwNzI3MjFmOTUzMmJjZDM4OTE4
NTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNh
Y2hlLmNwcApAQCAtMjcsMTggKzI3LDIyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCi1TdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKK1N0
cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogewotICAgIEpTRE9NU3Ry
dWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0LnN0cnVjdHVyZXMoTm9Mb2NraW5n
TmVjZXNzYXJ5KTsKLSAgICByZXR1cm4gc3RydWN0dXJlcy5nZXQoY2xhc3NJbmZvKS5nZXQoKTsK
KyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LnN0cnVjdHVyZXMoKS5nZXQoY2xhc3NJbmZvKS5nZXQo
KTsKIH0KIAogU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyhnbG9iYWxPYmpl
Y3Qudm0oKS5oZWFwLCBnbG9iYWxPYmplY3QuZ2NMb2NrKCkpOwotICAgIEpTRE9NU3RydWN0dXJl
TWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0LnN0cnVjdHVyZXMobG9ja2VyKTsKLSAgICBB
U1NFUlQoIXN0cnVjdHVyZXMuY29udGFpbnMoY2xhc3NJbmZvKSk7Ci0gICAgcmV0dXJuIHN0cnVj
dHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0
LnZtKCksICZnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
KyAgICBhdXRvIGFkZFRvU3RydWN0dXJlcyA9IFtdKEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1
cmVzLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIHsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmVzLmNvbnRhaW5zKGNsYXNzSW5mbykpOworICAgICAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQo
Y2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxPYmplY3Qudm0oKSwgJmds
b2JhbE9iamVjdCwgc3RydWN0dXJlKSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIH07Cisg
ICAgaWYgKGdsb2JhbE9iamVjdC52bSgpLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkpIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGdsb2JhbE9iamVjdC5nY0xvY2soKSB9OworICAgICAg
ICByZXR1cm4gYWRkVG9TdHJ1Y3R1cmVzKGdsb2JhbE9iamVjdC5zdHJ1Y3R1cmVzKCksIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc0luZm8pOworICAgIH0KKyAgICByZXR1cm4gYWRkVG9T
dHJ1Y3R1cmVzKGdsb2JhbE9iamVjdC5zdHJ1Y3R1cmVzKE5vTG9ja2luZ05lY2Vzc2FyeSksIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc0luZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUu
aAppbmRleCAwYTFlZmFiZjk0ZTkyZTg4ODIxMTkwNzVjMDQyY2I2NzY1OTE5YzI3Li5mYTFkNTE2
YTBiMzVmYTNiNTYyYTI0Njc0Njc4NTAyNDcyYmI3MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogZ2V0Q2Fj
aGVkRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNDOjpDbGFzc0luZm8q
KTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6U3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUo
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwogV0VCQ09S
RV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpTdHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IEpTQzo6U3RydWN0dXJlKiBnZXRET01TdHJ1Y3R1cmUo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Cg==
</data>
<flag name="review"
          id="451199"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>