<?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>212981</bug_id>
          
          <creation_ts>2020-06-09 11:44:09 -0700</creation_ts>
          <short_desc>Catalyst WebKit apps continue to play audio after quitting</short_desc>
          <delta_ts>2020-06-10 17:46:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1660765</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-09 11:44:09 -0700</bug_when>
    <thetext>Catalyst WebKit apps continue to play audio after quitting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660767</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-09 11:45:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/57089471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660777</commentid>
    <comment_count>2</comment_count>
      <attachid>401458</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-09 11:56:43 -0700</bug_when>
    <thetext>Created attachment 401458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660846</commentid>
    <comment_count>3</comment_count>
      <attachid>401472</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-09 14:01:38 -0700</bug_when>
    <thetext>Created attachment 401472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660871</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-09 14:46:22 -0700</bug_when>
    <thetext>You are likely going to need to update WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd to fix the Open Source build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660876</commentid>
    <comment_count>5</comment_count>
      <attachid>401472</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-09 14:48:54 -0700</bug_when>
    <thetext>Comment on attachment 401472
Patch

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

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.h:61
&gt; +    WeakHashSet&lt;WebPageProxy&gt; m_clients;

Would have been nice to use a Client interface for this instead of making this only usable by WebPageProxy.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.h:62
&gt; +    WTF::RetainPtr&lt;RBSProcessMonitor&gt; m_processMonitor;

WTF:: should not be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660879</commentid>
    <comment_count>6</comment_count>
      <attachid>401472</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-09 14:55:12 -0700</bug_when>
    <thetext>Comment on attachment 401472
Patch

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

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:38
&gt; +static NSString* visibilityEndowment = @&quot;com.apple.frontboard.visibility&quot;;

static const

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:39
&gt; +static NSString* userfacingEndowment = @&quot;com.apple.launchservices.userfacing&quot;;

ditto.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:76
&gt; +bool EndowmentStateTracker::isApplicationForeground(pid_t pid)

I think I will be able to drop this one in a follow-up since ViewServices gets the visibility endowment and we don&apos;t need to check their host app.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:81
&gt; +bool EndowmentStateTracker::isApplicationUserFacing(pid_t pid)

Is this really needed? If not, I propose we omit it.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:86
&gt; +EndowmentStateTracker&amp; EndowmentStateTracker::singleton()

Nit: Could this be at the top of the file?

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:137
&gt; +    for (auto&amp; client : m_clients)

It is risky to not copy m_clients before iterating.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:149
&gt; +    for (auto&amp; client : m_clients)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661037</commentid>
    <comment_count>7</comment_count>
      <attachid>401501</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-09 17:57:51 -0700</bug_when>
    <thetext>Created attachment 401501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661038</commentid>
    <comment_count>8</comment_count>
      <attachid>401502</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-09 18:22:08 -0700</bug_when>
    <thetext>Created attachment 401502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661165</commentid>
    <comment_count>9</comment_count>
      <attachid>401502</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-10 08:17:47 -0700</bug_when>
    <thetext>Comment on attachment 401502
Patch

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

r=me

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:129
&gt; +    RELEASE_LOG(ViewState, &quot;%p - EndowmentStateTracker::setIsUserFacing(%s)&quot;, this, isUserFacing ? &quot;true&quot; : &quot;false&quot;);

%{public}s

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:143
&gt; +    RELEASE_LOG(ViewState, &quot;%p - EndowmentStateTracker::setIsVisible(%s)&quot;, this, isVisible ? &quot;true&quot; : &quot;false&quot;);

%{public}s

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:151
&gt; +

Extra blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661179</commentid>
    <comment_count>10</comment_count>
      <attachid>401546</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-10 09:14:21 -0700</bug_when>
    <thetext>Created attachment 401546
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661344</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-10 13:50:03 -0700</bug_when>
    <thetext>Committed r262858: &lt;https://trac.webkit.org/changeset/262858&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401546.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661372</commentid>
    <comment_count>12</comment_count>
      <attachid>401546</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 14:50:46 -0700</bug_when>
    <thetext>Comment on attachment 401546
Patch for landing

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

&gt; Source/WTF/wtf/WeakHashSet.h:159
&gt; +struct Mapper&lt;MapFunction, const WeakHashSet&lt;T&gt; &amp;, void&gt; {

Strange space here before the &quot;&amp;&quot;.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.h:49
&gt; +        virtual void isUserFacingChanged(bool) { }
&gt; +        virtual void isVisibleChanged(bool) { }

Is it helpful to pass the new values here instead of just giving a change notification?

Something about this seems unnecessarily complex. Kind of wish we just used change notification functions instead of an object. Those function could hold whatever, WeakPtr or RefPtr or whatever. And it could be a single function. Don’t need precise notifications, do we? As long as we have precise answers to isVisible and isUserFacing. Or if we do need precise notifications, what changed could be an argument to the function.

I guess the downside of adding a function is that it’s not as easy to remove. One downside of all these WeakPtr is that it’s ambiguous whether you need to call removeClient or not.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.h:69
&gt; +    bool m_isUserFacing;
&gt; +    bool m_isVisible;

Should initialize these here.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:38
&gt; +static NSString* visibilityEndowment = @&quot;com.apple.frontboard.visibility&quot;;
&gt; +static NSString* userfacingEndowment = @&quot;com.apple.launchservices.userfacing&quot;;

Should be constexpr. Should format NSString * the way we do.

&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:148
&gt; +    for (auto&amp; client : copyToVector(m_clients)) {
&gt; +        if (client)
&gt; +            client-&gt;isVisibleChanged(m_isVisible);
&gt; +    }

Seems overkill to implement this just so everybody can do ... nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661386</commentid>
    <comment_count>13</comment_count>
      <attachid>401546</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-10 15:11:43 -0700</bug_when>
    <thetext>Comment on attachment 401546
Patch for landing

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

&gt; WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd:9
&gt; +    objc-classes:    [ RBSAttribute, RBSDomainAttribute, RBSTarget, RBSAssertion, RBSProcessIdentifier, RBSProcessState, RBSProcessHandle, RBSProcessStateDescriptor, RBSProcessPredicate, RBSProcessMonitor ]

Not on EWS yet, but we now have watchOS and tvOS framework stubs too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661397</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-06-10 15:34:38 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 401546 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401546&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/WeakHashSet.h:159
&gt; &gt; +struct Mapper&lt;MapFunction, const WeakHashSet&lt;T&gt; &amp;, void&gt; {
&gt; 
&gt; Strange space here before the &quot;&amp;&quot;.

I think I copied these directly from a compiler message w.r.t. the type passed to the original Mapper functor, which is how I got the weird spacing.

&gt; &gt; Source/WebKit/UIProcess/EndowmentStateTracker.h:49
&gt; &gt; +        virtual void isUserFacingChanged(bool) { }
&gt; &gt; +        virtual void isVisibleChanged(bool) { }
&gt; 
&gt; Is it helpful to pass the new values here instead of just giving a change
&gt; notification?

I figured it couldn&apos;t hurt; clients are most likely just going to turn around and ask for that value anyway.

&gt; Something about this seems unnecessarily complex. Kind of wish we just used
&gt; change notification functions instead of an object. Those function could
&gt; hold whatever, WeakPtr or RefPtr or whatever. And it could be a single
&gt; function. Don’t need precise notifications, do we? As long as we have
&gt; precise answers to isVisible and isUserFacing. Or if we do need precise
&gt; notifications, what changed could be an argument to the function.
&gt; 
&gt; I guess the downside of adding a function is that it’s not as easy to
&gt; remove.

Yes; it works as a pattern for single-use callbacks. It&apos;s more difficult for notifications. Just like -[NSNotificationCenter addObserver:...], you&apos;d need to do something like returning a token which could be used to remove the object later.

But indeed, something like this would let us do client callbacks without having to inherit from (and therefore expose to everyone else) the client class to do so. You could have something like:

```
class NotifyingClassClient : CanMakeWeakPtr&lt;NotifyingClassClient&gt; {
public:
    void setSomethingChangedCallback(Function&lt;void(bool)&gt;&amp;&amp; callback) { m_callback = WTFMove(callback);
private:
    friend class NotifyingClass;
    void somethingChanged(bool change) final { if (m_callback) m_callback(change); }
    Function&lt;void(bool)&gt; m_callback;
};

class NotifyingClass {
public:
    void addClient(Client&amp;);
private:
    WeakHashSet&lt;Client&gt; m_clients;
};
```

Then in the subscriber&apos;s header file:

```
class NotifyingClassClient;

class ConcreteClass {
    Ref&lt;NotifyingClassClient&gt; m_client;
};
```

And in the implementation file:

```
#include &quot;NotifyingClass&quot;

ConcreteClass::ConcreteClass()
  : m_client(adoptRef(new NotifyingClassClient())
{
  m_client-&gt;setSomethingChangedFunction([this] (bool change) { handleSomethingChanged(change); });
};
```

Cancelling the callback would mean throwing away the m_client object. The ConcreteClass doesn&apos;t need to expose NotifyingClass.h in its own header. It can name the callback function whatever it wants.

&gt; One downside of all these WeakPtr is that it’s ambiguous whether you
&gt; need to call removeClient or not.

Seems like a style issue: 1) client objects should always be stored as WeakPtrs.

&gt; &gt; Source/WebKit/UIProcess/EndowmentStateTracker.h:69
&gt; &gt; +    bool m_isUserFacing;
&gt; &gt; +    bool m_isVisible;
&gt; 
&gt; Should initialize these here.

These get initialized by the only constructor, so they don&apos;t need initialization in the header.

&gt; &gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:38
&gt; &gt; +static NSString* visibilityEndowment = @&quot;com.apple.frontboard.visibility&quot;;
&gt; &gt; +static NSString* userfacingEndowment = @&quot;com.apple.launchservices.userfacing&quot;;
&gt; 
&gt; Should be constexpr. Should format NSString * the way we do.

`const NSString*` definitely caused problems passing these values into ObjC methods which take NSString*, but I can try constexpr.

&gt; &gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:148
&gt; &gt; +    for (auto&amp; client : copyToVector(m_clients)) {
&gt; &gt; +        if (client)
&gt; &gt; +            client-&gt;isVisibleChanged(m_isVisible);
&gt; &gt; +    }
&gt; 
&gt; Seems overkill to implement this just so everybody can do ... nothing.

Chris is going to use this method in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661401</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-10 15:39:07 -0700</bug_when>
    <thetext>(In reply to EWS from comment #11)
&gt; Committed r262858: &lt;https://trac.webkit.org/changeset/262858&gt;
&gt; 
&gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; attachment 401546 [details].

macOS build fix:
Committed r262866: &lt;https://trac.webkit.org/changeset/262866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661417</commentid>
    <comment_count>16</comment_count>
      <attachid>401546</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 16:15:02 -0700</bug_when>
    <thetext>Comment on attachment 401546
Patch for landing

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

&gt;&gt;&gt; Source/WebKit/UIProcess/EndowmentStateTracker.mm:38
&gt;&gt;&gt; +static NSString* userfacingEndowment = @&quot;com.apple.launchservices.userfacing&quot;;
&gt;&gt; 
&gt;&gt; Should be constexpr. Should format NSString * the way we do.
&gt; 
&gt; `const NSString*` definitely caused problems passing these values into ObjC methods which take NSString*, but I can try constexpr.

Yes, &quot;const NSString *&quot; is wrong. &quot;constexpr NSString *&quot; is best. And if we want to do what we might think &quot;const NSString *&quot; does, we can do  &quot;NSString * const&quot;, but that’s unnecessary if we use constexpr instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661443</commentid>
    <comment_count>17</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-10 17:04:21 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661444</commentid>
    <comment_count>18</comment_count>
      <attachid>401607</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-10 17:04:23 -0700</bug_when>
    <thetext>Created attachment 401607
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661462</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-10 17:46:56 -0700</bug_when>
    <thetext>Committed r262885: &lt;https://trac.webkit.org/changeset/262885&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401607.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401458</attachid>
            <date>2020-06-09 11:56:43 -0700</date>
            <delta_ts>2020-06-09 14:01:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212981-20200609115642.patch</filename>
            <type>text/plain</type>
            <size>25157</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlNDNkMmVhODQ1NDBiZWNm
M2ZlZDAwZjc1YTFlMzdmMDE5NmFjYzEuLjdjYTdiYjZiNjE2MmU2ZjM5NmQyNjVhYzMyYWFiZmE1
YmFhZWUyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDYtMDkgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMg
Y29udGludWUgdG8gcGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NzA4OTQ3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSdW5uaW5nQm9hcmQgd2lsbCB0cmFjayB3aGV0aGVyIGEgcHJvY2VzcyAoYW5kIGl0
J3MgYXNzb2NpYXRlZCBjaGlsZCBwcm9jZXNzZXMpIGFyZSAidXNlci12aXNpYmxlIiBieQorICAg
ICAgICBncmFudGluZyB0aG9zZSBwcm9jZXNzZXMgYW4gImVuZG93bWVudCIsIHNpbWlsYXIgdG8g
dGhlIGV4aXN0aW5nIGVuZG93bWVudCBmb3IgYXBwbGljYXRpb24gdmlzaWJpbGl0eS4KKyAgICAg
ICAgVHJhY2sgY2hhbmdlcyB0byB0aGVzZSBlbmRvd21lbnRzIHVzaW5nIGEgUkJTUHJvY2Vzc01v
bml0b3IsIGFuZCBmb3IgQ2F0YWx5c3QgYXBwcywgcmVhY3QgdG8gbG9zaW5nIHRoZQorICAgICAg
ICAidXNlci12aXNpYmxlIiBlbmRvd21lbnQgYnkgc3VzcGVuZGluZyBhbGwgbWVkaWEgcGxheWJh
Y2suCisKKyAgICAgICAgTW92ZSBhbGwgdGhlIGVuZG93bWVudC1yZWxhdGVkIGNvZGUgaW50byBh
IG5ldyBjbGFzcywgRW5kb3dtZW50U3RhdGVUcmFja2VyLCB3aGljaCBpcyBhIHNpbmdsZXRvbiBv
YmplY3QKKyAgICAgICAgdGhhdCBjYW4gaGF2ZSBtdWxpdHBsZSBXZWJQYWdlUHJveHkgY2xpZW50
cy4gVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlIHByZXZpb3VzbHkgZ2xvYmFsIHN0YXRpYworICAg
ICAgICBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCgpIGZ1bmN0aW9uIHRvIHJlZmVyIHRvIEVuZG93
bWVudFN0YXRlVHJhY2tlciBpbnN0ZWFkLgorCisgICAgICAgIERyaXZlLWJ5IGZpeDogbW92ZSBz
b21lIGlPUy1vbmx5IGZ1bmN0aW9ucyBpbiBXZWJQYWdlUHJveHkuY3BwIGludG8gV2ViUGFnZVBy
b3h5SU9TLm1tLgorCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2Vy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6QXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIpOgorICAgICAgICAoV2ViS2l0Ojppc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjppc1Zpc2libGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzVXNlckZhY2luZyBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUZvclBJRCk6CisgICAgICAgIChXZWJLaXQ6OkVu
ZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvbkZvcmVncm91bmQpOgorICAgICAgICAo
V2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGljYXRpb25Vc2VyRmFjaW5nKToK
KyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OkVuZG93bWVudFN0YXRlVHJhY2tl
cik6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6YWRkQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpyZW1vdmVDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVXNlckZhY2luZyk6
CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNWaXNpYmxlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmlzQXBwbGljYXRpb25WaXNpYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzV2ls
bEJlY29tZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vz
c1dpbGxCZWNvbWVGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpp
c1VzZXJGYWNpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1Zp
c2libGVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMC0wNi0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBIaWRlIHRoZSBQaVAgYnV0dG9uIGluIGZ1bGxzY3JlZW4gbW9kZSBpZiBQaVAg
aXMgZGlzYWJsZWQgaW4gcHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCmluZGV4IDNjZDJhMTViODk5NDE5OWFjZmE3OWVl
M2M3YjcyN2Y4ODY4MDJmY2YuLmY1MWYxNzhjOGIwNjQ3ZWYzZWYwYjAwNjVhZjQ4OTMyZmRjNDg4
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVU
cmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIuaApAQCAtNzUsNyArNzUsNiBAQCBlbnVtIGNsYXNzIEFwcGxpY2F0aW9uVHlwZSB7CiB9
OwogCiBBcHBsaWNhdGlvblR5cGUgYXBwbGljYXRpb25UeXBlKFVJV2luZG93ICopOwotYm9vbCBp
c0FwcGxpY2F0aW9uRm9yZWdyb3VuZChwaWRfdCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5tbQppbmRleCBjNDI5ZGRhMjc0
MWI1ODcwODBlZjc0NTJiY2FkODYyMTA1OTg5MDQwLi5mZmEzNWRkNjE0Zjg0NDNmMTA5MDZkZWJm
OWZjMDg5OTEzOTBiZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
aWNhdGlvblN0YXRlVHJhY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
aWNhdGlvblN0YXRlVHJhY2tlci5tbQpAQCAtMjksOCArMjksOCBAQAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAKICNpbXBvcnQgIkFzc2VydGlvblNlcnZpY2VzU1BJLmgiCisjaW1wb3J0ICJF
bmRvd21lbnRTdGF0ZVRyYWNrZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIlJ1
bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CkBA
IC0xNDIsNyArMTQyLDcgQEAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxpY2F0aW9uU3Rh
dGVUcmFja2VyKFVJVmlldyAqdmlldywgU0VMIGRpZEVudGVyQmFja2cKICAgICAgICAgcGlkX3Qg
YXBwbGljYXRpb25QSUQgPSBzZXJ2aWNlVmlld0NvbnRyb2xsZXIuX2hvc3RQcm9jZXNzSWRlbnRp
ZmllcjsKICAgICAgICAgQVNTRVJUKGFwcGxpY2F0aW9uUElEKTsKIAotICAgICAgICBtX2lzSW5C
YWNrZ3JvdW5kID0gIWlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kKGFwcGxpY2F0aW9uUElEKTsKKyAg
ICAgICAgbV9pc0luQmFja2dyb3VuZCA9ICFFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGlj
YXRpb25Gb3JlZ3JvdW5kKGFwcGxpY2F0aW9uUElEKTsKIAogICAgICAgICAvLyBXb3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vMzQwMjg5MjE+LiBJZiB0aGUgaG9zdCBhcHBsaWNhdGlvbiBp
cyBTdG9yZUtpdFVJU2VydmljZSB0aGVuIGl0IGlzIGFsc28gYSBWaWV3U2VydmljZQogICAgICAg
ICAvLyBhbmQgaXMgYWx3YXlzIGluIHRoZSBiYWNrZ3JvdW5kLiBXZSBuZWVkIHRvIHRyZWF0IFN0
b3JlS2l0VUlTZXJ2aWNlIGFzIGZvcmVncm91bmQgZm9yIHRoZSBwdXJwb3NlIG9mIHByb2Nlc3Mg
c3VzcGVuc2lvbgpAQCAtMTY2LDM0ICsxNjYsNiBAQCBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6
QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoVUlWaWV3ICp2aWV3LCBTRUwgZGlkRW50ZXJCYWNrZwog
ICAgIH0KIH0KIAotYm9vbCBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChwaWRfdCBwaWQpCi17Ci0g
ICAgUkJTUHJvY2Vzc0lkZW50aWZpZXIgKnByb2Nlc3NJZGVudGlmaWVyID0gW1JCU1Byb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50aWZpZXJXaXRoUGlkOnBpZF07Ci0gICAgaWYgKCFwcm9jZXNzSWRlbnRp
ZmllcikgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3VzcGVuc2lvbiwgImlz
QXBwbGljYXRpb25Gb3JlZ3JvdW5kOiBGYWlsZWQgdG8gY29uc3RydWN0IFJCU1Byb2Nlc3NJZGVu
dGlmaWVyIGZyb20gUElEICVkIiwgcGlkKTsKLSAgICAgICAgLy8gV2UgYXNzdW1lIGZvcmVncm91
bmQgd2hlbiB1bmFibGUgdG8gZGV0ZXJtaW5lIHN0YXRlIHRvIG1haW50YWluIHByZS1leGlzdGlu
ZyBiZWhhdmlvciBhbmQgdG8gYXZvaWQKLSAgICAgICAgLy8gbm90IHJlbmRlcmluZyBhbnl0aGlu
ZyB3aGVuIHdlIGZhaWwuCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOwotICAgIFJCU1Byb2Nlc3NIYW5kbGUgKnByb2Nlc3NIYW5kbGUgPSBb
UkJTUHJvY2Vzc0hhbmRsZSBoYW5kbGVGb3JJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyIGVy
cm9yOiZlcnJvcl07Ci0gICAgaWYgKCFwcm9jZXNzSGFuZGxlKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiaXNBcHBsaWNhdGlvbkZvcmVncm91bmQ6IEZh
aWxlZCB0byBnZXQgUkJTUHJvY2Vzc0hhbmRsZSBmb3IgcHJvY2VzcyB3aXRoIFBJRCAlZCwgZXJy
b3I6ICV7cHVibGljfUAiLCBwaWQsIGVycm9yKTsKLSAgICAgICAgLy8gV2UgYXNzdW1lIGZvcmVn
cm91bmQgd2hlbiB1bmFibGUgdG8gZGV0ZXJtaW5lIHN0YXRlIHRvIG1haW50YWluIHByZS1leGlz
dGluZyBiZWhhdmlvciBhbmQgdG8gYXZvaWQKLSAgICAgICAgLy8gbm90IHJlbmRlcmluZyBhbnl0
aGluZyB3aGVuIHdlIGZhaWwuCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFJC
U1Byb2Nlc3NTdGF0ZSAqc3RhdGUgPSBwcm9jZXNzSGFuZGxlLmN1cnJlbnRTdGF0ZTsKLSAgICBp
ZiAoc3RhdGUudGFza1N0YXRlICE9IFJCU1Rhc2tTdGF0ZVJ1bm5pbmdTY2hlZHVsZWQpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJpc0FwcGxpY2F0aW9u
Rm9yZWdyb3VuZDogUHJvY2VzcyB3aXRoIFBJRCAlZCBpcyBub3QgcnVubmluZyIsIHBpZCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gW1tzdGF0ZSBlbmRvd21l
bnROYW1lc3BhY2VzXSBjb250YWluc09iamVjdDpAImNvbS5hcHBsZS5mcm9udGJvYXJkLnZpc2li
aWxpdHkiXTsKLX0KLQogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6On5BcHBsaWNhdGlvblN0YXRl
VHJhY2tlcigpCiB7CiAgICAgUkVMRUFTRV9MT0coVmlld1N0YXRlLCAiJXAgLSB+QXBwbGljYXRp
b25TdGF0ZVRyYWNrZXIiLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5k
b3dtZW50U3RhdGVUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhjYzJiZDI4NzM2YzI5NmRiMjA5MWIx
OGQ1YzAxOGU3Y2QwZjViNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgPHd0
Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvV2Vh
a0hhc2hTZXQuaD4KKworT0JKQ19DTEFTUyBSQlNQcm9jZXNzTW9uaXRvcjsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgRW5kb3dtZW50U3RhdGVU
cmFja2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgRW5kb3dtZW50U3RhdGVUcmFja2VyJiBzaW5nbGV0b24oKTsKKyAgICB+RW5kb3dtZW50U3Rh
dGVUcmFja2VyKCk7CisKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNW
aXNpYmxlOyB9CisgICAgYm9vbCBpc1VzZXJGYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzVXNl
ckZhY2luZzsgfQorCisgICAgdm9pZCBhZGRDbGllbnQoV2ViUGFnZVByb3h5Jik7CisgICAgdm9p
ZCByZW1vdmVDbGllbnQoV2ViUGFnZVByb3h5Jik7CisKKyAgICBzdGF0aWMgYm9vbCBpc0FwcGxp
Y2F0aW9uRm9yZWdyb3VuZChwaWRfdCk7CisgICAgc3RhdGljIGJvb2wgaXNBcHBsaWNhdGlvblVz
ZXJGYWNpbmcocGlkX3QpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ry
b3llZDxFbmRvd21lbnRTdGF0ZVRyYWNrZXI+OworICAgIEVuZG93bWVudFN0YXRlVHJhY2tlcigp
OworICAgIHZvaWQgc2V0SXNVc2VyRmFjaW5nKGJvb2wpOworICAgIHZvaWQgc2V0SXNWaXNpYmxl
KGJvb2wpOworCisgICAgV2Vha0hhc2hTZXQ8V2ViUGFnZVByb3h5PiBtX2NsaWVudHM7CisgICAg
V1RGOjpSZXRhaW5QdHI8UkJTUHJvY2Vzc01vbml0b3I+IG1fcHJvY2Vzc01vbml0b3I7CisgICAg
Ym9vbCBtX2lzVXNlckZhY2luZzsKKyAgICBib29sIG1faXNWaXNpYmxlOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRl
VHJhY2tlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tl
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNDk5ZDZmYmE3MjNiZjkyMTRmNmYyYzVjMmE0ZWU2MjdiNjZkOGM0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3Rh
dGVUcmFja2VyLm1tCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkVuZG93bWVudFN0YXRlVHJhY2tlci5oIgorCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIgorI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIE5TU3Ry
aW5nKiB2aXNpYmlsaXR5RW5kb3dtZW50ID0gQCJjb20uYXBwbGUuZnJvbnRib2FyZC52aXNpYmls
aXR5IjsKK3N0YXRpYyBOU1N0cmluZyogdXNlcmZhY2luZ0VuZG93bWVudCA9IEAiY29tLmFwcGxl
LmxhdW5jaHNlcnZpY2VzLnVzZXJmYWNpbmciOworCitzdGF0aWMgUkJTUHJvY2Vzc0hhbmRsZSAq
aGFuZGxlRm9yUElEKHBpZF90IHBpZCkKK3sKKyAgICBSQlNQcm9jZXNzSWRlbnRpZmllciAqcHJv
Y2Vzc0lkZW50aWZpZXIgPSBbUkJTUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcldpdGhQaWQ6
cGlkXTsKKyAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiaGFuZGxlRm9yUElEOiBGYWlsZWQgdG8gY29uc3Ry
dWN0IFJCU1Byb2Nlc3NJZGVudGlmaWVyIGZyb20gUElEICVkIiwgcGlkKTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBSQlNQcm9j
ZXNzSGFuZGxlICpwcm9jZXNzSGFuZGxlID0gW1JCU1Byb2Nlc3NIYW5kbGUgaGFuZGxlRm9ySWRl
bnRpZmllcjpwcm9jZXNzSWRlbnRpZmllciBlcnJvcjomZXJyb3JdOworICAgIGlmICghcHJvY2Vz
c0hhbmRsZSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3VzcGVuc2lvbiwg
ImVuZG93bWVudHNGb3JQaWQ6IEZhaWxlZCB0byBnZXQgUkJTUHJvY2Vzc0hhbmRsZSBmb3IgcHJv
Y2VzcyB3aXRoIFBJRCAlZCwgZXJyb3I6ICV7cHVibGljfUAiLCBwaWQsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvY2Vzc0hhbmRsZTsKK30KKwor
c3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICplbmRvd21lbnRzRm9ySGFuZGxlKFJCU1Byb2Nlc3NI
YW5kbGUgKnByb2Nlc3NIYW5kbGUpCit7CisgICAgaWYgKCFwcm9jZXNzSGFuZGxlKSB7CisgICAg
ICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4gdW5hYmxlIHRvIGRldGVybWluZSBzdGF0
ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZpb3IgYW5kIHRvIGF2b2lkCisgICAgICAg
IC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3ZSBmYWlsLgorICAgICAgICByZXR1cm4g
W05TU2V0IHNldFdpdGhPYmplY3RzOnZpc2liaWxpdHlFbmRvd21lbnQsIHVzZXJmYWNpbmdFbmRv
d21lbnQsIG5pbF07CisgICAgfQorCisgICAgUkJTUHJvY2Vzc1N0YXRlICpzdGF0ZSA9IHByb2Nl
c3NIYW5kbGUuY3VycmVudFN0YXRlOworICAgIGlmIChzdGF0ZS50YXNrU3RhdGUgIT0gUkJTVGFz
a1N0YXRlUnVubmluZ1NjaGVkdWxlZCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9j
ZXNzU3VzcGVuc2lvbiwgImVuZG93bWVudHNGb3JIYW5kbGU6IFByb2Nlc3Mgd2l0aCBQSUQgJWQg
aXMgbm90IHJ1bm5pbmciLCBwcm9jZXNzSGFuZGxlLnBpZCk7CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorCisgICAgcmV0dXJuIFtzdGF0ZSBlbmRvd21lbnROYW1lc3BhY2VzXTsKK30KKwor
Ym9vbCBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kKHBpZF90
IHBpZCkKK3sKKyAgICByZXR1cm4gW2VuZG93bWVudHNGb3JIYW5kbGUoaGFuZGxlRm9yUElEKHBp
ZCkpIGNvbnRhaW5zT2JqZWN0OnZpc2liaWxpdHlFbmRvd21lbnRdOworfQorCitib29sIEVuZG93
bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvblVzZXJGYWNpbmcocGlkX3QgcGlkKQorewor
ICAgIHJldHVybiBbZW5kb3dtZW50c0ZvckhhbmRsZShoYW5kbGVGb3JQSUQocGlkKSkgY29udGFp
bnNPYmplY3Q6dXNlcmZhY2luZ0VuZG93bWVudF07Cit9CisKK0VuZG93bWVudFN0YXRlVHJhY2tl
ciYgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBhdXRv
IHRyYWNrZXIgPSBOZXZlckRlc3Ryb3llZDxFbmRvd21lbnRTdGF0ZVRyYWNrZXI+KCk7CisgICAg
cmV0dXJuIHRyYWNrZXI7Cit9CisKK0VuZG93bWVudFN0YXRlVHJhY2tlcjo6RW5kb3dtZW50U3Rh
dGVUcmFja2VyKCkKK3sKKyAgICBhdXRvIHByb2Nlc3NIYW5kbGUgPSBbUkJTUHJvY2Vzc0hhbmRs
ZSBjdXJyZW50UHJvY2Vzc107CisgICAgYXV0byBlbmRvd21lbnROYW1lc3BhY2VzID0gZW5kb3dt
ZW50c0ZvckhhbmRsZShwcm9jZXNzSGFuZGxlKTsKKworICAgIG1faXNVc2VyRmFjaW5nID0gW2Vu
ZG93bWVudE5hbWVzcGFjZXMgY29udGFpbnNPYmplY3Q6dXNlcmZhY2luZ0VuZG93bWVudF07Cisg
ICAgbV9pc1Zpc2libGUgPSBbZW5kb3dtZW50TmFtZXNwYWNlcyBjb250YWluc09iamVjdDp2aXNp
YmlsaXR5RW5kb3dtZW50XTsKKworICAgIG1fcHJvY2Vzc01vbml0b3IgPSBbUkJTUHJvY2Vzc01v
bml0b3IgbW9uaXRvcldpdGhDb25maWd1cmF0aW9uOlt0aGlzLCBwcm9jZXNzSGFuZGxlID0gcmV0
YWluUHRyKHByb2Nlc3NIYW5kbGUpXSAoaWQ8UkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZz4g
Y29uZmlnKSB7CisKKyAgICAgICAgUkJTUHJvY2Vzc1ByZWRpY2F0ZSAqcHJvY2Vzc1ByZWRpY2F0
ZSA9IFtSQlNQcm9jZXNzUHJlZGljYXRlIHByZWRpY2F0ZU1hdGNoaW5nSGFuZGxlOnByb2Nlc3NI
YW5kbGUuZ2V0KCldOworCisgICAgICAgIFJCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3IgKnN0YXRl
RGVzY3JpcHRvciA9IFtSQlNQcm9jZXNzU3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3JdOworICAg
ICAgICBzdGF0ZURlc2NyaXB0b3IuZW5kb3dtZW50TmFtZXNwYWNlcyA9IEBbdmlzaWJpbGl0eUVu
ZG93bWVudCwgdXNlcmZhY2luZ0VuZG93bWVudF07CisKKyAgICAgICAgW2NvbmZpZyBzZXRQcmVk
aWNhdGVzOkBbcHJvY2Vzc1ByZWRpY2F0ZV1dOworICAgICAgICBbY29uZmlnIHNldFN0YXRlRGVz
Y3JpcHRvcjpzdGF0ZURlc2NyaXB0b3JdOworCisgICAgICAgIFtjb25maWcgc2V0VXBkYXRlSGFu
ZGxlcjpbdGhpc10gKFJCU1Byb2Nlc3NNb25pdG9yICogX05vbm51bGwgbW9uaXRvciwgUkJTUHJv
Y2Vzc0hhbmRsZSAqIF9Ob25udWxsIHByb2Nlc3MsIFJCU1Byb2Nlc3NTdGF0ZVVwZGF0ZSAqIF9O
b25udWxsIHVwZGF0ZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGhpcywgZW5kb3dtZW50TmFtZXNwYWNlcyA9IHJldGFp
blB0cih1cGRhdGUuc3RhdGUuZW5kb3dtZW50TmFtZXNwYWNlcyldIHsKKyAgICAgICAgICAgICAg
ICBzZXRJc1VzZXJGYWNpbmcoW2VuZG93bWVudE5hbWVzcGFjZXMgY29udGFpbnNPYmplY3Q6dXNl
cmZhY2luZ0VuZG93bWVudF0pOworICAgICAgICAgICAgICAgIHNldElzVmlzaWJsZShbZW5kb3dt
ZW50TmFtZXNwYWNlcyBjb250YWluc09iamVjdDp2aXNpYmlsaXR5RW5kb3dtZW50XSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfV07Cit9CisKK3ZvaWQgRW5kb3dtZW50U3Rh
dGVUcmFja2VyOjphZGRDbGllbnQoV2ViUGFnZVByb3h5JiBjbGllbnQpCit7CisgICAgbV9jbGll
bnRzLmFkZChjbGllbnQpOworfQorCit2b2lkIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6cmVtb3Zl
Q2xpZW50KFdlYlBhZ2VQcm94eSYgY2xpZW50KQoreworICAgIG1fY2xpZW50cy5yZW1vdmUoY2xp
ZW50KTsKK30KKwordm9pZCBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVXNlckZhY2luZyhi
b29sIGlzVXNlckZhY2luZykKK3sKKyAgICBpZiAobV9pc1VzZXJGYWNpbmcgPT0gaXNVc2VyRmFj
aW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1VzZXJGYWNpbmcgPSBpc1VzZXJGYWNpbmc7
CisKKyAgICBSRUxFQVNFX0xPRyhWaWV3U3RhdGUsICIlcCAtIEVuZG93bWVudFN0YXRlVHJhY2tl
cjo6c2V0SXNVc2VyRmFjaW5nKCVzKSIsIHRoaXMsIGlzVXNlckZhY2luZyA/ICJ0cnVlIiA6ICJm
YWxzZSIpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNs
aWVudC5pc1VzZXJGYWNpbmdDaGFuZ2VkKG1faXNVc2VyRmFjaW5nKTsKK30KKwordm9pZCBFbmRv
d21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKK3sKKyAgICBp
ZiAobV9pc1Zpc2libGUgPT0gaXNWaXNpYmxlKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1Zp
c2libGUgPSBpc1Zpc2libGU7CisKKyAgICBSRUxFQVNFX0xPRyhWaWV3U3RhdGUsICIlcCAtIEVu
ZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNWaXNpYmxlKCVzKSIsIHRoaXMsIGlzVmlzaWJsZSA/
ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
CisgICAgICAgIGNsaWVudC5pc1Zpc2libGVDaGFuZ2VkKG1faXNWaXNpYmxlKTsKK30KKworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
ZjEwMTFiYWNlMmE1M2M5M2ExNDFlNzljNGIzNmE2YTI0NzFkMDM2YS4uOWY4YmZkMjg1YTdhY2Ji
OTlhZDI0NzAyZDdjZDA2YzNiOTc4ODkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC01MjUsNiArNTI1LDggQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYK
ICAgICAKICAgICBpZiAobV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpLT5zZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRlc3RpbmcoKSkKICAgICAgICAgZGlzYWJsZVNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1Byb2Nlc3MoKTsKKworICAgIEVuZG93bWVudFN0
YXRlVHJhY2tlcjo6c2luZ2xldG9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC01NjYsNiArNTY4LDEwIEBAIFdlYlBhZ2VQcm94eTo6fldlYlBh
Z2VQcm94eSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIHdlYlBhZ2VQcm94eUNvdW50ZXIuZGVjcmVt
ZW50KCk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgRW5kb3dtZW50
U3RhdGVUcmFja2VyOjpzaW5nbGV0b24oKS5yZW1vdmVDbGllbnQoKnRoaXMpOworI2VuZGlmCiB9
CiAKIC8vIEZJWE1FOiBTaG91bGQgcmV0dXJuIGEgY29uc3QgUGFnZUNsaWVudCYgYW5kIGFkZCBh
IHNlcGFyYXRlIG5vbi1jb25zdApAQCAtNzQ2MiwyOSArNzQ2OCw2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wQWxsVVJMU2NoZW1lVGFza3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAg
ICAgICBoYW5kbGVyLT5zdG9wQWxsVGFza3NGb3JQYWdlKCp0aGlzLCBwcm9jZXNzKTsKIH0KIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi12b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxC
ZWNvbWVTdXNwZW5kZWQoKQotewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9oYXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRlZCA9IG1fcGFn
ZUxvYWRTdGF0ZS5uZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCk7Ci0gICAgaWYgKG1faGFzTmV0
d29ya1JlcXVlc3RzT25TdXNwZW5kZWQpCi0gICAgICAgIHNldE5ldHdvcmtSZXF1ZXN0c0luUHJv
Z3Jlc3MoZmFsc2UpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVG
b3JlZ3JvdW5kKCkKLXsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkKSB7Ci0gICAg
ICAgIHNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3ModHJ1ZSk7Ci0gICAgICAgIG1faGFzTmV0
d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgPSBmYWxzZTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVh
c29uKQogewogICAgIG1fbWFpbkZyYW1lID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggODcwNjRjZmNmNjdjNWE4MjczOWI0MTgzZjhiYjg5OTVmOWU5
MTc4ZC4uYTg5NzEzMzU1OTJjODhiY2I4NDJkY2Y2MDhhODcyMDRlYWE0ZTU0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMSw2ICsxMjEsNyBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNp
bmNsdWRlICJFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJHZXN0dXJlVHlwZXMu
aCIKICNpbmNsdWRlICJXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCIKICNlbmRpZgpAQCAtMTE4
Myw2ICsxMTg0LDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9p
ZCBwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCgpOwogICAgIHZvaWQgcHJvY2Vzc1dpbGxCZWNv
bWVGb3JlZ3JvdW5kKCk7CisgICAgdm9pZCBpc1VzZXJGYWNpbmdDaGFuZ2VkKGJvb2wpOworICAg
IHZvaWQgaXNWaXNpYmxlQ2hhbmdlZChib29sKTsKICNlbmRpZgogCiAjaWYgSEFWRShWSVNJQklM
SVRZX1BST1BBR0FUSU9OX1ZJRVcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggOWJhZGVjYjJhNDIyYzgzN2M1ZDMzZTIyYTQ0NDY3
YjgxNTliNGEzNy4uMzg3OWFiZDE1YTY0M2IwY2JlMjY2ZjlmNTIxYmExZTY2ZGVmN2QzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpA
QCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93
bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAiRW5k
b3dtZW50U3RhdGVUcmFja2VyLmgiCiAjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0
ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIgogI2ltcG9ydCAiTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudC5oIgpAQCAtMTY2LDcgKzE2Nyw3IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6
OmlzQXBwbGljYXRpb25WaXNpYmxlKCkKICAgICBwaWRfdCBhcHBsaWNhdGlvblBJRCA9IHNlcnZp
Y2VWaWV3Q29udHJvbGxlci5faG9zdFByb2Nlc3NJZGVudGlmaWVyOwogICAgIEFTU0VSVChhcHBs
aWNhdGlvblBJRCk7CiAKLSAgICByZXR1cm4gaXNBcHBsaWNhdGlvbkZvcmVncm91bmQoYXBwbGlj
YXRpb25QSUQpOworICAgIHJldHVybiBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGljYXRp
b25Gb3JlZ3JvdW5kKGFwcGxpY2F0aW9uUElEKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6
aXNWaWV3SW5XaW5kb3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggNjE0ZGNiZjM3YzA0NWRhOGI0OTgyY2M4ZGEzODU1MGExMmJlMjQ3
ZC4uZWE1ZTRlZmQyZGQxM2YxN2IyODFmOTgzOTQ2NTk3Y2I4NDc4ZGU1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNjAwLDYgKzE2
MDAsNDQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxPcGVuQXBwTGluaygpCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCgpCit7Cisg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hh
c05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkID0gbV9wYWdlTG9hZFN0YXRlLm5ldHdvcmtSZXF1
ZXN0c0luUHJvZ3Jlc3MoKTsKKyAgICBpZiAobV9oYXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRl
ZCkKKyAgICAgICAgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhmYWxzZSk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKQoreworICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1faGFz
TmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQpIHsKKyAgICAgICAgc2V0TmV0d29ya1JlcXVlc3Rz
SW5Qcm9ncmVzcyh0cnVlKTsKKyAgICAgICAgbV9oYXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRl
ZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmlzVXNlckZhY2luZ0No
YW5nZWQoYm9vbCBpc1VzZXJGYWNpbmcpCit7CisjaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisg
ICAgaWYgKCFpc1VzZXJGYWNpbmcpCisgICAgICAgIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7
CisgICAgZWxzZQorICAgICAgICByZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShpc1VzZXJGYWNpbmcpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojppc1Zpc2libGVDaGFuZ2VkKGJvb2wgaXNWaXNpYmxlKQoreworICAgIFVOVVNFRF9QQVJB
TShpc1Zpc2libGUpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQYWdlUHJveHk6
OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyNmI0MDNmODZkODYwNzBhNzdiN2Vh
ZTRmMzFmNGNlYzYxOGY1MDguLmE4MDM2YjJjNGJiNmFmOWQ3YTdmOTUwZTdkYmE3NjQ5OGVjNTcy
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTc1Nyw2ICsxNzU3LDggQEAKIAkJQ0RCQjQ5RkQyNDBEOUE3MjAwMTdDMjkyIC8qIFJl
bW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQkI0OUZDMjQwRDlBNzIwMDE3QzI5MiAvKiBSZW1vdGVB
dWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmggKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2
RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxz
Y3JlZW5TdGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CisJCUNEQ0RDOTlEMjQ4RkU4REEwMEE2OTUyMiAv
KiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQ0RDOTlCMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0
ZVRyYWNrZXIuaCAqLzsgfTsKKwkJQ0RDREM5OUUyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVu
dFN0YXRlVHJhY2tlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQ0RDOTlDMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIu
bW0gKi87IH07CiAJCUNERTU1NTMyMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MjkyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNERTU1NTMz
MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUy
QTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQlDREU1NTUzNDI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyRTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC01MTgwLDYgKzUxODIsOCBA
QAogCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
Q0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RDQxMzJBQzJCMzAw
RTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3
b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlDRENEQzk5QjI0OEZFOERBMDBBNjk1MjIg
LyogRW5kb3dtZW50U3RhdGVUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuZG93bWVudFN0YXRl
VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRENEQzk5QzI0OEZFOERB
MDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREQ1MzU2RjI0MEREMzQzMDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RENTM1NzAyNDBERDRFRjAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDUz
NTcxMjQwRERFMDYwMEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTg2LDYgKzY5
OTAsOCBAQAogCQkJCTJENTg3NUJEMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5oICovLAogCQkJCTJENTg3NUJCMjE5QjI4QTUwMDcwQjlBQSAvKiBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkyRDU4NzVCRTIxOUI1MzE1MDA3MEI5
QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gKi8sCisJCQkJQ0RDREM5OUIyNDhGRThE
QTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5oICovLAorCQkJCUNEQ0RDOTlDMjQ4
RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0gKi8sCiAJCQkJMkRENDVB
REMxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggKi8sCiAJCQkJ
MkRENDVBREQxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tICov
LAogCQkJCTBGQ0I0RTM2MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5oICov
LApAQCAtMTA1NTQsNiArMTA1NjAsNyBAQAogCQkJCTVDQUZERTQ1MjEzMDg0NjMwMEIxRjdFMSAv
KiBfV0tJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MUY0OTJGMjNBODEyQzYwMDU0
NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQ0RDOTlEMjQ4RkU4REEwMEE2OTUyMiAvKiBF
bmRvd21lbnRTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBDMjNEQkM1
MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNBRkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkwOSw2ICsxMjkxNiw3IEBACiAJCQkJMkQxMUI3
QjkyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2U1My1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTJEMTFCN0JCMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlNTQtbW0ubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRDExQjdCQzIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNv
dXJjZTU0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQ0RDOTlFMjQ4RkU4REEwMEE2OTUyMiAv
KiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjdCRDIx
MjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTU1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQxMUI3QkUyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2U1NS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDExQjdDMDIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTU2
LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401472</attachid>
            <date>2020-06-09 14:01:38 -0700</date>
            <delta_ts>2020-06-09 17:57:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212981-20200609140138.patch</filename>
            <type>text/plain</type>
            <size>27814</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlNDNkMmVhODQ1NDBiZWNm
M2ZlZDAwZjc1YTFlMzdmMDE5NmFjYzEuLjdjYTdiYjZiNjE2MmU2ZjM5NmQyNjVhYzMyYWFiZmE1
YmFhZWUyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDYtMDkgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMg
Y29udGludWUgdG8gcGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NzA4OTQ3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSdW5uaW5nQm9hcmQgd2lsbCB0cmFjayB3aGV0aGVyIGEgcHJvY2VzcyAoYW5kIGl0
J3MgYXNzb2NpYXRlZCBjaGlsZCBwcm9jZXNzZXMpIGFyZSAidXNlci12aXNpYmxlIiBieQorICAg
ICAgICBncmFudGluZyB0aG9zZSBwcm9jZXNzZXMgYW4gImVuZG93bWVudCIsIHNpbWlsYXIgdG8g
dGhlIGV4aXN0aW5nIGVuZG93bWVudCBmb3IgYXBwbGljYXRpb24gdmlzaWJpbGl0eS4KKyAgICAg
ICAgVHJhY2sgY2hhbmdlcyB0byB0aGVzZSBlbmRvd21lbnRzIHVzaW5nIGEgUkJTUHJvY2Vzc01v
bml0b3IsIGFuZCBmb3IgQ2F0YWx5c3QgYXBwcywgcmVhY3QgdG8gbG9zaW5nIHRoZQorICAgICAg
ICAidXNlci12aXNpYmxlIiBlbmRvd21lbnQgYnkgc3VzcGVuZGluZyBhbGwgbWVkaWEgcGxheWJh
Y2suCisKKyAgICAgICAgTW92ZSBhbGwgdGhlIGVuZG93bWVudC1yZWxhdGVkIGNvZGUgaW50byBh
IG5ldyBjbGFzcywgRW5kb3dtZW50U3RhdGVUcmFja2VyLCB3aGljaCBpcyBhIHNpbmdsZXRvbiBv
YmplY3QKKyAgICAgICAgdGhhdCBjYW4gaGF2ZSBtdWxpdHBsZSBXZWJQYWdlUHJveHkgY2xpZW50
cy4gVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlIHByZXZpb3VzbHkgZ2xvYmFsIHN0YXRpYworICAg
ICAgICBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCgpIGZ1bmN0aW9uIHRvIHJlZmVyIHRvIEVuZG93
bWVudFN0YXRlVHJhY2tlciBpbnN0ZWFkLgorCisgICAgICAgIERyaXZlLWJ5IGZpeDogbW92ZSBz
b21lIGlPUy1vbmx5IGZ1bmN0aW9ucyBpbiBXZWJQYWdlUHJveHkuY3BwIGludG8gV2ViUGFnZVBy
b3h5SU9TLm1tLgorCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2Vy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6QXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIpOgorICAgICAgICAoV2ViS2l0Ojppc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjppc1Zpc2libGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzVXNlckZhY2luZyBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUZvclBJRCk6CisgICAgICAgIChXZWJLaXQ6OkVu
ZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvbkZvcmVncm91bmQpOgorICAgICAgICAo
V2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGljYXRpb25Vc2VyRmFjaW5nKToK
KyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OkVuZG93bWVudFN0YXRlVHJhY2tl
cik6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6YWRkQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpyZW1vdmVDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVXNlckZhY2luZyk6
CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNWaXNpYmxlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmlzQXBwbGljYXRpb25WaXNpYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzV2ls
bEJlY29tZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vz
c1dpbGxCZWNvbWVGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpp
c1VzZXJGYWNpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1Zp
c2libGVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMC0wNi0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBIaWRlIHRoZSBQaVAgYnV0dG9uIGluIGZ1bGxzY3JlZW4gbW9kZSBpZiBQaVAg
aXMgZGlzYWJsZWQgaW4gcHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL2lvcy9SdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKaW5kZXggODY3ZjZjNzAz
M2ZjYWIwMzM2OTgyMDc2ZjRlNDY1MzdhY2YxMTUyZC4uYjliOTQwZTgwZDQ2YzYwODY3N2RhMjZh
NTc4MmRlYjM4ZmZhNTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
aW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKQEAgLTM3LDYgKzM3LDggQEAgZXh0
ZXJuIGNvbnN0IE5TVGltZUludGVydmFsIFJCU1Byb2Nlc3NUaW1lTGltaXRhdGlvbk5vbmU7CiAK
ICNlbHNlCiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2UgUkJTQXR0cmli
dXRlIDogTlNPYmplY3QKIEBlbmQKIApAQCAtNDYsNiArNDgsNyBAQCBleHRlcm4gY29uc3QgTlNU
aW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsKIAogQGludGVyZmFjZSBS
QlNUYXJnZXQgOiBOU09iamVjdAogKyAoUkJTVGFyZ2V0ICopdGFyZ2V0V2l0aFBpZDoocGlkX3Qp
cGlkOworKyAoUkJTVGFyZ2V0ICopY3VycmVudFByb2Nlc3M7CiBAZW5kCiAKIEBwcm90b2NvbCBS
QlNBc3NlcnRpb25PYnNlcnZpbmc7CkBAIC05MSw4ICs5NCw0NyBAQCBleHRlcm4gY29uc3QgTlNU
aW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsKIEBpbnRlcmZhY2UgUkJT
UHJvY2Vzc0hhbmRsZSA6IE5TT2JqZWN0CiArIChSQlNQcm9jZXNzSGFuZGxlICopaGFuZGxlRm9y
SWRlbnRpZmllcjooUkJTUHJvY2Vzc0lkZW50aWZpZXIgKilpZGVudGlmaWVyIGVycm9yOihOU0Vy
cm9yICoqKW91dEVycm9yOwogKyAoUkJTUHJvY2Vzc0hhbmRsZSAqKWN1cnJlbnRQcm9jZXNzOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIHBpZF90IHBpZDsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBSQlNQcm9jZXNzU3RhdGUgKmN1cnJl
bnRTdGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBSQlNQcm9j
ZXNzTGltaXRhdGlvbnMgKmFjdGl2ZUxpbWl0YXRpb25zOwogQGVuZAogCitAaW50ZXJmYWNlIFJC
U1Byb2Nlc3NTdGF0ZVVwZGF0ZSA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIHN0cm9uZykgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2VzczsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgc3Ryb25nLCBudWxsYWJsZSkgUkJTUHJvY2Vzc1N0YXRlICpzdGF0
ZTsKK0BlbmQKKworQGNsYXNzIFJCU1Byb2Nlc3NNb25pdG9yOworQGNsYXNzIFJCU1Byb2Nlc3NQ
cmVkaWNhdGU7CitAY2xhc3MgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRvcjsKK0Bwcm90b2NvbCBS
QlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyaW5nOworCit0eXBlZGVmIHZvaWQgKF5SQlNQcm9jZXNz
TW9uaXRvckNvbmZpZ3VyYXRvcikoaWQ8UkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZz4gY29u
ZmlnKTsKK3R5cGVkZWYgdm9pZCAoXlJCU1Byb2Nlc3NVcGRhdGVIYW5kbGVyKShSQlNQcm9jZXNz
TW9uaXRvciAqbW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2VzcywgUkJTUHJvY2Vzc1N0
YXRlVXBkYXRlICp1cGRhdGUpOworCitAcHJvdG9jb2wgUkJTUHJvY2Vzc01hdGNoaW5nIDxOU09i
amVjdD4KKy0gKFJCU1Byb2Nlc3NQcmVkaWNhdGUgKilwcm9jZXNzUHJlZGljYXRlOworQGVuZAor
CitAcHJvdG9jb2wgUkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZworLSAodm9pZClzZXRQcmVk
aWNhdGVzOihudWxsYWJsZSBOU0FycmF5PFJCU1Byb2Nlc3NQcmVkaWNhdGUgKj4gKilwcmVkaWNh
dGVzOworLSAodm9pZClzZXRTdGF0ZURlc2NyaXB0b3I6KG51bGxhYmxlIFJCU1Byb2Nlc3NTdGF0
ZURlc2NyaXB0b3IgKilkZXNjcmlwdG9yOworLSAodm9pZClzZXRVcGRhdGVIYW5kbGVyOihudWxs
YWJsZSBSQlNQcm9jZXNzVXBkYXRlSGFuZGxlcilibG9jazsKK0BlbmQKKworQGludGVyZmFjZSBS
QlNQcm9jZXNzTW9uaXRvciA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CisrIChpbnN0YW5jZXR5cGUp
bW9uaXRvcldpdGhDb25maWd1cmF0aW9uOihOU19OT0VTQ0FQRSBSQlNQcm9jZXNzTW9uaXRvckNv
bmZpZ3VyYXRvcilibG9jazsKK0BlbmQKKworQGludGVyZmFjZSBSQlNQcm9jZXNzUHJlZGljYXRl
IDogTlNPYmplY3QgPFJCU1Byb2Nlc3NNYXRjaGluZz4KKysgKFJCU1Byb2Nlc3NQcmVkaWNhdGUg
KilwcmVkaWNhdGVNYXRjaGluZ0hhbmRsZTooUkJTUHJvY2Vzc0hhbmRsZSAqKXByb2Nlc3M7CitA
ZW5kCisKK0BpbnRlcmZhY2UgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRvciA6IE5TT2JqZWN0IDxO
U0NvcHlpbmc+CisrIChpbnN0YW5jZXR5cGUpZGVzY3JpcHRvcjsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkd3JpdGUsIGNvcHksIG51bGxhYmxlKSBOU0FycmF5PE5TU3RyaW5nICo+ICplbmRv
d21lbnROYW1lc3BhY2VzOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJh
Y2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIu
aAppbmRleCAzY2QyYTE1Yjg5OTQxOTlhY2ZhNzllZTNjN2I3MjdmODg2ODAyZmNmLi5mNTFmMTc4
YzhiMDY0N2VmM2VmMGIwMDY1YWY0ODkzMmZkYzQ4ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKQEAgLTc1LDcgKzc1LDYgQEAg
ZW51bSBjbGFzcyBBcHBsaWNhdGlvblR5cGUgewogfTsKIAogQXBwbGljYXRpb25UeXBlIGFwcGxp
Y2F0aW9uVHlwZShVSVdpbmRvdyAqKTsKLWJvb2wgaXNBcHBsaWNhdGlvbkZvcmVncm91bmQocGlk
X3QpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0
aW9uU3RhdGVUcmFja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIubW0KaW5kZXggYzQyOWRkYTI3NDFiNTg3MDgwZWY3NDUyYmNhZDg2MjEwNTk4
OTA0MC4uZmZhMzVkZDYxNGY4NDQzZjEwOTA2ZGViZjlmYzA4OTkxMzkwYmZhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0KQEAg
LTI5LDggKzI5LDggQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oIgorI2ltcG9ydCAiRW5kb3dtZW50U3RhdGVUcmFja2VyLmgiCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIgog
I2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBv
cnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgpAQCAtMTQyLDcgKzE0Miw3IEBAIEFwcGxpY2F0
aW9uU3RhdGVUcmFja2VyOjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcihVSVZpZXcgKnZpZXcsIFNF
TCBkaWRFbnRlckJhY2tnCiAgICAgICAgIHBpZF90IGFwcGxpY2F0aW9uUElEID0gc2VydmljZVZp
ZXdDb250cm9sbGVyLl9ob3N0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgICAgIEFTU0VSVChhcHBs
aWNhdGlvblBJRCk7CiAKLSAgICAgICAgbV9pc0luQmFja2dyb3VuZCA9ICFpc0FwcGxpY2F0aW9u
Rm9yZWdyb3VuZChhcHBsaWNhdGlvblBJRCk7CisgICAgICAgIG1faXNJbkJhY2tncm91bmQgPSAh
RW5kb3dtZW50U3RhdGVUcmFja2VyOjppc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChhcHBsaWNhdGlv
blBJRCk7CiAKICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM0MDI4
OTIxPi4gSWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaXMgU3RvcmVLaXRVSVNlcnZpY2UgdGhlbiBp
dCBpcyBhbHNvIGEgVmlld1NlcnZpY2UKICAgICAgICAgLy8gYW5kIGlzIGFsd2F5cyBpbiB0aGUg
YmFja2dyb3VuZC4gV2UgbmVlZCB0byB0cmVhdCBTdG9yZUtpdFVJU2VydmljZSBhcyBmb3JlZ3Jv
dW5kIGZvciB0aGUgcHVycG9zZSBvZiBwcm9jZXNzIHN1c3BlbnNpb24KQEAgLTE2NiwzNCArMTY2
LDYgQEAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyKFVJ
VmlldyAqdmlldywgU0VMIGRpZEVudGVyQmFja2cKICAgICB9CiB9CiAKLWJvb2wgaXNBcHBsaWNh
dGlvbkZvcmVncm91bmQocGlkX3QgcGlkKQotewotICAgIFJCU1Byb2Nlc3NJZGVudGlmaWVyICpw
cm9jZXNzSWRlbnRpZmllciA9IFtSQlNQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyV2l0aFBp
ZDpwaWRdOwotICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZDogRmFp
bGVkIHRvIGNvbnN0cnVjdCBSQlNQcm9jZXNzSWRlbnRpZmllciBmcm9tIFBJRCAlZCIsIHBpZCk7
Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4gdW5hYmxlIHRvIGRldGVybWlu
ZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZpb3IgYW5kIHRvIGF2b2lkCi0g
ICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3ZSBmYWlsLgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBSQlNQ
cm9jZXNzSGFuZGxlICpwcm9jZXNzSGFuZGxlID0gW1JCU1Byb2Nlc3NIYW5kbGUgaGFuZGxlRm9y
SWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllciBlcnJvcjomZXJyb3JdOwotICAgIGlmICghcHJv
Y2Vzc0hhbmRsZSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3VzcGVuc2lv
biwgImlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kOiBGYWlsZWQgdG8gZ2V0IFJCU1Byb2Nlc3NIYW5k
bGUgZm9yIHByb2Nlc3Mgd2l0aCBQSUQgJWQsIGVycm9yOiAle3B1YmxpY31AIiwgcGlkLCBlcnJv
cik7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4gdW5hYmxlIHRvIGRldGVy
bWluZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZpb3IgYW5kIHRvIGF2b2lk
Ci0gICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3ZSBmYWlsLgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSQlNQcm9jZXNzU3RhdGUgKnN0YXRlID0gcHJv
Y2Vzc0hhbmRsZS5jdXJyZW50U3RhdGU7Ci0gICAgaWYgKHN0YXRlLnRhc2tTdGF0ZSAhPSBSQlNU
YXNrU3RhdGVSdW5uaW5nU2NoZWR1bGVkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiaXNBcHBsaWNhdGlvbkZvcmVncm91bmQ6IFByb2Nlc3Mgd2l0aCBQ
SUQgJWQgaXMgbm90IHJ1bm5pbmciLCBwaWQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgcmV0dXJuIFtbc3RhdGUgZW5kb3dtZW50TmFtZXNwYWNlc10gY29udGFpbnNPYmpl
Y3Q6QCJjb20uYXBwbGUuZnJvbnRib2FyZC52aXNpYmlsaXR5Il07Ci19Ci0KIEFwcGxpY2F0aW9u
U3RhdGVUcmFja2VyOjp+QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoKQogewogICAgIFJFTEVBU0Vf
TE9HKFZpZXdTdGF0ZSwgIiVwIC0gfkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyIiwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA4Y2MyYmQyODczNmMyOTZkYjIwOTFiMThkNWMwMThlN2NkMGY1YjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIu
aApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1dlYWtIYXNoU2V0Lmg+CisKK09CSkNfQ0xBU1Mg
UkJTUHJvY2Vzc01vbml0b3I7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIEVuZG93bWVudFN0YXRlVHJhY2tlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIEVuZG93bWVudFN0YXRlVHJhY2tlciYg
c2luZ2xldG9uKCk7CisgICAgfkVuZG93bWVudFN0YXRlVHJhY2tlcigpOworCisgICAgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQorICAgIGJvb2wgaXNVc2Vy
RmFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZXJGYWNpbmc7IH0KKworICAgIHZvaWQgYWRk
Q2xpZW50KFdlYlBhZ2VQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFdlYlBhZ2VQcm94
eSYpOworCisgICAgc3RhdGljIGJvb2wgaXNBcHBsaWNhdGlvbkZvcmVncm91bmQocGlkX3QpOwor
ICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25Vc2VyRmFjaW5nKHBpZF90KTsKKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RW5kb3dtZW50U3RhdGVUcmFja2Vy
PjsKKyAgICBFbmRvd21lbnRTdGF0ZVRyYWNrZXIoKTsKKyAgICB2b2lkIHNldElzVXNlckZhY2lu
Zyhib29sKTsKKyAgICB2b2lkIHNldElzVmlzaWJsZShib29sKTsKKworICAgIFdlYWtIYXNoU2V0
PFdlYlBhZ2VQcm94eT4gbV9jbGllbnRzOworICAgIFdURjo6UmV0YWluUHRyPFJCU1Byb2Nlc3NN
b25pdG9yPiBtX3Byb2Nlc3NNb25pdG9yOworICAgIGJvb2wgbV9pc1VzZXJGYWNpbmc7CisgICAg
Ym9vbCBtX2lzVmlzaWJsZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ5OWQ2ZmJh
NzIzYmY5MjE0ZjZmMmM1YzJhNGVlNjI3YjY2ZDhjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5tbQpAQCAtMCwwICsxLDE1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFbmRvd21l
bnRTdGF0ZVRyYWNrZXIuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUnVubmlu
Z0JvYXJkU2VydmljZXNTUEkuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBOU1N0cmluZyogdmlzaWJpbGl0eUVuZG93bWVudCA9
IEAiY29tLmFwcGxlLmZyb250Ym9hcmQudmlzaWJpbGl0eSI7CitzdGF0aWMgTlNTdHJpbmcqIHVz
ZXJmYWNpbmdFbmRvd21lbnQgPSBAImNvbS5hcHBsZS5sYXVuY2hzZXJ2aWNlcy51c2VyZmFjaW5n
IjsKKworc3RhdGljIFJCU1Byb2Nlc3NIYW5kbGUgKmhhbmRsZUZvclBJRChwaWRfdCBwaWQpCit7
CisgICAgUkJTUHJvY2Vzc0lkZW50aWZpZXIgKnByb2Nlc3NJZGVudGlmaWVyID0gW1JCU1Byb2Nl
c3NJZGVudGlmaWVyIGlkZW50aWZpZXJXaXRoUGlkOnBpZF07CisgICAgaWYgKCFwcm9jZXNzSWRl
bnRpZmllcikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3VzcGVuc2lvbiwg
ImhhbmRsZUZvclBJRDogRmFpbGVkIHRvIGNvbnN0cnVjdCBSQlNQcm9jZXNzSWRlbnRpZmllciBm
cm9tIFBJRCAlZCIsIHBpZCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgTlNF
cnJvciAqZXJyb3IgPSBuaWw7CisgICAgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2Vzc0hhbmRsZSA9
IFtSQlNQcm9jZXNzSGFuZGxlIGhhbmRsZUZvcklkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXIg
ZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoIXByb2Nlc3NIYW5kbGUpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRvd21lbnRzRm9yUGlkOiBGYWlsZWQg
dG8gZ2V0IFJCU1Byb2Nlc3NIYW5kbGUgZm9yIHByb2Nlc3Mgd2l0aCBQSUQgJWQsIGVycm9yOiAl
e3B1YmxpY31AIiwgcGlkLCBlcnJvcik7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisg
ICAgcmV0dXJuIHByb2Nlc3NIYW5kbGU7Cit9CisKK3N0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAq
ZW5kb3dtZW50c0ZvckhhbmRsZShSQlNQcm9jZXNzSGFuZGxlICpwcm9jZXNzSGFuZGxlKQorewor
ICAgIGlmICghcHJvY2Vzc0hhbmRsZSkgeworICAgICAgICAvLyBXZSBhc3N1bWUgZm9yZWdyb3Vu
ZCB3aGVuIHVuYWJsZSB0byBkZXRlcm1pbmUgc3RhdGUgdG8gbWFpbnRhaW4gcHJlLWV4aXN0aW5n
IGJlaGF2aW9yIGFuZCB0byBhdm9pZAorICAgICAgICAvLyBub3QgcmVuZGVyaW5nIGFueXRoaW5n
IHdoZW4gd2UgZmFpbC4KKyAgICAgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czp2aXNp
YmlsaXR5RW5kb3dtZW50LCB1c2VyZmFjaW5nRW5kb3dtZW50LCBuaWxdOworICAgIH0KKworICAg
IFJCU1Byb2Nlc3NTdGF0ZSAqc3RhdGUgPSBwcm9jZXNzSGFuZGxlLmN1cnJlbnRTdGF0ZTsKKyAg
ICBpZiAoc3RhdGUudGFza1N0YXRlICE9IFJCU1Rhc2tTdGF0ZVJ1bm5pbmdTY2hlZHVsZWQpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRvd21lbnRz
Rm9ySGFuZGxlOiBQcm9jZXNzIHdpdGggUElEICVkIGlzIG5vdCBydW5uaW5nIiwgcHJvY2Vzc0hh
bmRsZS5waWQpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVybiBbc3Rh
dGUgZW5kb3dtZW50TmFtZXNwYWNlc107Cit9CisKK2Jvb2wgRW5kb3dtZW50U3RhdGVUcmFja2Vy
Ojppc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChwaWRfdCBwaWQpCit7CisgICAgcmV0dXJuIFtlbmRv
d21lbnRzRm9ySGFuZGxlKGhhbmRsZUZvclBJRChwaWQpKSBjb250YWluc09iamVjdDp2aXNpYmls
aXR5RW5kb3dtZW50XTsKK30KKworYm9vbCBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGlj
YXRpb25Vc2VyRmFjaW5nKHBpZF90IHBpZCkKK3sKKyAgICByZXR1cm4gW2VuZG93bWVudHNGb3JI
YW5kbGUoaGFuZGxlRm9yUElEKHBpZCkpIGNvbnRhaW5zT2JqZWN0OnVzZXJmYWNpbmdFbmRvd21l
bnRdOworfQorCitFbmRvd21lbnRTdGF0ZVRyYWNrZXImIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6
c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgYXV0byB0cmFja2VyID0gTmV2ZXJEZXN0cm95ZWQ8
RW5kb3dtZW50U3RhdGVUcmFja2VyPigpOworICAgIHJldHVybiB0cmFja2VyOworfQorCitFbmRv
d21lbnRTdGF0ZVRyYWNrZXI6OkVuZG93bWVudFN0YXRlVHJhY2tlcigpCit7CisgICAgYXV0byBw
cm9jZXNzSGFuZGxlID0gW1JCU1Byb2Nlc3NIYW5kbGUgY3VycmVudFByb2Nlc3NdOworICAgIGF1
dG8gZW5kb3dtZW50TmFtZXNwYWNlcyA9IGVuZG93bWVudHNGb3JIYW5kbGUocHJvY2Vzc0hhbmRs
ZSk7CisKKyAgICBtX2lzVXNlckZhY2luZyA9IFtlbmRvd21lbnROYW1lc3BhY2VzIGNvbnRhaW5z
T2JqZWN0OnVzZXJmYWNpbmdFbmRvd21lbnRdOworICAgIG1faXNWaXNpYmxlID0gW2VuZG93bWVu
dE5hbWVzcGFjZXMgY29udGFpbnNPYmplY3Q6dmlzaWJpbGl0eUVuZG93bWVudF07CisKKyAgICBt
X3Byb2Nlc3NNb25pdG9yID0gW1JCU1Byb2Nlc3NNb25pdG9yIG1vbml0b3JXaXRoQ29uZmlndXJh
dGlvbjpbdGhpcywgcHJvY2Vzc0hhbmRsZSA9IHJldGFpblB0cihwcm9jZXNzSGFuZGxlKV0gKGlk
PFJCU1Byb2Nlc3NNb25pdG9yQ29uZmlndXJpbmc+IGNvbmZpZykgeworCisgICAgICAgIFJCU1By
b2Nlc3NQcmVkaWNhdGUgKnByb2Nlc3NQcmVkaWNhdGUgPSBbUkJTUHJvY2Vzc1ByZWRpY2F0ZSBw
cmVkaWNhdGVNYXRjaGluZ0hhbmRsZTpwcm9jZXNzSGFuZGxlLmdldCgpXTsKKworICAgICAgICBS
QlNQcm9jZXNzU3RhdGVEZXNjcmlwdG9yICpzdGF0ZURlc2NyaXB0b3IgPSBbUkJTUHJvY2Vzc1N0
YXRlRGVzY3JpcHRvciBkZXNjcmlwdG9yXTsKKyAgICAgICAgc3RhdGVEZXNjcmlwdG9yLmVuZG93
bWVudE5hbWVzcGFjZXMgPSBAW3Zpc2liaWxpdHlFbmRvd21lbnQsIHVzZXJmYWNpbmdFbmRvd21l
bnRdOworCisgICAgICAgIFtjb25maWcgc2V0UHJlZGljYXRlczpAW3Byb2Nlc3NQcmVkaWNhdGVd
XTsKKyAgICAgICAgW2NvbmZpZyBzZXRTdGF0ZURlc2NyaXB0b3I6c3RhdGVEZXNjcmlwdG9yXTsK
KworICAgICAgICBbY29uZmlnIHNldFVwZGF0ZUhhbmRsZXI6W3RoaXNdIChSQlNQcm9jZXNzTW9u
aXRvciAqIF9Ob25udWxsIG1vbml0b3IsIFJCU1Byb2Nlc3NIYW5kbGUgKiBfTm9ubnVsbCBwcm9j
ZXNzLCBSQlNQcm9jZXNzU3RhdGVVcGRhdGUgKiBfTm9ubnVsbCB1cGRhdGUpIG11dGFibGUgewor
ICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Ro
aXMsIGVuZG93bWVudE5hbWVzcGFjZXMgPSByZXRhaW5QdHIodXBkYXRlLnN0YXRlLmVuZG93bWVu
dE5hbWVzcGFjZXMpXSB7CisgICAgICAgICAgICAgICAgc2V0SXNVc2VyRmFjaW5nKFtlbmRvd21l
bnROYW1lc3BhY2VzIGNvbnRhaW5zT2JqZWN0OnVzZXJmYWNpbmdFbmRvd21lbnRdKTsKKyAgICAg
ICAgICAgICAgICBzZXRJc1Zpc2libGUoW2VuZG93bWVudE5hbWVzcGFjZXMgY29udGFpbnNPYmpl
Y3Q6dmlzaWJpbGl0eUVuZG93bWVudF0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH1dOwor
ICAgIH1dOworfQorCit2b2lkIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6YWRkQ2xpZW50KFdlYlBh
Z2VQcm94eSYgY2xpZW50KQoreworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKK30KKwordm9p
ZCBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnJlbW92ZUNsaWVudChXZWJQYWdlUHJveHkmIGNsaWVu
dCkKK3sKKyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7Cit9CisKK3ZvaWQgRW5kb3dtZW50
U3RhdGVUcmFja2VyOjpzZXRJc1VzZXJGYWNpbmcoYm9vbCBpc1VzZXJGYWNpbmcpCit7CisgICAg
aWYgKG1faXNVc2VyRmFjaW5nID09IGlzVXNlckZhY2luZykKKyAgICAgICAgcmV0dXJuOworICAg
IG1faXNVc2VyRmFjaW5nID0gaXNVc2VyRmFjaW5nOworCisgICAgUkVMRUFTRV9MT0coVmlld1N0
YXRlLCAiJXAgLSBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVXNlckZhY2luZyglcykiLCB0
aGlzLCBpc1VzZXJGYWNpbmcgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuaXNVc2VyRmFjaW5nQ2hhbmdlZCht
X2lzVXNlckZhY2luZyk7Cit9CisKK3ZvaWQgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpzZXRJc1Zp
c2libGUoYm9vbCBpc1Zpc2libGUpCit7CisgICAgaWYgKG1faXNWaXNpYmxlID09IGlzVmlzaWJs
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faXNWaXNpYmxlID0gaXNWaXNpYmxlOworCisgICAg
UkVMRUFTRV9MT0coVmlld1N0YXRlLCAiJXAgLSBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElz
VmlzaWJsZSglcykiLCB0aGlzLCBpc1Zpc2libGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworICAg
IGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuaXNWaXNpYmxl
Q2hhbmdlZChtX2lzVmlzaWJsZSk7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGYxMDExYmFjZTJhNTNjOTNhMTQxZTc5YzRi
MzZhNmEyNDcxZDAzNmEuLjlmOGJmZDI4NWE3YWNiYjk5YWQyNDcwMmQ3Y2QwNmMzYjk3ODg5MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTI1LDYgKzUy
NSw4IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQs
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgCiAgICAgaWYgKG1fY29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZXMoKS0+c2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JU
ZXN0aW5nKCkpCiAgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdv
cmtQcm9jZXNzKCk7CisKKyAgICBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNpbmdsZXRvbigpLmFk
ZENsaWVudCgqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNTY2LDYg
KzU2OCwxMCBAQCBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogI2lmbmRlZiBOREVCVUcK
ICAgICB3ZWJQYWdlUHJveHlDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2luZ2xldG9uKCku
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyNlbmRpZgogfQogCiAvLyBGSVhNRTogU2hvdWxkIHJldHVy
biBhIGNvbnN0IFBhZ2VDbGllbnQmIGFuZCBhZGQgYSBzZXBhcmF0ZSBub24tY29uc3QKQEAgLTc0
NjIsMjkgKzc0NjgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEFsbFVSTFNjaGVtZVRhc2tz
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICAgICAgaGFuZGxlci0+c3RvcEFsbFRhc2tz
Rm9yUGFnZSgqdGhpcywgcHJvY2Vzcyk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCkKLXsKLSAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faGFzTmV0
d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgPSBtX3BhZ2VMb2FkU3RhdGUubmV0d29ya1JlcXVlc3Rz
SW5Qcm9ncmVzcygpOwotICAgIGlmIChtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkKQot
ICAgICAgICBzZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKGZhbHNlKTsKLX0KLQotdm9pZCBX
ZWJQYWdlUHJveHk6OnByb2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpCi17Ci0gICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9oYXNOZXR3
b3JrUmVxdWVzdHNPblN1c3BlbmRlZCkgewotICAgICAgICBzZXROZXR3b3JrUmVxdWVzdHNJblBy
b2dyZXNzKHRydWUpOwotICAgICAgICBtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkID0g
ZmFsc2U7Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKIHsKICAgICBtX21haW5GcmFtZSA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3MDY0
Y2ZjZjY3YzVhODI3MzliNDE4M2Y4YmI4OTk1ZjllOTE3OGQuLmE4OTcxMzM1NTkyYzg4YmNiODQy
ZGNmNjA4YTg3MjA0ZWFhNGU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xMjEsNiArMTIxLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiRW5kb3dtZW50U3RhdGVUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiR2VzdHVyZVR5cGVzLmgiCiAjaW5jbHVkZSAiV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0LmgiCiAjZW5kaWYKQEAgLTExODMsNiArMTE4NCw4IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcHJvY2Vzc1dpbGxCZWNvbWVTdXNwZW5k
ZWQoKTsKICAgICB2b2lkIHByb2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpOworICAgIHZvaWQg
aXNVc2VyRmFjaW5nQ2hhbmdlZChib29sKTsKKyAgICB2b2lkIGlzVmlzaWJsZUNoYW5nZWQoYm9v
bCk7CiAjZW5kaWYKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4
IDliYWRlY2IyYTQyMmM4MzdjNWQzM2UyMmE0NDQ2N2I4MTU5YjRhMzcuLjM4NzlhYmQxNWE2NDNi
MGNiZTI2NmY5ZjUyMWJhMWU2NmRlZjdkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkRy
YXdpbmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIkVuZG93bWVudFN0YXRlVHJhY2tlci5oIgogI2lt
cG9ydCAiRnJhbWVJbmZvRGF0YS5oIgogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24uaCIKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTE2Niw3
ICsxNjcsNyBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjppc0FwcGxpY2F0aW9uVmlzaWJsZSgpCiAg
ICAgcGlkX3QgYXBwbGljYXRpb25QSUQgPSBzZXJ2aWNlVmlld0NvbnRyb2xsZXIuX2hvc3RQcm9j
ZXNzSWRlbnRpZmllcjsKICAgICBBU1NFUlQoYXBwbGljYXRpb25QSUQpOwogCi0gICAgcmV0dXJu
IGlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kKGFwcGxpY2F0aW9uUElEKTsKKyAgICByZXR1cm4gRW5k
b3dtZW50U3RhdGVUcmFja2VyOjppc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChhcHBsaWNhdGlvblBJ
RCk7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDYxNGRjYmYz
N2MwNDVkYThiNDk4MmNjOGRhMzg1NTBhMTJiZTI0N2QuLmVhNWU0ZWZkMmRkMTNmMTdiMjgxZjk4
Mzk0NjU5N2NiODQ3OGRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQpAQCAtMTYwMCw2ICsxNjAwLDQ0IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3aWxsT3BlbkFwcExpbmsoKQogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cHJv
Y2Vzc1dpbGxCZWNvbWVTdXNwZW5kZWQoKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRl
ZCA9IG1fcGFnZUxvYWRTdGF0ZS5uZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCk7CisgICAgaWYg
KG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQpCisgICAgICAgIHNldE5ldHdvcmtSZXF1
ZXN0c0luUHJvZ3Jlc3MoZmFsc2UpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc1dp
bGxCZWNvbWVGb3JlZ3JvdW5kKCkKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVk
KSB7CisgICAgICAgIHNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3ModHJ1ZSk7CisgICAgICAg
IG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5Ojppc1VzZXJGYWNpbmdDaGFuZ2VkKGJvb2wgaXNVc2VyRmFjaW5nKQor
eworI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIGlmICghaXNVc2VyRmFjaW5nKQorICAg
ICAgICBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOworICAgIGVsc2UKKyAgICAgICAgcmVzdW1l
QWxsTWVkaWFQbGF5YmFjaygpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaXNVc2VyRmFjaW5n
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aXNWaXNpYmxlQ2hhbmdlZChib29s
IGlzVmlzaWJsZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oaXNWaXNpYmxlKTsKK30KKwogI2lmIFBM
QVRGT1JNKElPUykKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNl
cygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlMjZiNDAzZjg2ZDg2MDcwYTc3YjdlYWU0ZjMxZjRjZWM2MThmNTA4Li4zNzAwNzFi
MzE4NmQxMGQ5YjVmYmJiN2NhM2I4OWZjY2U4ZWNkMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NTcsNiArMTc1Nyw4IEBACiAJ
CUNEQkI0OUZEMjQwRDlBNzIwMDE3QzI5MiAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJC
NDlGQzI0MEQ5QTcyMDAxN0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbi5o
ICovOyB9OwogCQlDREMyODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tW
aWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMy
ODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi87IH07CiAJ
CUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVD
NzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9
OworCQlDRENEQzk5RDI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENEQzk5QjI0
OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLmggKi87IH07CisJCUNEQ0RD
OTlFMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENEQzk5QzI0OEZFOERBMDBB
Njk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tICovOyB9OwogCQlDREU1NTUzMjI0MDZF
QjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1
NTI5MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQlDREU1NTUzMzI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MkEyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0RFNTU1MzQyNDA2
RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MkUy
NDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwpAQCAtNTE4MCw2ICs1MTgyLDggQEAKIAkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyog
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEQ0E4NUQ0MTMyQUMyQjMwMEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+Ijsg
fTsKKwkJQ0RDREM5OUIyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RDREM5OUMyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRl
VHJhY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVuZG93bWVudFN0YXRlVHJhY2tlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENTM1NkYyNDBERDM0MzAwRjdCOEM0
IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Np
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDUzNTcwMjQw
REQ0RUYwMEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREQ1MzU3MTI0MERERTA2MDBGN0I4QzQgLyogUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjk4Niw2ICs2OTkwLDggQEAKIAkJCQkyRDU4NzVCRDIxOUI1
MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCAqLywKIAkJCQkyRDU4NzVC
QjIxOUIyOEE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJMkQ1ODc1QkUyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9s
bGVyLm1tICovLAorCQkJCUNEQ0RDOTlCMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0
ZVRyYWNrZXIuaCAqLywKKwkJCQlDRENEQzk5QzI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50
U3RhdGVUcmFja2VyLm1tICovLAogCQkJCTJERDQ1QURDMUU1Rjg5NzIwMDZDMzU1RiAvKiBJbnB1
dFZpZXdVcGRhdGVEZWZlcnJlci5oICovLAogCQkJCTJERDQ1QUREMUU1Rjg5NzIwMDZDMzU1RiAv
KiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbSAqLywKIAkJCQkwRkNCNEUzNjE4QkJFMDQ0MDAw
RkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCAqLywKQEAgLTEwNzg0LDYgKzEwNzkwLDcgQEAK
IAkJCQlFMTA1RkU1NDE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUE0MUFCNTEyQzAyRUM0MDAyQkU2N0IgLyogRWRpdG9yU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDMyREE4MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDRENEQzk5RDI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3Rh
dGVUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUIxNUE4NTEzODQzQTM5MDAzMjFBRDgg
LyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTU3NUZCMTQ5
NkI1MjYwMEE0RUUwNiAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
QjgyNjQ4MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMjcwMSw2ICsxMjcwOCw3IEBACiAJCQkJMUE2NDIyOTkxMkREMDI5MjAwQ0FBRTJDIC8qIERy
YXdpbmdBcmVhTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyMzA4
MTJERDA5RUIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgwMjEyQjZBNzEwMEY0OTNGRCAvKiBFbmNvZGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQ0RDOTlFMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21l
bnRTdGF0ZVRyYWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUE1NzYwMjE0OTZCOTc5MDBB
NEVFMDYgLyogRXZlbnREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVy
aXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlGNjQ0MjE0NjU2MUIw
MDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401501</attachid>
            <date>2020-06-09 17:57:51 -0700</date>
            <delta_ts>2020-06-09 18:22:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212981-20200609175751.patch</filename>
            <type>text/plain</type>
            <size>32251</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5OWM3MzUwYTA4MTQwZmNlY2UxMjg2
NDY1ZmJlYWY2YTQyNmE2YjQuLjlkYmM5MWIxZGRjNTBmMzk4ZmRkYmIzMGNjMGJjMDI4NTE4Nzg0
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMDkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMgY29udGludWUgdG8g
cGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGhlIGFiaWxpdHkgdG8gY2FsbCBjb3B5VG9WZWN0b3IoKSBvbiBhIFdlYWtIYXNoU2V0LiBUaGlz
IHJlcXVpcmVzIHR3byBjaGFuZ2VzOgorICAgICAgICAtIEEgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdGhhdCByZXR1cm5zIGEgVmVjdG9yPFdlYWtQdHI8VD4+IGZyb20gY29weVRvVmVjdG9yKCkK
KyAgICAgICAgLSBBIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHRoYXQgY2FsbHMgY2FsY3VsYXRl
U2l6ZSgpIHJhdGhlciB0aGFuIHNpemUoKSBvbiB0aGUgb2JqZWN0CisgICAgICAgICAgYmVpbmcg
aXRlcmF0ZWQgdXBvbi4KKworICAgICAgICAqIHd0Zi9XZWFrSGFzaFNldC5oOgorICAgICAgICAo
V1RGOjpjb3B5VG9WZWN0b3IpOgorCiAyMDIwLTA2LTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IHJlYWQtb25seSBtb2RlIGZv
ciBwcmVmZXJlbmNlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlNDNk
MmVhODQ1NDBiZWNmM2ZlZDAwZjc1YTFlMzdmMDE5NmFjYzEuLjdjYTdiYjZiNjE2MmU2ZjM5NmQy
NjVhYzMyYWFiZmE1YmFhZWUyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDYt
MDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3Qg
V2ViS2l0IGFwcHMgY29udGludWUgdG8gcGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSdW5uaW5nQm9hcmQgd2lsbCB0cmFjayB3aGV0aGVyIGEgcHJv
Y2VzcyAoYW5kIGl0J3MgYXNzb2NpYXRlZCBjaGlsZCBwcm9jZXNzZXMpIGFyZSAidXNlci12aXNp
YmxlIiBieQorICAgICAgICBncmFudGluZyB0aG9zZSBwcm9jZXNzZXMgYW4gImVuZG93bWVudCIs
IHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGVuZG93bWVudCBmb3IgYXBwbGljYXRpb24gdmlzaWJp
bGl0eS4KKyAgICAgICAgVHJhY2sgY2hhbmdlcyB0byB0aGVzZSBlbmRvd21lbnRzIHVzaW5nIGEg
UkJTUHJvY2Vzc01vbml0b3IsIGFuZCBmb3IgQ2F0YWx5c3QgYXBwcywgcmVhY3QgdG8gbG9zaW5n
IHRoZQorICAgICAgICAidXNlci12aXNpYmxlIiBlbmRvd21lbnQgYnkgc3VzcGVuZGluZyBhbGwg
bWVkaWEgcGxheWJhY2suCisKKyAgICAgICAgTW92ZSBhbGwgdGhlIGVuZG93bWVudC1yZWxhdGVk
IGNvZGUgaW50byBhIG5ldyBjbGFzcywgRW5kb3dtZW50U3RhdGVUcmFja2VyLCB3aGljaCBpcyBh
IHNpbmdsZXRvbiBvYmplY3QKKyAgICAgICAgdGhhdCBjYW4gaGF2ZSBtdWxpdHBsZSBXZWJQYWdl
UHJveHkgY2xpZW50cy4gVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlIHByZXZpb3VzbHkgZ2xvYmFs
IHN0YXRpYworICAgICAgICBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCgpIGZ1bmN0aW9uIHRvIHJl
ZmVyIHRvIEVuZG93bWVudFN0YXRlVHJhY2tlciBpbnN0ZWFkLgorCisgICAgICAgIERyaXZlLWJ5
IGZpeDogbW92ZSBzb21lIGlPUy1vbmx5IGZ1bmN0aW9ucyBpbiBXZWJQYWdlUHJveHkuY3BwIGlu
dG8gV2ViUGFnZVByb3h5SU9TLm1tLgorCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9u
U3RhdGVUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6QXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIpOgorICAgICAgICAoV2ViS2l0Ojppc0FwcGxpY2F0aW9uRm9yZWdy
b3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjppc1Zp
c2libGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6Omlz
VXNlckZhY2luZyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJh
Y2tlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUZvclBJRCk6CisgICAgICAg
IChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvbkZvcmVncm91bmQp
OgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGljYXRpb25V
c2VyRmFjaW5nKToKKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5n
bGV0b24pOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OkVuZG93bWVu
dFN0YXRlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6
YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpyZW1v
dmVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElz
VXNlckZhY2luZyk6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0
SXNWaXNpYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5k
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmlzQXBwbGljYXRpb25WaXNpYmxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojppc1VzZXJGYWNpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojppc1Zpc2libGVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAyMC0wNi0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBIaWRlIHRoZSBQaVAgYnV0dG9uIGluIGZ1bGxzY3JlZW4g
bW9kZSBpZiBQaVAgaXMgZGlzYWJsZWQgaW4gcHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCmlu
ZGV4IDNkMmE4M2YxZjExMjA1ODk1Y2Q0ODI3MDYyZjYyOWI5NmYzZGU5MjEuLjc3NjBiNWE1OWQ4
NzY0MTVmMDYyYWI5MTFkOGFkZDYxNTA0ZTM4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1dlYWtIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaApAQCAtMTU1
LDYgKzE1NSwyOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHJJbXBsU2V0IG1fc2V0OwogfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTWFwcGVy
PE1hcEZ1bmN0aW9uLCBjb25zdCBXZWFrSGFzaFNldDxUPiAmLCB2b2lkPiB7CisgICAgdXNpbmcg
U291cmNlSXRlbVR5cGUgPSBXZWFrUHRyPFQ+OworICAgIHVzaW5nIERlc3RpbmF0aW9uSXRlbVR5
cGUgPSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxNYXBGdW5jdGlvbihTb3VyY2VJdGVtVHlwZSYp
Pjo6dHlwZTsKKworICAgIHN0YXRpYyBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4gbWFwKGNv
bnN0IFdlYWtIYXNoU2V0PFQ+JiBzb3VyY2UsIGNvbnN0IE1hcEZ1bmN0aW9uJiBtYXBGdW5jdGlv
bikKKyAgICB7CisgICAgICAgIFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiByZXN1bHQ7Cisg
ICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5jb21wdXRlU2l6ZSgp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogc291cmNlKQorICAgICAgICAgICAgcmVzdWx0
LnVuY2hlY2tlZEFwcGVuZChtYXBGdW5jdGlvbihpdGVtKSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBhdXRvIGNvcHlU
b1ZlY3Rvcihjb25zdCBXZWFrSGFzaFNldDxUPiYgY29sbGVjdGlvbikgLT4gVmVjdG9yPFdlYWtQ
dHI8VD4+Cit7CisgICAgcmV0dXJuIFdURjo6bWFwKGNvbGxlY3Rpb24sIFtdIChhdXRvJiB2KSAt
PiBXZWFrUHRyPFQ+IHsgcmV0dXJuIG1ha2VXZWFrUHRyPFQ+KHYpOyB9KTsKK30KKworCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpXZWFrSGFzaFNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9SdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgK
aW5kZXggODY3ZjZjNzAzM2ZjYWIwMzM2OTgyMDc2ZjRlNDY1MzdhY2YxMTUyZC4uYjliOTQwZTgw
ZDQ2YzYwODY3N2RhMjZhNTc4MmRlYjM4ZmZhNTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKQEAgLTM3
LDYgKzM3LDggQEAgZXh0ZXJuIGNvbnN0IE5TVGltZUludGVydmFsIFJCU1Byb2Nlc3NUaW1lTGlt
aXRhdGlvbk5vbmU7CiAKICNlbHNlCiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRl
cmZhY2UgUkJTQXR0cmlidXRlIDogTlNPYmplY3QKIEBlbmQKIApAQCAtNDYsNiArNDgsNyBAQCBl
eHRlcm4gY29uc3QgTlNUaW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsK
IAogQGludGVyZmFjZSBSQlNUYXJnZXQgOiBOU09iamVjdAogKyAoUkJTVGFyZ2V0ICopdGFyZ2V0
V2l0aFBpZDoocGlkX3QpcGlkOworKyAoUkJTVGFyZ2V0ICopY3VycmVudFByb2Nlc3M7CiBAZW5k
CiAKIEBwcm90b2NvbCBSQlNBc3NlcnRpb25PYnNlcnZpbmc7CkBAIC05MSw4ICs5NCw0NyBAQCBl
eHRlcm4gY29uc3QgTlNUaW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsK
IEBpbnRlcmZhY2UgUkJTUHJvY2Vzc0hhbmRsZSA6IE5TT2JqZWN0CiArIChSQlNQcm9jZXNzSGFu
ZGxlICopaGFuZGxlRm9ySWRlbnRpZmllcjooUkJTUHJvY2Vzc0lkZW50aWZpZXIgKilpZGVudGlm
aWVyIGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yOwogKyAoUkJTUHJvY2Vzc0hhbmRsZSAqKWN1
cnJlbnRQcm9jZXNzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIHBp
ZF90IHBpZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBSQlNQcm9j
ZXNzU3RhdGUgKmN1cnJlbnRTdGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
c3Ryb25nKSBSQlNQcm9jZXNzTGltaXRhdGlvbnMgKmFjdGl2ZUxpbWl0YXRpb25zOwogQGVuZAog
CitAaW50ZXJmYWNlIFJCU1Byb2Nlc3NTdGF0ZVVwZGF0ZSA6IE5TT2JqZWN0CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2VzczsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nLCBudWxsYWJsZSkgUkJTUHJv
Y2Vzc1N0YXRlICpzdGF0ZTsKK0BlbmQKKworQGNsYXNzIFJCU1Byb2Nlc3NNb25pdG9yOworQGNs
YXNzIFJCU1Byb2Nlc3NQcmVkaWNhdGU7CitAY2xhc3MgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRv
cjsKK0Bwcm90b2NvbCBSQlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyaW5nOworCit0eXBlZGVmIHZv
aWQgKF5SQlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyYXRvcikoaWQ8UkJTUHJvY2Vzc01vbml0b3JD
b25maWd1cmluZz4gY29uZmlnKTsKK3R5cGVkZWYgdm9pZCAoXlJCU1Byb2Nlc3NVcGRhdGVIYW5k
bGVyKShSQlNQcm9jZXNzTW9uaXRvciAqbW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2Vz
cywgUkJTUHJvY2Vzc1N0YXRlVXBkYXRlICp1cGRhdGUpOworCitAcHJvdG9jb2wgUkJTUHJvY2Vz
c01hdGNoaW5nIDxOU09iamVjdD4KKy0gKFJCU1Byb2Nlc3NQcmVkaWNhdGUgKilwcm9jZXNzUHJl
ZGljYXRlOworQGVuZAorCitAcHJvdG9jb2wgUkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZwor
LSAodm9pZClzZXRQcmVkaWNhdGVzOihudWxsYWJsZSBOU0FycmF5PFJCU1Byb2Nlc3NQcmVkaWNh
dGUgKj4gKilwcmVkaWNhdGVzOworLSAodm9pZClzZXRTdGF0ZURlc2NyaXB0b3I6KG51bGxhYmxl
IFJCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3IgKilkZXNjcmlwdG9yOworLSAodm9pZClzZXRVcGRh
dGVIYW5kbGVyOihudWxsYWJsZSBSQlNQcm9jZXNzVXBkYXRlSGFuZGxlcilibG9jazsKK0BlbmQK
KworQGludGVyZmFjZSBSQlNQcm9jZXNzTW9uaXRvciA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+Cisr
IChpbnN0YW5jZXR5cGUpbW9uaXRvcldpdGhDb25maWd1cmF0aW9uOihOU19OT0VTQ0FQRSBSQlNQ
cm9jZXNzTW9uaXRvckNvbmZpZ3VyYXRvcilibG9jazsKK0BlbmQKKworQGludGVyZmFjZSBSQlNQ
cm9jZXNzUHJlZGljYXRlIDogTlNPYmplY3QgPFJCU1Byb2Nlc3NNYXRjaGluZz4KKysgKFJCU1By
b2Nlc3NQcmVkaWNhdGUgKilwcmVkaWNhdGVNYXRjaGluZ0hhbmRsZTooUkJTUHJvY2Vzc0hhbmRs
ZSAqKXByb2Nlc3M7CitAZW5kCisKK0BpbnRlcmZhY2UgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRv
ciA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CisrIChpbnN0YW5jZXR5cGUpZGVzY3JpcHRvcjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGNvcHksIG51bGxhYmxlKSBOU0FycmF5PE5T
U3RyaW5nICo+ICplbmRvd21lbnROYW1lc3BhY2VzOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVM
TF9FTkQKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
aWNhdGlvblN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRp
b25TdGF0ZVRyYWNrZXIuaAppbmRleCAzY2QyYTE1Yjg5OTQxOTlhY2ZhNzllZTNjN2I3MjdmODg2
ODAyZmNmLi5mNTFmMTc4YzhiMDY0N2VmM2VmMGIwMDY1YWY0ODkzMmZkYzQ4ODVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKQEAg
LTc1LDcgKzc1LDYgQEAgZW51bSBjbGFzcyBBcHBsaWNhdGlvblR5cGUgewogfTsKIAogQXBwbGlj
YXRpb25UeXBlIGFwcGxpY2F0aW9uVHlwZShVSVdpbmRvdyAqKTsKLWJvb2wgaXNBcHBsaWNhdGlv
bkZvcmVncm91bmQocGlkX3QpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0KaW5kZXggYzQyOWRkYTI3NDFiNTg3MDgwZWY3
NDUyYmNhZDg2MjEwNTk4OTA0MC4uZmZhMzVkZDYxNGY4NDQzZjEwOTA2ZGViZjlmYzA4OTkxMzkw
YmZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIubW0KQEAgLTI5LDggKzI5LDggQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIgorI2ltcG9ydCAiRW5kb3dtZW50U3Rh
dGVUcmFja2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJSdW5uaW5nQm9hcmRT
ZXJ2aWNlc1NQSS5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlL
aXRTUEkuaCIKICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgpAQCAtMTQyLDcgKzE0
Miw3IEBAIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcihV
SVZpZXcgKnZpZXcsIFNFTCBkaWRFbnRlckJhY2tnCiAgICAgICAgIHBpZF90IGFwcGxpY2F0aW9u
UElEID0gc2VydmljZVZpZXdDb250cm9sbGVyLl9ob3N0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAg
ICAgIEFTU0VSVChhcHBsaWNhdGlvblBJRCk7CiAKLSAgICAgICAgbV9pc0luQmFja2dyb3VuZCA9
ICFpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChhcHBsaWNhdGlvblBJRCk7CisgICAgICAgIG1faXNJ
bkJhY2tncm91bmQgPSAhRW5kb3dtZW50U3RhdGVUcmFja2VyOjppc0FwcGxpY2F0aW9uRm9yZWdy
b3VuZChhcHBsaWNhdGlvblBJRCk7CiAKICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzM0MDI4OTIxPi4gSWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaXMgU3RvcmVLaXRV
SVNlcnZpY2UgdGhlbiBpdCBpcyBhbHNvIGEgVmlld1NlcnZpY2UKICAgICAgICAgLy8gYW5kIGlz
IGFsd2F5cyBpbiB0aGUgYmFja2dyb3VuZC4gV2UgbmVlZCB0byB0cmVhdCBTdG9yZUtpdFVJU2Vy
dmljZSBhcyBmb3JlZ3JvdW5kIGZvciB0aGUgcHVycG9zZSBvZiBwcm9jZXNzIHN1c3BlbnNpb24K
QEAgLTE2NiwzNCArMTY2LDYgQEAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxpY2F0aW9u
U3RhdGVUcmFja2VyKFVJVmlldyAqdmlldywgU0VMIGRpZEVudGVyQmFja2cKICAgICB9CiB9CiAK
LWJvb2wgaXNBcHBsaWNhdGlvbkZvcmVncm91bmQocGlkX3QgcGlkKQotewotICAgIFJCU1Byb2Nl
c3NJZGVudGlmaWVyICpwcm9jZXNzSWRlbnRpZmllciA9IFtSQlNQcm9jZXNzSWRlbnRpZmllciBp
ZGVudGlmaWVyV2l0aFBpZDpwaWRdOwotICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJpc0FwcGxpY2F0aW9u
Rm9yZWdyb3VuZDogRmFpbGVkIHRvIGNvbnN0cnVjdCBSQlNQcm9jZXNzSWRlbnRpZmllciBmcm9t
IFBJRCAlZCIsIHBpZCk7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4gdW5h
YmxlIHRvIGRldGVybWluZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZpb3Ig
YW5kIHRvIGF2b2lkCi0gICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3ZSBm
YWlsLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKLSAgICBSQlNQcm9jZXNzSGFuZGxlICpwcm9jZXNzSGFuZGxlID0gW1JCU1Byb2Nlc3NI
YW5kbGUgaGFuZGxlRm9ySWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllciBlcnJvcjomZXJyb3Jd
OwotICAgIGlmICghcHJvY2Vzc0hhbmRsZSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQ
cm9jZXNzU3VzcGVuc2lvbiwgImlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kOiBGYWlsZWQgdG8gZ2V0
IFJCU1Byb2Nlc3NIYW5kbGUgZm9yIHByb2Nlc3Mgd2l0aCBQSUQgJWQsIGVycm9yOiAle3B1Ymxp
Y31AIiwgcGlkLCBlcnJvcik7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4g
dW5hYmxlIHRvIGRldGVybWluZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZp
b3IgYW5kIHRvIGF2b2lkCi0gICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3
ZSBmYWlsLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSQlNQcm9jZXNzU3Rh
dGUgKnN0YXRlID0gcHJvY2Vzc0hhbmRsZS5jdXJyZW50U3RhdGU7Ci0gICAgaWYgKHN0YXRlLnRh
c2tTdGF0ZSAhPSBSQlNUYXNrU3RhdGVSdW5uaW5nU2NoZWR1bGVkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiaXNBcHBsaWNhdGlvbkZvcmVncm91bmQ6
IFByb2Nlc3Mgd2l0aCBQSUQgJWQgaXMgbm90IHJ1bm5pbmciLCBwaWQpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtbc3RhdGUgZW5kb3dtZW50TmFtZXNwYWNl
c10gY29udGFpbnNPYmplY3Q6QCJjb20uYXBwbGUuZnJvbnRib2FyZC52aXNpYmlsaXR5Il07Ci19
Ci0KIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOjp+QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoKQog
ewogICAgIFJFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgIiVwIC0gfkFwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21l
bnRTdGF0ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRl
VHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMTlhNTg4M2U0MjFjYjhmZDk0ZDk0ZGM0NzlhNjdlMjc4
NWJlYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21l
bnRTdGF0ZVRyYWNrZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvV2Vha0hhc2hTZXQuaD4KKworT0JKQ19DTEFTUyBSQlNQcm9jZXNz
TW9uaXRvcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwor
Y2xhc3MgRW5kb3dtZW50U3RhdGVUcmFja2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRW5kb3dtZW50U3RhdGVUcmFja2VyJiBzaW5nbGV0b24o
KTsKKyAgICB+RW5kb3dtZW50U3RhdGVUcmFja2VyKCk7CisKKyAgICBjbGFzcyBDbGllbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJGYWNp
bmdDaGFuZ2VkKGJvb2wpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgaXNWaXNpYmxlQ2hhbmdl
ZChib29sKSB7IH0KKyAgICB9OworCisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX2lzVmlzaWJsZTsgfQorICAgIGJvb2wgaXNVc2VyRmFjaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9pc1VzZXJGYWNpbmc7IH0KKworICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYpOworICAgIHZv
aWQgcmVtb3ZlQ2xpZW50KENsaWVudCYpOworCisgICAgc3RhdGljIGJvb2wgaXNBcHBsaWNhdGlv
bkZvcmVncm91bmQocGlkX3QpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRl
c3Ryb3llZDxFbmRvd21lbnRTdGF0ZVRyYWNrZXI+OworICAgIEVuZG93bWVudFN0YXRlVHJhY2tl
cigpOworICAgIHZvaWQgc2V0SXNVc2VyRmFjaW5nKGJvb2wpOworICAgIHZvaWQgc2V0SXNWaXNp
YmxlKGJvb2wpOworCisgICAgV2Vha0hhc2hTZXQ8Q2xpZW50PiBtX2NsaWVudHM7CisgICAgUmV0
YWluUHRyPFJCU1Byb2Nlc3NNb25pdG9yPiBtX3Byb2Nlc3NNb25pdG9yOworICAgIGJvb2wgbV9p
c1VzZXJGYWNpbmc7CisgICAgYm9vbCBtX2lzVmlzaWJsZTsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODk1ZDFhNDU3YTk0MjMzM2FjZDZiZDNlMWUzZGQ0YzBhZDA3N2JkOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tl
ci5tbQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5o
IgorI2ltcG9ydCAiUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgTlNTdHJpbmcqIHZpc2liaWxpdHlFbmRvd21lbnQgPSBAImNvbS5h
cHBsZS5mcm9udGJvYXJkLnZpc2liaWxpdHkiOworc3RhdGljIE5TU3RyaW5nKiB1c2VyZmFjaW5n
RW5kb3dtZW50ID0gQCJjb20uYXBwbGUubGF1bmNoc2VydmljZXMudXNlcmZhY2luZyI7CisKK3N0
YXRpYyBSQlNQcm9jZXNzSGFuZGxlICpoYW5kbGVGb3JQSUQocGlkX3QgcGlkKQoreworICAgIFJC
U1Byb2Nlc3NJZGVudGlmaWVyICpwcm9jZXNzSWRlbnRpZmllciA9IFtSQlNQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyV2l0aFBpZDpwaWRdOworICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJoYW5kbGVG
b3JQSUQ6IEZhaWxlZCB0byBjb25zdHJ1Y3QgUkJTUHJvY2Vzc0lkZW50aWZpZXIgZnJvbSBQSUQg
JWQiLCBwaWQpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIFJCU1Byb2Nlc3NIYW5kbGUgKnByb2Nlc3NIYW5kbGUgPSBbUkJTUHJv
Y2Vzc0hhbmRsZSBoYW5kbGVGb3JJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyIGVycm9yOiZl
cnJvcl07CisgICAgaWYgKCFwcm9jZXNzSGFuZGxlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kb3dtZW50c0ZvclBpZDogRmFpbGVkIHRvIGdldCBS
QlNQcm9jZXNzSGFuZGxlIGZvciBwcm9jZXNzIHdpdGggUElEICVkLCBlcnJvcjogJXtwdWJsaWN9
QCIsIHBpZCwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVy
biBwcm9jZXNzSGFuZGxlOworfQorCitzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmVuZG93bWVu
dHNGb3JIYW5kbGUoUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2Vzc0hhbmRsZSkKK3sKKyAgICBpZiAo
IXByb2Nlc3NIYW5kbGUpIHsKKyAgICAgICAgLy8gV2UgYXNzdW1lIGZvcmVncm91bmQgd2hlbiB1
bmFibGUgdG8gZGV0ZXJtaW5lIHN0YXRlIHRvIG1haW50YWluIHByZS1leGlzdGluZyBiZWhhdmlv
ciBhbmQgdG8gYXZvaWQKKyAgICAgICAgLy8gbm90IHJlbmRlcmluZyBhbnl0aGluZyB3aGVuIHdl
IGZhaWwuCisgICAgICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6dmlzaWJpbGl0eUVu
ZG93bWVudCwgdXNlcmZhY2luZ0VuZG93bWVudCwgbmlsXTsKKyAgICB9CisKKyAgICBSQlNQcm9j
ZXNzU3RhdGUgKnN0YXRlID0gcHJvY2Vzc0hhbmRsZS5jdXJyZW50U3RhdGU7CisgICAgaWYgKHN0
YXRlLnRhc2tTdGF0ZSAhPSBSQlNUYXNrU3RhdGVSdW5uaW5nU2NoZWR1bGVkKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kb3dtZW50c0ZvckhhbmRs
ZTogUHJvY2VzcyB3aXRoIFBJRCAlZCBpcyBub3QgcnVubmluZyIsIHByb2Nlc3NIYW5kbGUucGlk
KTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICByZXR1cm4gW3N0YXRlIGVuZG93
bWVudE5hbWVzcGFjZXNdOworfQorCitib29sIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBs
aWNhdGlvbkZvcmVncm91bmQocGlkX3QgcGlkKQoreworICAgIHJldHVybiBbZW5kb3dtZW50c0Zv
ckhhbmRsZShoYW5kbGVGb3JQSUQocGlkKSkgY29udGFpbnNPYmplY3Q6dmlzaWJpbGl0eUVuZG93
bWVudF07Cit9CisKK0VuZG93bWVudFN0YXRlVHJhY2tlciYgRW5kb3dtZW50U3RhdGVUcmFja2Vy
OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBhdXRvIHRyYWNrZXIgPSBOZXZlckRlc3Ryb3ll
ZDxFbmRvd21lbnRTdGF0ZVRyYWNrZXI+KCk7CisgICAgcmV0dXJuIHRyYWNrZXI7Cit9CisKK0Vu
ZG93bWVudFN0YXRlVHJhY2tlcjo6RW5kb3dtZW50U3RhdGVUcmFja2VyKCkKK3sKKyAgICBhdXRv
IHByb2Nlc3NIYW5kbGUgPSBbUkJTUHJvY2Vzc0hhbmRsZSBjdXJyZW50UHJvY2Vzc107CisgICAg
YXV0byBlbmRvd21lbnROYW1lc3BhY2VzID0gZW5kb3dtZW50c0ZvckhhbmRsZShwcm9jZXNzSGFu
ZGxlKTsKKworICAgIG1faXNVc2VyRmFjaW5nID0gW2VuZG93bWVudE5hbWVzcGFjZXMgY29udGFp
bnNPYmplY3Q6dXNlcmZhY2luZ0VuZG93bWVudF07CisgICAgbV9pc1Zpc2libGUgPSBbZW5kb3dt
ZW50TmFtZXNwYWNlcyBjb250YWluc09iamVjdDp2aXNpYmlsaXR5RW5kb3dtZW50XTsKKworICAg
IG1fcHJvY2Vzc01vbml0b3IgPSBbUkJTUHJvY2Vzc01vbml0b3IgbW9uaXRvcldpdGhDb25maWd1
cmF0aW9uOlt0aGlzLCBwcm9jZXNzSGFuZGxlID0gcmV0YWluUHRyKHByb2Nlc3NIYW5kbGUpXSAo
aWQ8UkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZz4gY29uZmlnKSB7CisKKyAgICAgICAgUkJT
UHJvY2Vzc1ByZWRpY2F0ZSAqcHJvY2Vzc1ByZWRpY2F0ZSA9IFtSQlNQcm9jZXNzUHJlZGljYXRl
IHByZWRpY2F0ZU1hdGNoaW5nSGFuZGxlOnByb2Nlc3NIYW5kbGUuZ2V0KCldOworCisgICAgICAg
IFJCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3IgKnN0YXRlRGVzY3JpcHRvciA9IFtSQlNQcm9jZXNz
U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3JdOworICAgICAgICBzdGF0ZURlc2NyaXB0b3IuZW5k
b3dtZW50TmFtZXNwYWNlcyA9IEBbdmlzaWJpbGl0eUVuZG93bWVudCwgdXNlcmZhY2luZ0VuZG93
bWVudF07CisKKyAgICAgICAgW2NvbmZpZyBzZXRQcmVkaWNhdGVzOkBbcHJvY2Vzc1ByZWRpY2F0
ZV1dOworICAgICAgICBbY29uZmlnIHNldFN0YXRlRGVzY3JpcHRvcjpzdGF0ZURlc2NyaXB0b3Jd
OworCisgICAgICAgIFtjb25maWcgc2V0VXBkYXRlSGFuZGxlcjpbdGhpc10gKFJCU1Byb2Nlc3NN
b25pdG9yICogX05vbm51bGwgbW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqIF9Ob25udWxsIHBy
b2Nlc3MsIFJCU1Byb2Nlc3NTdGF0ZVVwZGF0ZSAqIF9Ob25udWxsIHVwZGF0ZSkgbXV0YWJsZSB7
CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
dGhpcywgZW5kb3dtZW50TmFtZXNwYWNlcyA9IHJldGFpblB0cih1cGRhdGUuc3RhdGUuZW5kb3dt
ZW50TmFtZXNwYWNlcyldIHsKKyAgICAgICAgICAgICAgICBzZXRJc1VzZXJGYWNpbmcoW2VuZG93
bWVudE5hbWVzcGFjZXMgY29udGFpbnNPYmplY3Q6dXNlcmZhY2luZ0VuZG93bWVudF0pOworICAg
ICAgICAgICAgICAgIHNldElzVmlzaWJsZShbZW5kb3dtZW50TmFtZXNwYWNlcyBjb250YWluc09i
amVjdDp2aXNpYmlsaXR5RW5kb3dtZW50XSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07
CisgICAgfV07Cit9CisKK3ZvaWQgRW5kb3dtZW50U3RhdGVUcmFja2VyOjphZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLmFkZChjbGllbnQpOworfQorCit2b2lkIEVu
ZG93bWVudFN0YXRlVHJhY2tlcjo6cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KQoreworICAg
IG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKK30KKwordm9pZCBFbmRvd21lbnRTdGF0ZVRyYWNr
ZXI6OnNldElzVXNlckZhY2luZyhib29sIGlzVXNlckZhY2luZykKK3sKKyAgICBpZiAobV9pc1Vz
ZXJGYWNpbmcgPT0gaXNVc2VyRmFjaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1VzZXJG
YWNpbmcgPSBpc1VzZXJGYWNpbmc7CisKKyAgICBSRUxFQVNFX0xPRyhWaWV3U3RhdGUsICIlcCAt
IEVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNVc2VyRmFjaW5nKCVzKSIsIHRoaXMsIGlzVXNl
ckZhY2luZyA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBj
b3B5VG9WZWN0b3IobV9jbGllbnRzKSkgeworICAgICAgICBpZiAoY2xpZW50KQorICAgICAgICAg
ICAgY2xpZW50LT5pc1VzZXJGYWNpbmdDaGFuZ2VkKG1faXNVc2VyRmFjaW5nKTsKKyAgICB9Cit9
CisKK3ZvaWQgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2li
bGUpCit7CisgICAgaWYgKG1faXNWaXNpYmxlID09IGlzVmlzaWJsZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faXNWaXNpYmxlID0gaXNWaXNpYmxlOworCisgICAgUkVMRUFTRV9MT0coVmlld1N0
YXRlLCAiJXAgLSBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVmlzaWJsZSglcykiLCB0aGlz
LCBpc1Zpc2libGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50
IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpIHsKKyAgICAgICAgaWYgKGNsaWVudCkKKyAgICAg
ICAgICAgIGNsaWVudC0+aXNWaXNpYmxlQ2hhbmdlZChtX2lzVmlzaWJsZSk7CisgICAgfQorfQor
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBmMTAxMWJhY2UyYTUzYzkzYTE0MWU3OWM0YjM2YTZhMjQ3MWQwMzZhLi45ZjhiZmQyODVh
N2FjYmI5OWFkMjQ3MDJkN2NkMDZjM2I5Nzg4OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUyNSw2ICs1MjUsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IFJlZgogICAgIAogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZygpKQogICAgICAgICBkaXNhYmxl
U2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2VzcygpOworCisgICAgRW5kb3dt
ZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTU2Niw2ICs1NjgsMTAgQEAgV2ViUGFnZVByb3h5Ojp+
V2ViUGFnZVByb3h5KCkKICNpZm5kZWYgTkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5k
ZWNyZW1lbnQoKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBFbmRv
d21lbnRTdGF0ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisjZW5k
aWYKIH0KIAogLy8gRklYTUU6IFNob3VsZCByZXR1cm4gYSBjb25zdCBQYWdlQ2xpZW50JiBhbmQg
YWRkIGEgc2VwYXJhdGUgbm9uLWNvbnN0CkBAIC03NDYyLDI5ICs3NDY4LDYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiAgICAgICAgIGhhbmRsZXItPnN0b3BBbGxUYXNrc0ZvclBhZ2UoKnRoaXMsIHByb2Nlc3MpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNz
V2lsbEJlY29tZVN1c3BlbmRlZCgpCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkID0g
bV9wYWdlTG9hZFN0YXRlLm5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKTsKLSAgICBpZiAobV9o
YXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRlZCkKLSAgICAgICAgc2V0TmV0d29ya1JlcXVlc3Rz
SW5Qcm9ncmVzcyhmYWxzZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzV2lsbEJl
Y29tZUZvcmVncm91bmQoKQotewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQpIHsK
LSAgICAgICAgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyh0cnVlKTsKLSAgICAgICAgbV9o
YXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRlZCA9IGZhbHNlOwotICAgIH0KLX0KLSNlbmRpZgot
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3Rh
dGVSZWFzb24pCiB7CiAgICAgbV9tYWluRnJhbWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4NzA2NGNmY2Y2N2M1YTgyNzM5YjQxODNmOGJiODk5
NWY5ZTkxNzhkLi4zYzg0YzFjZjkzOTU3NTM2ZmE3YmYxYmE0ZGI1ODdmZTdmZDNmNmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIxLDYgKzEyMSw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorI2luY2x1ZGUgIkVuZG93bWVudFN0YXRlVHJhY2tlci5oIgogI2luY2x1ZGUgIkdlc3R1cmVU
eXBlcy5oIgogI2luY2x1ZGUgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIgogI2VuZGlmCkBA
IC00MzMsNyArNDM0LDEyIEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50CiAjZW5kaWYKLSAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQYWdlUHJveHk+IHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICwgcHVibGljIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6Q2xpZW50CisjZWxzZQorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4KKyNlbmRpZgorICAgIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQ
cm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdmlydHVh
bCB+V2ViUGFnZVByb3h5KCk7CkBAIC0xMTgzLDYgKzExODksOCBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCk7
CiAgICAgdm9pZCBwcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKKyAgICB2b2lkIGlzVXNl
ckZhY2luZ0NoYW5nZWQoYm9vbCkgZmluYWw7CisgICAgdm9pZCBpc1Zpc2libGVDaGFuZ2VkKGJv
b2wpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklF
VykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQppbmRleCA5YmFkZWNiMmE0MjJjODM3YzVkMzNlMjJhNDQ0NjdiODE1OWI0YTM3Li4zODc5YWJk
MTVhNjQzYjBjYmUyNjZmOWY1MjFiYTFlNjZkZWY3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1w
b3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCisjaW1wb3J0ICJFbmRvd21lbnRTdGF0ZVRyYWNrZXIu
aCIKICNpbXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIKICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCkBA
IC0xNjYsNyArMTY3LDcgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNBcHBsaWNhdGlvblZpc2li
bGUoKQogICAgIHBpZF90IGFwcGxpY2F0aW9uUElEID0gc2VydmljZVZpZXdDb250cm9sbGVyLl9o
b3N0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgQVNTRVJUKGFwcGxpY2F0aW9uUElEKTsKIAotICAg
IHJldHVybiBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChhcHBsaWNhdGlvblBJRCk7CisgICAgcmV0
dXJuIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvbkZvcmVncm91bmQoYXBwbGlj
YXRpb25QSUQpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA2
MTRkY2JmMzdjMDQ1ZGE4YjQ5ODJjYzhkYTM4NTUwYTEyYmUyNDdkLi5lYTVlNGVmZDJkZDEzZjE3
YjI4MWY5ODM5NDY1OTdjYjg0NzhkZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE2MDAsNiArMTYwMCw0NCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6d2lsbE9wZW5BcHBMaW5rKCkKICAgICB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCkKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzTmV0d29ya1JlcXVlc3RzT25T
dXNwZW5kZWQgPSBtX3BhZ2VMb2FkU3RhdGUubmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpOwor
ICAgIGlmIChtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkKQorICAgICAgICBzZXROZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKGZhbHNlKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnBy
b2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9oYXNOZXR3b3JrUmVxdWVzdHNPblN1
c3BlbmRlZCkgeworICAgICAgICBzZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKHRydWUpOwor
ICAgICAgICBtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkID0gZmFsc2U7CisgICAgfQor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aXNVc2VyRmFjaW5nQ2hhbmdlZChib29sIGlzVXNlckZh
Y2luZykKK3sKKyNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAoIWlzVXNlckZhY2lu
ZykKKyAgICAgICAgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBlbHNlCisgICAgICAg
IHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlzVXNl
ckZhY2luZyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmlzVmlzaWJsZUNoYW5n
ZWQoYm9vbCBpc1Zpc2libGUpCit7CisgICAgVU5VU0VEX1BBUkFNKGlzVmlzaWJsZSk7Cit9CisK
ICNpZiBQTEFURk9STShJT1MpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NUb0Fzc2V0
U2VydmljZXMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZTI2YjQwM2Y4NmQ4NjA3MGE3N2I3ZWFlNGYzMWY0Y2VjNjE4ZjUwOC4u
MzcwMDcxYjMxODZkMTBkOWI1ZmJiYjdjYTNiODlmY2NlOGVjZDMxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzU3LDYgKzE3NTcs
OCBAQAogCQlDREJCNDlGRDI0MEQ5QTcyMDAxN0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9uQ29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RCQjQ5RkMyNDBEOUE3MjAwMTdDMjkyIC8qIFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24uaCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVl
blN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICov
OyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
aCAqLzsgfTsKKwkJQ0RDREM5OUQyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RD
REM5OUIyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5oICovOyB9Owor
CQlDRENEQzk5RTI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDREM5OUMyNDhG
RThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5tbSAqLzsgfTsKIAkJQ0RFNTU1
MzIyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREU1NTUyOTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0RFNTU1MzMyNDA2RUI4QzAwOEEzRERCIC8q
IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1NTJBMjQwNkI4OTYwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNERTU1
NTM0MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKQEAgLTUxODAsNiArNTE4Miw4IEBACiAJCUNEQ0E4NUM2MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRENBODVENDEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CisJCUNEQ0RDOTlCMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRy
YWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5kb3dtZW50U3RhdGVUcmFja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0RDOTlDMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21l
bnRTdGF0ZVRyYWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFbmRvd21lbnRTdGF0ZVRy
YWNrZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDUzNTZGMjQwREQzNDMw
MEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVk
aW9TZXNzaW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREQ1
MzU3MDI0MERENEVGMDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENTM1NzEyNDBEREUwNjAwRjdCOEM0
IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5ODYsNiArNjk5MCw4IEBACiAJCQkJMkQ1ODc1
QkQyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggKi8sCiAJCQkJ
MkQ1ODc1QkIyMTlCMjhBNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3Nh
Z2VzLmluICovLAogCQkJCTJENTg3NUJFMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbSAqLywKKwkJCQlDRENEQzk5QjI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dt
ZW50U3RhdGVUcmFja2VyLmggKi8sCisJCQkJQ0RDREM5OUMyNDhGRThEQTAwQTY5NTIyIC8qIEVu
ZG93bWVudFN0YXRlVHJhY2tlci5tbSAqLywKIAkJCQkyREQ0NUFEQzFFNUY4OTcyMDA2QzM1NUYg
LyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaCAqLywKIAkJCQkyREQ0NUFERDFFNUY4OTcyMDA2
QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIubW0gKi8sCiAJCQkJMEZDQjRFMzYxOEJC
RTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggKi8sCkBAIC0xMDc4NCw2ICsxMDc5
MCw3IEBACiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDREM5OUQyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93
bWVudFN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAw
MzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1
NzVGQjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0I4MjY0ODIzMDUwQzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTI3MDEsNiArMTI3MDgsNyBAQAogCQkJCTFBNjQyMjk5MTJERDAyOTIwMENBQUUy
QyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTY0MjMwODEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MDIxMkI2QTcxMDBGNDkzRkQgLyogRW5j
b2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRENEQzk5RTI0OEZFOERBMDBBNjk1MjIgLyog
RW5kb3dtZW50U3RhdGVUcmFja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTc2MDIxNDk2
Qjk3OTAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NDIx
NDY1NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJh
cmllcy9DaGFuZ2VMb2cKaW5kZXggNGYzMjhhMGYzMWE3ZDRkNjU4Y2Q1Yjc1NTBkYzAyNDU4MTYy
ODJhNS4uM2EyNmNlYzIxMTgyZjg1ZjU3ZGQ4YzExOGRkODhjODVmYjNhNTdmYyAxMDA2NDQKLS0t
IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMgY29udGludWUgdG8gcGxh
eSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktp
dFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3
b3JrL1J1bm5pbmdCb2FyZFNlcnZpY2VzLnRiZDoKKwogMjAyMC0wNi0wNCAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgdHZPUzogUmVtb3ZlIGFybTY0ZSBy
ZWZlcmVuY2VzIGluIC50YmQgZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9XZWJL
aXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvaU9TLzEzL1J1bm5pbmdCb2FyZFNlcnZpY2VzLmZyYW1l
d29yay9SdW5uaW5nQm9hcmRTZXJ2aWNlcy50YmQgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJp
dmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xMy9SdW5uaW5nQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsv
UnVubmluZ0JvYXJkU2VydmljZXMudGJkCmluZGV4IGRiYjNlNDE5OWE1ZDBmOWFkMDA0MDZmNzQ2
OWRjMWVjMzg3Y2QxN2IuLjI1YmIwNzY4ZTVjZDExMWQ4YzEyYTIwYTE4Y2I1OGEyN2ExNjZhMjEg
MTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMv
aU9TLzEzL1J1bm5pbmdCb2FyZFNlcnZpY2VzLmZyYW1ld29yay9SdW5uaW5nQm9hcmRTZXJ2aWNl
cy50YmQKKysrIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9p
T1MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1J1bm5pbmdCb2FyZFNlcnZpY2Vz
LnRiZApAQCAtNiw1ICs2LDUgQEAgcGxhdGZvcm06IGlvcwogZXhwb3J0czoKICAgLSBhcmNoczog
ICAgICAgICAgIFsgeDg2XzY0LCBhcm02NCwgYXJtNjRlIF0KICAgICBzeW1ib2xzOiAgICAgICAg
IFsgX1JCU1Byb2Nlc3NUaW1lTGltaXRhdGlvbk5vbmUgXQotICAgIG9iamMtY2xhc3NlczogICAg
WyBSQlNBdHRyaWJ1dGUsIFJCU0RvbWFpbkF0dHJpYnV0ZSwgUkJTVGFyZ2V0LCBSQlNBc3NlcnRp
b24sIFJCU1Byb2Nlc3NJZGVudGlmaWVyLCBSQlNQcm9jZXNzU3RhdGUsIFJCU1Byb2Nlc3NIYW5k
bGUgXQorICAgIG9iamMtY2xhc3NlczogICAgWyBSQlNBdHRyaWJ1dGUsIFJCU0RvbWFpbkF0dHJp
YnV0ZSwgUkJTVGFyZ2V0LCBSQlNBc3NlcnRpb24sIFJCU1Byb2Nlc3NJZGVudGlmaWVyLCBSQlNQ
cm9jZXNzU3RhdGUsIFJCU1Byb2Nlc3NIYW5kbGUsIEJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRvciwg
UkJTUHJvY2Vzc1ByZWRpY2F0ZSwgUkJTUHJvY2Vzc01vbml0b3IgXQogLi4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401502</attachid>
            <date>2020-06-09 18:22:08 -0700</date>
            <delta_ts>2020-06-10 17:04:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212981-20200609182207.patch</filename>
            <type>text/plain</type>
            <size>32252</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5OWM3MzUwYTA4MTQwZmNlY2UxMjg2
NDY1ZmJlYWY2YTQyNmE2YjQuLjlkYmM5MWIxZGRjNTBmMzk4ZmRkYmIzMGNjMGJjMDI4NTE4Nzg0
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMDkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMgY29udGludWUgdG8g
cGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGhlIGFiaWxpdHkgdG8gY2FsbCBjb3B5VG9WZWN0b3IoKSBvbiBhIFdlYWtIYXNoU2V0LiBUaGlz
IHJlcXVpcmVzIHR3byBjaGFuZ2VzOgorICAgICAgICAtIEEgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gdGhhdCByZXR1cm5zIGEgVmVjdG9yPFdlYWtQdHI8VD4+IGZyb20gY29weVRvVmVjdG9yKCkK
KyAgICAgICAgLSBBIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHRoYXQgY2FsbHMgY2FsY3VsYXRl
U2l6ZSgpIHJhdGhlciB0aGFuIHNpemUoKSBvbiB0aGUgb2JqZWN0CisgICAgICAgICAgYmVpbmcg
aXRlcmF0ZWQgdXBvbi4KKworICAgICAgICAqIHd0Zi9XZWFrSGFzaFNldC5oOgorICAgICAgICAo
V1RGOjpjb3B5VG9WZWN0b3IpOgorCiAyMDIwLTA2LTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IHJlYWQtb25seSBtb2RlIGZv
ciBwcmVmZXJlbmNlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlNDNk
MmVhODQ1NDBiZWNmM2ZlZDAwZjc1YTFlMzdmMDE5NmFjYzEuLjdjYTdiYjZiNjE2MmU2ZjM5NmQy
NjVhYzMyYWFiZmE1YmFhZWUyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDYt
MDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3Qg
V2ViS2l0IGFwcHMgY29udGludWUgdG8gcGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSdW5uaW5nQm9hcmQgd2lsbCB0cmFjayB3aGV0aGVyIGEgcHJv
Y2VzcyAoYW5kIGl0J3MgYXNzb2NpYXRlZCBjaGlsZCBwcm9jZXNzZXMpIGFyZSAidXNlci12aXNp
YmxlIiBieQorICAgICAgICBncmFudGluZyB0aG9zZSBwcm9jZXNzZXMgYW4gImVuZG93bWVudCIs
IHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGVuZG93bWVudCBmb3IgYXBwbGljYXRpb24gdmlzaWJp
bGl0eS4KKyAgICAgICAgVHJhY2sgY2hhbmdlcyB0byB0aGVzZSBlbmRvd21lbnRzIHVzaW5nIGEg
UkJTUHJvY2Vzc01vbml0b3IsIGFuZCBmb3IgQ2F0YWx5c3QgYXBwcywgcmVhY3QgdG8gbG9zaW5n
IHRoZQorICAgICAgICAidXNlci12aXNpYmxlIiBlbmRvd21lbnQgYnkgc3VzcGVuZGluZyBhbGwg
bWVkaWEgcGxheWJhY2suCisKKyAgICAgICAgTW92ZSBhbGwgdGhlIGVuZG93bWVudC1yZWxhdGVk
IGNvZGUgaW50byBhIG5ldyBjbGFzcywgRW5kb3dtZW50U3RhdGVUcmFja2VyLCB3aGljaCBpcyBh
IHNpbmdsZXRvbiBvYmplY3QKKyAgICAgICAgdGhhdCBjYW4gaGF2ZSBtdWxpdHBsZSBXZWJQYWdl
UHJveHkgY2xpZW50cy4gVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlIHByZXZpb3VzbHkgZ2xvYmFs
IHN0YXRpYworICAgICAgICBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCgpIGZ1bmN0aW9uIHRvIHJl
ZmVyIHRvIEVuZG93bWVudFN0YXRlVHJhY2tlciBpbnN0ZWFkLgorCisgICAgICAgIERyaXZlLWJ5
IGZpeDogbW92ZSBzb21lIGlPUy1vbmx5IGZ1bmN0aW9ucyBpbiBXZWJQYWdlUHJveHkuY3BwIGlu
dG8gV2ViUGFnZVByb3h5SU9TLm1tLgorCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9u
U3RhdGVUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6QXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIpOgorICAgICAgICAoV2ViS2l0Ojppc0FwcGxpY2F0aW9uRm9yZWdy
b3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjppc1Zp
c2libGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6Omlz
VXNlckZhY2luZyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJh
Y2tlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUZvclBJRCk6CisgICAgICAg
IChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvbkZvcmVncm91bmQp
OgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGljYXRpb25V
c2VyRmFjaW5nKToKKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5n
bGV0b24pOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OkVuZG93bWVu
dFN0YXRlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6
YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpyZW1v
dmVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElz
VXNlckZhY2luZyk6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0
SXNWaXNpYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5k
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmlzQXBwbGljYXRpb25WaXNpYmxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojppc1VzZXJGYWNpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojppc1Zpc2libGVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAyMC0wNi0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBIaWRlIHRoZSBQaVAgYnV0dG9uIGluIGZ1bGxzY3JlZW4g
bW9kZSBpZiBQaVAgaXMgZGlzYWJsZWQgaW4gcHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCmlu
ZGV4IDNkMmE4M2YxZjExMjA1ODk1Y2Q0ODI3MDYyZjYyOWI5NmYzZGU5MjEuLjc3NjBiNWE1OWQ4
NzY0MTVmMDYyYWI5MTFkOGFkZDYxNTA0ZTM4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1dlYWtIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaApAQCAtMTU1
LDYgKzE1NSwyOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHJJbXBsU2V0IG1fc2V0OwogfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTWFwcGVy
PE1hcEZ1bmN0aW9uLCBjb25zdCBXZWFrSGFzaFNldDxUPiAmLCB2b2lkPiB7CisgICAgdXNpbmcg
U291cmNlSXRlbVR5cGUgPSBXZWFrUHRyPFQ+OworICAgIHVzaW5nIERlc3RpbmF0aW9uSXRlbVR5
cGUgPSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxNYXBGdW5jdGlvbihTb3VyY2VJdGVtVHlwZSYp
Pjo6dHlwZTsKKworICAgIHN0YXRpYyBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4gbWFwKGNv
bnN0IFdlYWtIYXNoU2V0PFQ+JiBzb3VyY2UsIGNvbnN0IE1hcEZ1bmN0aW9uJiBtYXBGdW5jdGlv
bikKKyAgICB7CisgICAgICAgIFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiByZXN1bHQ7Cisg
ICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5jb21wdXRlU2l6ZSgp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogc291cmNlKQorICAgICAgICAgICAgcmVzdWx0
LnVuY2hlY2tlZEFwcGVuZChtYXBGdW5jdGlvbihpdGVtKSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBhdXRvIGNvcHlU
b1ZlY3Rvcihjb25zdCBXZWFrSGFzaFNldDxUPiYgY29sbGVjdGlvbikgLT4gVmVjdG9yPFdlYWtQ
dHI8VD4+Cit7CisgICAgcmV0dXJuIFdURjo6bWFwKGNvbGxlY3Rpb24sIFtdIChhdXRvJiB2KSAt
PiBXZWFrUHRyPFQ+IHsgcmV0dXJuIG1ha2VXZWFrUHRyPFQ+KHYpOyB9KTsKK30KKworCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpXZWFrSGFzaFNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9SdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgK
aW5kZXggODY3ZjZjNzAzM2ZjYWIwMzM2OTgyMDc2ZjRlNDY1MzdhY2YxMTUyZC4uYjliOTQwZTgw
ZDQ2YzYwODY3N2RhMjZhNTc4MmRlYjM4ZmZhNTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKQEAgLTM3
LDYgKzM3LDggQEAgZXh0ZXJuIGNvbnN0IE5TVGltZUludGVydmFsIFJCU1Byb2Nlc3NUaW1lTGlt
aXRhdGlvbk5vbmU7CiAKICNlbHNlCiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRl
cmZhY2UgUkJTQXR0cmlidXRlIDogTlNPYmplY3QKIEBlbmQKIApAQCAtNDYsNiArNDgsNyBAQCBl
eHRlcm4gY29uc3QgTlNUaW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsK
IAogQGludGVyZmFjZSBSQlNUYXJnZXQgOiBOU09iamVjdAogKyAoUkJTVGFyZ2V0ICopdGFyZ2V0
V2l0aFBpZDoocGlkX3QpcGlkOworKyAoUkJTVGFyZ2V0ICopY3VycmVudFByb2Nlc3M7CiBAZW5k
CiAKIEBwcm90b2NvbCBSQlNBc3NlcnRpb25PYnNlcnZpbmc7CkBAIC05MSw4ICs5NCw0NyBAQCBl
eHRlcm4gY29uc3QgTlNUaW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsK
IEBpbnRlcmZhY2UgUkJTUHJvY2Vzc0hhbmRsZSA6IE5TT2JqZWN0CiArIChSQlNQcm9jZXNzSGFu
ZGxlICopaGFuZGxlRm9ySWRlbnRpZmllcjooUkJTUHJvY2Vzc0lkZW50aWZpZXIgKilpZGVudGlm
aWVyIGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yOwogKyAoUkJTUHJvY2Vzc0hhbmRsZSAqKWN1
cnJlbnRQcm9jZXNzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIHBp
ZF90IHBpZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBSQlNQcm9j
ZXNzU3RhdGUgKmN1cnJlbnRTdGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
c3Ryb25nKSBSQlNQcm9jZXNzTGltaXRhdGlvbnMgKmFjdGl2ZUxpbWl0YXRpb25zOwogQGVuZAog
CitAaW50ZXJmYWNlIFJCU1Byb2Nlc3NTdGF0ZVVwZGF0ZSA6IE5TT2JqZWN0CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2VzczsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nLCBudWxsYWJsZSkgUkJTUHJv
Y2Vzc1N0YXRlICpzdGF0ZTsKK0BlbmQKKworQGNsYXNzIFJCU1Byb2Nlc3NNb25pdG9yOworQGNs
YXNzIFJCU1Byb2Nlc3NQcmVkaWNhdGU7CitAY2xhc3MgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRv
cjsKK0Bwcm90b2NvbCBSQlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyaW5nOworCit0eXBlZGVmIHZv
aWQgKF5SQlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyYXRvcikoaWQ8UkJTUHJvY2Vzc01vbml0b3JD
b25maWd1cmluZz4gY29uZmlnKTsKK3R5cGVkZWYgdm9pZCAoXlJCU1Byb2Nlc3NVcGRhdGVIYW5k
bGVyKShSQlNQcm9jZXNzTW9uaXRvciAqbW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2Vz
cywgUkJTUHJvY2Vzc1N0YXRlVXBkYXRlICp1cGRhdGUpOworCitAcHJvdG9jb2wgUkJTUHJvY2Vz
c01hdGNoaW5nIDxOU09iamVjdD4KKy0gKFJCU1Byb2Nlc3NQcmVkaWNhdGUgKilwcm9jZXNzUHJl
ZGljYXRlOworQGVuZAorCitAcHJvdG9jb2wgUkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZwor
LSAodm9pZClzZXRQcmVkaWNhdGVzOihudWxsYWJsZSBOU0FycmF5PFJCU1Byb2Nlc3NQcmVkaWNh
dGUgKj4gKilwcmVkaWNhdGVzOworLSAodm9pZClzZXRTdGF0ZURlc2NyaXB0b3I6KG51bGxhYmxl
IFJCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3IgKilkZXNjcmlwdG9yOworLSAodm9pZClzZXRVcGRh
dGVIYW5kbGVyOihudWxsYWJsZSBSQlNQcm9jZXNzVXBkYXRlSGFuZGxlcilibG9jazsKK0BlbmQK
KworQGludGVyZmFjZSBSQlNQcm9jZXNzTW9uaXRvciA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+Cisr
IChpbnN0YW5jZXR5cGUpbW9uaXRvcldpdGhDb25maWd1cmF0aW9uOihOU19OT0VTQ0FQRSBSQlNQ
cm9jZXNzTW9uaXRvckNvbmZpZ3VyYXRvcilibG9jazsKK0BlbmQKKworQGludGVyZmFjZSBSQlNQ
cm9jZXNzUHJlZGljYXRlIDogTlNPYmplY3QgPFJCU1Byb2Nlc3NNYXRjaGluZz4KKysgKFJCU1By
b2Nlc3NQcmVkaWNhdGUgKilwcmVkaWNhdGVNYXRjaGluZ0hhbmRsZTooUkJTUHJvY2Vzc0hhbmRs
ZSAqKXByb2Nlc3M7CitAZW5kCisKK0BpbnRlcmZhY2UgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRv
ciA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CisrIChpbnN0YW5jZXR5cGUpZGVzY3JpcHRvcjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGNvcHksIG51bGxhYmxlKSBOU0FycmF5PE5T
U3RyaW5nICo+ICplbmRvd21lbnROYW1lc3BhY2VzOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVM
TF9FTkQKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
aWNhdGlvblN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRp
b25TdGF0ZVRyYWNrZXIuaAppbmRleCAzY2QyYTE1Yjg5OTQxOTlhY2ZhNzllZTNjN2I3MjdmODg2
ODAyZmNmLi5mNTFmMTc4YzhiMDY0N2VmM2VmMGIwMDY1YWY0ODkzMmZkYzQ4ODVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKQEAg
LTc1LDcgKzc1LDYgQEAgZW51bSBjbGFzcyBBcHBsaWNhdGlvblR5cGUgewogfTsKIAogQXBwbGlj
YXRpb25UeXBlIGFwcGxpY2F0aW9uVHlwZShVSVdpbmRvdyAqKTsKLWJvb2wgaXNBcHBsaWNhdGlv
bkZvcmVncm91bmQocGlkX3QpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0KaW5kZXggYzQyOWRkYTI3NDFiNTg3MDgwZWY3
NDUyYmNhZDg2MjEwNTk4OTA0MC4uZmZhMzVkZDYxNGY4NDQzZjEwOTA2ZGViZjlmYzA4OTkxMzkw
YmZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIubW0KQEAgLTI5LDggKzI5LDggQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaW1wb3J0ICJBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIgorI2ltcG9ydCAiRW5kb3dtZW50U3Rh
dGVUcmFja2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJSdW5uaW5nQm9hcmRT
ZXJ2aWNlc1NQSS5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlL
aXRTUEkuaCIKICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgpAQCAtMTQyLDcgKzE0
Miw3IEBAIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcihV
SVZpZXcgKnZpZXcsIFNFTCBkaWRFbnRlckJhY2tnCiAgICAgICAgIHBpZF90IGFwcGxpY2F0aW9u
UElEID0gc2VydmljZVZpZXdDb250cm9sbGVyLl9ob3N0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAg
ICAgIEFTU0VSVChhcHBsaWNhdGlvblBJRCk7CiAKLSAgICAgICAgbV9pc0luQmFja2dyb3VuZCA9
ICFpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChhcHBsaWNhdGlvblBJRCk7CisgICAgICAgIG1faXNJ
bkJhY2tncm91bmQgPSAhRW5kb3dtZW50U3RhdGVUcmFja2VyOjppc0FwcGxpY2F0aW9uRm9yZWdy
b3VuZChhcHBsaWNhdGlvblBJRCk7CiAKICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzM0MDI4OTIxPi4gSWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaXMgU3RvcmVLaXRV
SVNlcnZpY2UgdGhlbiBpdCBpcyBhbHNvIGEgVmlld1NlcnZpY2UKICAgICAgICAgLy8gYW5kIGlz
IGFsd2F5cyBpbiB0aGUgYmFja2dyb3VuZC4gV2UgbmVlZCB0byB0cmVhdCBTdG9yZUtpdFVJU2Vy
dmljZSBhcyBmb3JlZ3JvdW5kIGZvciB0aGUgcHVycG9zZSBvZiBwcm9jZXNzIHN1c3BlbnNpb24K
QEAgLTE2NiwzNCArMTY2LDYgQEAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxpY2F0aW9u
U3RhdGVUcmFja2VyKFVJVmlldyAqdmlldywgU0VMIGRpZEVudGVyQmFja2cKICAgICB9CiB9CiAK
LWJvb2wgaXNBcHBsaWNhdGlvbkZvcmVncm91bmQocGlkX3QgcGlkKQotewotICAgIFJCU1Byb2Nl
c3NJZGVudGlmaWVyICpwcm9jZXNzSWRlbnRpZmllciA9IFtSQlNQcm9jZXNzSWRlbnRpZmllciBp
ZGVudGlmaWVyV2l0aFBpZDpwaWRdOwotICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJpc0FwcGxpY2F0aW9u
Rm9yZWdyb3VuZDogRmFpbGVkIHRvIGNvbnN0cnVjdCBSQlNQcm9jZXNzSWRlbnRpZmllciBmcm9t
IFBJRCAlZCIsIHBpZCk7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4gdW5h
YmxlIHRvIGRldGVybWluZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZpb3Ig
YW5kIHRvIGF2b2lkCi0gICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3ZSBm
YWlsLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKLSAgICBSQlNQcm9jZXNzSGFuZGxlICpwcm9jZXNzSGFuZGxlID0gW1JCU1Byb2Nlc3NI
YW5kbGUgaGFuZGxlRm9ySWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllciBlcnJvcjomZXJyb3Jd
OwotICAgIGlmICghcHJvY2Vzc0hhbmRsZSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQ
cm9jZXNzU3VzcGVuc2lvbiwgImlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kOiBGYWlsZWQgdG8gZ2V0
IFJCU1Byb2Nlc3NIYW5kbGUgZm9yIHByb2Nlc3Mgd2l0aCBQSUQgJWQsIGVycm9yOiAle3B1Ymxp
Y31AIiwgcGlkLCBlcnJvcik7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4g
dW5hYmxlIHRvIGRldGVybWluZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZp
b3IgYW5kIHRvIGF2b2lkCi0gICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3
ZSBmYWlsLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSQlNQcm9jZXNzU3Rh
dGUgKnN0YXRlID0gcHJvY2Vzc0hhbmRsZS5jdXJyZW50U3RhdGU7Ci0gICAgaWYgKHN0YXRlLnRh
c2tTdGF0ZSAhPSBSQlNUYXNrU3RhdGVSdW5uaW5nU2NoZWR1bGVkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiaXNBcHBsaWNhdGlvbkZvcmVncm91bmQ6
IFByb2Nlc3Mgd2l0aCBQSUQgJWQgaXMgbm90IHJ1bm5pbmciLCBwaWQpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtbc3RhdGUgZW5kb3dtZW50TmFtZXNwYWNl
c10gY29udGFpbnNPYmplY3Q6QCJjb20uYXBwbGUuZnJvbnRib2FyZC52aXNpYmlsaXR5Il07Ci19
Ci0KIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOjp+QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoKQog
ewogICAgIFJFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgIiVwIC0gfkFwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21l
bnRTdGF0ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRl
VHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMTlhNTg4M2U0MjFjYjhmZDk0ZDk0ZGM0NzlhNjdlMjc4
NWJlYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21l
bnRTdGF0ZVRyYWNrZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvV2Vha0hhc2hTZXQuaD4KKworT0JKQ19DTEFTUyBSQlNQcm9jZXNz
TW9uaXRvcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwor
Y2xhc3MgRW5kb3dtZW50U3RhdGVUcmFja2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRW5kb3dtZW50U3RhdGVUcmFja2VyJiBzaW5nbGV0b24o
KTsKKyAgICB+RW5kb3dtZW50U3RhdGVUcmFja2VyKCk7CisKKyAgICBjbGFzcyBDbGllbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJGYWNp
bmdDaGFuZ2VkKGJvb2wpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgaXNWaXNpYmxlQ2hhbmdl
ZChib29sKSB7IH0KKyAgICB9OworCisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX2lzVmlzaWJsZTsgfQorICAgIGJvb2wgaXNVc2VyRmFjaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9pc1VzZXJGYWNpbmc7IH0KKworICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYpOworICAgIHZv
aWQgcmVtb3ZlQ2xpZW50KENsaWVudCYpOworCisgICAgc3RhdGljIGJvb2wgaXNBcHBsaWNhdGlv
bkZvcmVncm91bmQocGlkX3QpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRl
c3Ryb3llZDxFbmRvd21lbnRTdGF0ZVRyYWNrZXI+OworICAgIEVuZG93bWVudFN0YXRlVHJhY2tl
cigpOworICAgIHZvaWQgc2V0SXNVc2VyRmFjaW5nKGJvb2wpOworICAgIHZvaWQgc2V0SXNWaXNp
YmxlKGJvb2wpOworCisgICAgV2Vha0hhc2hTZXQ8Q2xpZW50PiBtX2NsaWVudHM7CisgICAgUmV0
YWluUHRyPFJCU1Byb2Nlc3NNb25pdG9yPiBtX3Byb2Nlc3NNb25pdG9yOworICAgIGJvb2wgbV9p
c1VzZXJGYWNpbmc7CisgICAgYm9vbCBtX2lzVmlzaWJsZTsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODk1ZDFhNDU3YTk0MjMzM2FjZDZiZDNlMWUzZGQ0YzBhZDA3N2JkOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tl
ci5tbQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5o
IgorI2ltcG9ydCAiUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgTlNTdHJpbmcqIHZpc2liaWxpdHlFbmRvd21lbnQgPSBAImNvbS5h
cHBsZS5mcm9udGJvYXJkLnZpc2liaWxpdHkiOworc3RhdGljIE5TU3RyaW5nKiB1c2VyZmFjaW5n
RW5kb3dtZW50ID0gQCJjb20uYXBwbGUubGF1bmNoc2VydmljZXMudXNlcmZhY2luZyI7CisKK3N0
YXRpYyBSQlNQcm9jZXNzSGFuZGxlICpoYW5kbGVGb3JQSUQocGlkX3QgcGlkKQoreworICAgIFJC
U1Byb2Nlc3NJZGVudGlmaWVyICpwcm9jZXNzSWRlbnRpZmllciA9IFtSQlNQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyV2l0aFBpZDpwaWRdOworICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJoYW5kbGVG
b3JQSUQ6IEZhaWxlZCB0byBjb25zdHJ1Y3QgUkJTUHJvY2Vzc0lkZW50aWZpZXIgZnJvbSBQSUQg
JWQiLCBwaWQpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIFJCU1Byb2Nlc3NIYW5kbGUgKnByb2Nlc3NIYW5kbGUgPSBbUkJTUHJv
Y2Vzc0hhbmRsZSBoYW5kbGVGb3JJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyIGVycm9yOiZl
cnJvcl07CisgICAgaWYgKCFwcm9jZXNzSGFuZGxlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kb3dtZW50c0ZvclBpZDogRmFpbGVkIHRvIGdldCBS
QlNQcm9jZXNzSGFuZGxlIGZvciBwcm9jZXNzIHdpdGggUElEICVkLCBlcnJvcjogJXtwdWJsaWN9
QCIsIHBpZCwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVy
biBwcm9jZXNzSGFuZGxlOworfQorCitzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmVuZG93bWVu
dHNGb3JIYW5kbGUoUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2Vzc0hhbmRsZSkKK3sKKyAgICBpZiAo
IXByb2Nlc3NIYW5kbGUpIHsKKyAgICAgICAgLy8gV2UgYXNzdW1lIGZvcmVncm91bmQgd2hlbiB1
bmFibGUgdG8gZGV0ZXJtaW5lIHN0YXRlIHRvIG1haW50YWluIHByZS1leGlzdGluZyBiZWhhdmlv
ciBhbmQgdG8gYXZvaWQKKyAgICAgICAgLy8gbm90IHJlbmRlcmluZyBhbnl0aGluZyB3aGVuIHdl
IGZhaWwuCisgICAgICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6dmlzaWJpbGl0eUVu
ZG93bWVudCwgdXNlcmZhY2luZ0VuZG93bWVudCwgbmlsXTsKKyAgICB9CisKKyAgICBSQlNQcm9j
ZXNzU3RhdGUgKnN0YXRlID0gcHJvY2Vzc0hhbmRsZS5jdXJyZW50U3RhdGU7CisgICAgaWYgKHN0
YXRlLnRhc2tTdGF0ZSAhPSBSQlNUYXNrU3RhdGVSdW5uaW5nU2NoZWR1bGVkKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kb3dtZW50c0ZvckhhbmRs
ZTogUHJvY2VzcyB3aXRoIFBJRCAlZCBpcyBub3QgcnVubmluZyIsIHByb2Nlc3NIYW5kbGUucGlk
KTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICByZXR1cm4gW3N0YXRlIGVuZG93
bWVudE5hbWVzcGFjZXNdOworfQorCitib29sIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBs
aWNhdGlvbkZvcmVncm91bmQocGlkX3QgcGlkKQoreworICAgIHJldHVybiBbZW5kb3dtZW50c0Zv
ckhhbmRsZShoYW5kbGVGb3JQSUQocGlkKSkgY29udGFpbnNPYmplY3Q6dmlzaWJpbGl0eUVuZG93
bWVudF07Cit9CisKK0VuZG93bWVudFN0YXRlVHJhY2tlciYgRW5kb3dtZW50U3RhdGVUcmFja2Vy
OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBhdXRvIHRyYWNrZXIgPSBOZXZlckRlc3Ryb3ll
ZDxFbmRvd21lbnRTdGF0ZVRyYWNrZXI+KCk7CisgICAgcmV0dXJuIHRyYWNrZXI7Cit9CisKK0Vu
ZG93bWVudFN0YXRlVHJhY2tlcjo6RW5kb3dtZW50U3RhdGVUcmFja2VyKCkKK3sKKyAgICBhdXRv
IHByb2Nlc3NIYW5kbGUgPSBbUkJTUHJvY2Vzc0hhbmRsZSBjdXJyZW50UHJvY2Vzc107CisgICAg
YXV0byBlbmRvd21lbnROYW1lc3BhY2VzID0gZW5kb3dtZW50c0ZvckhhbmRsZShwcm9jZXNzSGFu
ZGxlKTsKKworICAgIG1faXNVc2VyRmFjaW5nID0gW2VuZG93bWVudE5hbWVzcGFjZXMgY29udGFp
bnNPYmplY3Q6dXNlcmZhY2luZ0VuZG93bWVudF07CisgICAgbV9pc1Zpc2libGUgPSBbZW5kb3dt
ZW50TmFtZXNwYWNlcyBjb250YWluc09iamVjdDp2aXNpYmlsaXR5RW5kb3dtZW50XTsKKworICAg
IG1fcHJvY2Vzc01vbml0b3IgPSBbUkJTUHJvY2Vzc01vbml0b3IgbW9uaXRvcldpdGhDb25maWd1
cmF0aW9uOlt0aGlzLCBwcm9jZXNzSGFuZGxlID0gcmV0YWluUHRyKHByb2Nlc3NIYW5kbGUpXSAo
aWQ8UkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZz4gY29uZmlnKSB7CisKKyAgICAgICAgUkJT
UHJvY2Vzc1ByZWRpY2F0ZSAqcHJvY2Vzc1ByZWRpY2F0ZSA9IFtSQlNQcm9jZXNzUHJlZGljYXRl
IHByZWRpY2F0ZU1hdGNoaW5nSGFuZGxlOnByb2Nlc3NIYW5kbGUuZ2V0KCldOworCisgICAgICAg
IFJCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3IgKnN0YXRlRGVzY3JpcHRvciA9IFtSQlNQcm9jZXNz
U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3JdOworICAgICAgICBzdGF0ZURlc2NyaXB0b3IuZW5k
b3dtZW50TmFtZXNwYWNlcyA9IEBbdmlzaWJpbGl0eUVuZG93bWVudCwgdXNlcmZhY2luZ0VuZG93
bWVudF07CisKKyAgICAgICAgW2NvbmZpZyBzZXRQcmVkaWNhdGVzOkBbcHJvY2Vzc1ByZWRpY2F0
ZV1dOworICAgICAgICBbY29uZmlnIHNldFN0YXRlRGVzY3JpcHRvcjpzdGF0ZURlc2NyaXB0b3Jd
OworCisgICAgICAgIFtjb25maWcgc2V0VXBkYXRlSGFuZGxlcjpbdGhpc10gKFJCU1Byb2Nlc3NN
b25pdG9yICogX05vbm51bGwgbW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqIF9Ob25udWxsIHBy
b2Nlc3MsIFJCU1Byb2Nlc3NTdGF0ZVVwZGF0ZSAqIF9Ob25udWxsIHVwZGF0ZSkgbXV0YWJsZSB7
CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
dGhpcywgZW5kb3dtZW50TmFtZXNwYWNlcyA9IHJldGFpblB0cih1cGRhdGUuc3RhdGUuZW5kb3dt
ZW50TmFtZXNwYWNlcyldIHsKKyAgICAgICAgICAgICAgICBzZXRJc1VzZXJGYWNpbmcoW2VuZG93
bWVudE5hbWVzcGFjZXMgY29udGFpbnNPYmplY3Q6dXNlcmZhY2luZ0VuZG93bWVudF0pOworICAg
ICAgICAgICAgICAgIHNldElzVmlzaWJsZShbZW5kb3dtZW50TmFtZXNwYWNlcyBjb250YWluc09i
amVjdDp2aXNpYmlsaXR5RW5kb3dtZW50XSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07
CisgICAgfV07Cit9CisKK3ZvaWQgRW5kb3dtZW50U3RhdGVUcmFja2VyOjphZGRDbGllbnQoQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLmFkZChjbGllbnQpOworfQorCit2b2lkIEVu
ZG93bWVudFN0YXRlVHJhY2tlcjo6cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KQoreworICAg
IG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKK30KKwordm9pZCBFbmRvd21lbnRTdGF0ZVRyYWNr
ZXI6OnNldElzVXNlckZhY2luZyhib29sIGlzVXNlckZhY2luZykKK3sKKyAgICBpZiAobV9pc1Vz
ZXJGYWNpbmcgPT0gaXNVc2VyRmFjaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1VzZXJG
YWNpbmcgPSBpc1VzZXJGYWNpbmc7CisKKyAgICBSRUxFQVNFX0xPRyhWaWV3U3RhdGUsICIlcCAt
IEVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNVc2VyRmFjaW5nKCVzKSIsIHRoaXMsIGlzVXNl
ckZhY2luZyA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBj
b3B5VG9WZWN0b3IobV9jbGllbnRzKSkgeworICAgICAgICBpZiAoY2xpZW50KQorICAgICAgICAg
ICAgY2xpZW50LT5pc1VzZXJGYWNpbmdDaGFuZ2VkKG1faXNVc2VyRmFjaW5nKTsKKyAgICB9Cit9
CisKK3ZvaWQgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2li
bGUpCit7CisgICAgaWYgKG1faXNWaXNpYmxlID09IGlzVmlzaWJsZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faXNWaXNpYmxlID0gaXNWaXNpYmxlOworCisgICAgUkVMRUFTRV9MT0coVmlld1N0
YXRlLCAiJXAgLSBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVmlzaWJsZSglcykiLCB0aGlz
LCBpc1Zpc2libGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50
IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpIHsKKyAgICAgICAgaWYgKGNsaWVudCkKKyAgICAg
ICAgICAgIGNsaWVudC0+aXNWaXNpYmxlQ2hhbmdlZChtX2lzVmlzaWJsZSk7CisgICAgfQorfQor
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBmMTAxMWJhY2UyYTUzYzkzYTE0MWU3OWM0YjM2YTZhMjQ3MWQwMzZhLi45ZjhiZmQyODVh
N2FjYmI5OWFkMjQ3MDJkN2NkMDZjM2I5Nzg4OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUyNSw2ICs1MjUsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IFJlZgogICAgIAogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCktPnNlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZygpKQogICAgICAgICBkaXNhYmxl
U2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2VzcygpOworCisgICAgRW5kb3dt
ZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTU2Niw2ICs1NjgsMTAgQEAgV2ViUGFnZVByb3h5Ojp+
V2ViUGFnZVByb3h5KCkKICNpZm5kZWYgTkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5k
ZWNyZW1lbnQoKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBFbmRv
d21lbnRTdGF0ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisjZW5k
aWYKIH0KIAogLy8gRklYTUU6IFNob3VsZCByZXR1cm4gYSBjb25zdCBQYWdlQ2xpZW50JiBhbmQg
YWRkIGEgc2VwYXJhdGUgbm9uLWNvbnN0CkBAIC03NDYyLDI5ICs3NDY4LDYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiAgICAgICAgIGhhbmRsZXItPnN0b3BBbGxUYXNrc0ZvclBhZ2UoKnRoaXMsIHByb2Nlc3MpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNz
V2lsbEJlY29tZVN1c3BlbmRlZCgpCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkID0g
bV9wYWdlTG9hZFN0YXRlLm5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKTsKLSAgICBpZiAobV9o
YXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRlZCkKLSAgICAgICAgc2V0TmV0d29ya1JlcXVlc3Rz
SW5Qcm9ncmVzcyhmYWxzZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzV2lsbEJl
Y29tZUZvcmVncm91bmQoKQotewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQpIHsK
LSAgICAgICAgc2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyh0cnVlKTsKLSAgICAgICAgbV9o
YXNOZXR3b3JrUmVxdWVzdHNPblN1c3BlbmRlZCA9IGZhbHNlOwotICAgIH0KLX0KLSNlbmRpZgot
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3Rh
dGVSZWFzb24pCiB7CiAgICAgbV9tYWluRnJhbWUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4NzA2NGNmY2Y2N2M1YTgyNzM5YjQxODNmOGJiODk5
NWY5ZTkxNzhkLi4zYzg0YzFjZjkzOTU3NTM2ZmE3YmYxYmE0ZGI1ODdmZTdmZDNmNmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIxLDYgKzEyMSw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorI2luY2x1ZGUgIkVuZG93bWVudFN0YXRlVHJhY2tlci5oIgogI2luY2x1ZGUgIkdlc3R1cmVU
eXBlcy5oIgogI2luY2x1ZGUgIldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIgogI2VuZGlmCkBA
IC00MzMsNyArNDM0LDEyIEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50CiAjZW5kaWYKLSAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQYWdlUHJveHk+IHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICwgcHVibGljIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6Q2xpZW50CisjZWxzZQorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4KKyNlbmRpZgorICAgIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQ
cm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdmlydHVh
bCB+V2ViUGFnZVByb3h5KCk7CkBAIC0xMTgzLDYgKzExODksOCBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCk7
CiAgICAgdm9pZCBwcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKKyAgICB2b2lkIGlzVXNl
ckZhY2luZ0NoYW5nZWQoYm9vbCkgZmluYWw7CisgICAgdm9pZCBpc1Zpc2libGVDaGFuZ2VkKGJv
b2wpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklF
VykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQppbmRleCA5YmFkZWNiMmE0MjJjODM3YzVkMzNlMjJhNDQ0NjdiODE1OWI0YTM3Li4zODc5YWJk
MTVhNjQzYjBjYmUyNjZmOWY1MjFiYTFlNjZkZWY3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1w
b3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCisjaW1wb3J0ICJFbmRvd21lbnRTdGF0ZVRyYWNrZXIu
aCIKICNpbXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIKICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCkBA
IC0xNjYsNyArMTY3LDcgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNBcHBsaWNhdGlvblZpc2li
bGUoKQogICAgIHBpZF90IGFwcGxpY2F0aW9uUElEID0gc2VydmljZVZpZXdDb250cm9sbGVyLl9o
b3N0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgQVNTRVJUKGFwcGxpY2F0aW9uUElEKTsKIAotICAg
IHJldHVybiBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChhcHBsaWNhdGlvblBJRCk7CisgICAgcmV0
dXJuIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvbkZvcmVncm91bmQoYXBwbGlj
YXRpb25QSUQpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA2
MTRkY2JmMzdjMDQ1ZGE4YjQ5ODJjYzhkYTM4NTUwYTEyYmUyNDdkLi5lYTVlNGVmZDJkZDEzZjE3
YjI4MWY5ODM5NDY1OTdjYjg0NzhkZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTE2MDAsNiArMTYwMCw0NCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6d2lsbE9wZW5BcHBMaW5rKCkKICAgICB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCkKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzTmV0d29ya1JlcXVlc3RzT25T
dXNwZW5kZWQgPSBtX3BhZ2VMb2FkU3RhdGUubmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpOwor
ICAgIGlmIChtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkKQorICAgICAgICBzZXROZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKGZhbHNlKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnBy
b2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9oYXNOZXR3b3JrUmVxdWVzdHNPblN1
c3BlbmRlZCkgeworICAgICAgICBzZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKHRydWUpOwor
ICAgICAgICBtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkID0gZmFsc2U7CisgICAgfQor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aXNVc2VyRmFjaW5nQ2hhbmdlZChib29sIGlzVXNlckZh
Y2luZykKK3sKKyNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBpZiAoIWlzVXNlckZhY2lu
ZykKKyAgICAgICAgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBlbHNlCisgICAgICAg
IHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlzVXNl
ckZhY2luZyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmlzVmlzaWJsZUNoYW5n
ZWQoYm9vbCBpc1Zpc2libGUpCit7CisgICAgVU5VU0VEX1BBUkFNKGlzVmlzaWJsZSk7Cit9CisK
ICNpZiBQTEFURk9STShJT1MpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NUb0Fzc2V0
U2VydmljZXMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZTI2YjQwM2Y4NmQ4NjA3MGE3N2I3ZWFlNGYzMWY0Y2VjNjE4ZjUwOC4u
MzcwMDcxYjMxODZkMTBkOWI1ZmJiYjdjYTNiODlmY2NlOGVjZDMxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzU3LDYgKzE3NTcs
OCBAQAogCQlDREJCNDlGRDI0MEQ5QTcyMDAxN0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9uQ29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RCQjQ5RkMyNDBEOUE3MjAwMTdDMjkyIC8qIFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24uaCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVl
blN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICov
OyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
aCAqLzsgfTsKKwkJQ0RDREM5OUQyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RD
REM5OUIyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5oICovOyB9Owor
CQlDRENEQzk5RTI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDREM5OUMyNDhG
RThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5tbSAqLzsgfTsKIAkJQ0RFNTU1
MzIyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREU1NTUyOTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0RFNTU1MzMyNDA2RUI4QzAwOEEzRERCIC8q
IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1NTJBMjQwNkI4OTYwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNERTU1
NTM0MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKQEAgLTUxODAsNiArNTE4Miw4IEBACiAJCUNEQ0E4NUM2MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRENBODVENDEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CisJCUNEQ0RDOTlCMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRy
YWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5kb3dtZW50U3RhdGVUcmFja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQ0RDOTlDMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21l
bnRTdGF0ZVRyYWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFbmRvd21lbnRTdGF0ZVRy
YWNrZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDUzNTZGMjQwREQzNDMw
MEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVk
aW9TZXNzaW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREQ1
MzU3MDI0MERENEVGMDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENTM1NzEyNDBEREUwNjAwRjdCOEM0
IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5ODYsNiArNjk5MCw4IEBACiAJCQkJMkQ1ODc1
QkQyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggKi8sCiAJCQkJ
MkQ1ODc1QkIyMTlCMjhBNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1lc3Nh
Z2VzLmluICovLAogCQkJCTJENTg3NUJFMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbSAqLywKKwkJCQlDRENEQzk5QjI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dt
ZW50U3RhdGVUcmFja2VyLmggKi8sCisJCQkJQ0RDREM5OUMyNDhGRThEQTAwQTY5NTIyIC8qIEVu
ZG93bWVudFN0YXRlVHJhY2tlci5tbSAqLywKIAkJCQkyREQ0NUFEQzFFNUY4OTcyMDA2QzM1NUYg
LyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaCAqLywKIAkJCQkyREQ0NUFERDFFNUY4OTcyMDA2
QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIubW0gKi8sCiAJCQkJMEZDQjRFMzYxOEJC
RTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggKi8sCkBAIC0xMDc4NCw2ICsxMDc5
MCw3IEBACiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDREM5OUQyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93
bWVudFN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAw
MzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1
NzVGQjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0I4MjY0ODIzMDUwQzUxMDBCNzJFQjAgLyogRmlkb1NlcnZpY2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTI3MDEsNiArMTI3MDgsNyBAQAogCQkJCTFBNjQyMjk5MTJERDAyOTIwMENBQUUy
QyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTY0MjMwODEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MDIxMkI2QTcxMDBGNDkzRkQgLyogRW5j
b2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRENEQzk5RTI0OEZFOERBMDBBNjk1MjIgLyog
RW5kb3dtZW50U3RhdGVUcmFja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTc2MDIxNDk2
Qjk3OTAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNo
U2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NDIx
NDY1NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJh
cmllcy9DaGFuZ2VMb2cKaW5kZXggNGYzMjhhMGYzMWE3ZDRkNjU4Y2Q1Yjc1NTBkYzAyNDU4MTYy
ODJhNS4uM2EyNmNlYzIxMTgyZjg1ZjU3ZGQ4YzExOGRkODhjODVmYjNhNTdmYyAxMDA2NDQKLS0t
IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMgY29udGludWUgdG8gcGxh
eSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktp
dFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3
b3JrL1J1bm5pbmdCb2FyZFNlcnZpY2VzLnRiZDoKKwogMjAyMC0wNi0wNCAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgdHZPUzogUmVtb3ZlIGFybTY0ZSBy
ZWZlcmVuY2VzIGluIC50YmQgZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9XZWJL
aXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvaU9TLzEzL1J1bm5pbmdCb2FyZFNlcnZpY2VzLmZyYW1l
d29yay9SdW5uaW5nQm9hcmRTZXJ2aWNlcy50YmQgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJp
dmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xMy9SdW5uaW5nQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsv
UnVubmluZ0JvYXJkU2VydmljZXMudGJkCmluZGV4IGRiYjNlNDE5OWE1ZDBmOWFkMDA0MDZmNzQ2
OWRjMWVjMzg3Y2QxN2IuLjQ3ODdjNTNmMDhlMzU5ODRjZDRjYWI3YTgzZDlkMzVjNDUwY2EwZTMg
MTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMv
aU9TLzEzL1J1bm5pbmdCb2FyZFNlcnZpY2VzLmZyYW1ld29yay9SdW5uaW5nQm9hcmRTZXJ2aWNl
cy50YmQKKysrIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9p
T1MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1J1bm5pbmdCb2FyZFNlcnZpY2Vz
LnRiZApAQCAtNiw1ICs2LDUgQEAgcGxhdGZvcm06IGlvcwogZXhwb3J0czoKICAgLSBhcmNoczog
ICAgICAgICAgIFsgeDg2XzY0LCBhcm02NCwgYXJtNjRlIF0KICAgICBzeW1ib2xzOiAgICAgICAg
IFsgX1JCU1Byb2Nlc3NUaW1lTGltaXRhdGlvbk5vbmUgXQotICAgIG9iamMtY2xhc3NlczogICAg
WyBSQlNBdHRyaWJ1dGUsIFJCU0RvbWFpbkF0dHJpYnV0ZSwgUkJTVGFyZ2V0LCBSQlNBc3NlcnRp
b24sIFJCU1Byb2Nlc3NJZGVudGlmaWVyLCBSQlNQcm9jZXNzU3RhdGUsIFJCU1Byb2Nlc3NIYW5k
bGUgXQorICAgIG9iamMtY2xhc3NlczogICAgWyBSQlNBdHRyaWJ1dGUsIFJCU0RvbWFpbkF0dHJp
YnV0ZSwgUkJTVGFyZ2V0LCBSQlNBc3NlcnRpb24sIFJCU1Byb2Nlc3NJZGVudGlmaWVyLCBSQlNQ
cm9jZXNzU3RhdGUsIFJCU1Byb2Nlc3NIYW5kbGUsIFJCU1Byb2Nlc3NTdGF0ZURlc2NyaXB0b3Is
IFJCU1Byb2Nlc3NQcmVkaWNhdGUsIFJCU1Byb2Nlc3NNb25pdG9yIF0KIC4uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401546</attachid>
            <date>2020-06-10 09:14:21 -0700</date>
            <delta_ts>2020-06-10 17:04:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212981-20200610091420.patch</filename>
            <type>text/plain</type>
            <size>32257</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5OWM3MzUwYTA4MTQwZmNlY2UxMjg2
NDY1ZmJlYWY2YTQyNmE2YjQuLjdhZTZhNmJiZTBhMmM1ZGI0NDI5MGY1NDc2N2RlZjMxZTUwYzE1
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMDkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMgY29udGludWUgdG8g
cGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGQgdGhl
IGFiaWxpdHkgdG8gY2FsbCBjb3B5VG9WZWN0b3IoKSBvbiBhIFdlYWtIYXNoU2V0LiBUaGlzIHJl
cXVpcmVzIHR3byBjaGFuZ2VzOgorICAgICAgICAtIEEgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24g
dGhhdCByZXR1cm5zIGEgVmVjdG9yPFdlYWtQdHI8VD4+IGZyb20gY29weVRvVmVjdG9yKCkKKyAg
ICAgICAgLSBBIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHRoYXQgY2FsbHMgY2FsY3VsYXRlU2l6
ZSgpIHJhdGhlciB0aGFuIHNpemUoKSBvbiB0aGUgb2JqZWN0CisgICAgICAgICAgYmVpbmcgaXRl
cmF0ZWQgdXBvbi4KKworICAgICAgICAqIHd0Zi9XZWFrSGFzaFNldC5oOgorICAgICAgICAoV1RG
Ojpjb3B5VG9WZWN0b3IpOgorCiAyMDIwLTA2LTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IHJlYWQtb25seSBtb2RlIGZvciBw
cmVmZXJlbmNlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlNDNkMmVh
ODQ1NDBiZWNmM2ZlZDAwZjc1YTFlMzdmMDE5NmFjYzEuLjM5ZjQyNWI0NDA5ZTUyYzY5ZTVmZDU4
YzNkMjZjMThiYWFmMWUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDYtMDkg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2F0YWx5c3QgV2Vi
S2l0IGFwcHMgY29udGludWUgdG8gcGxheSBhdWRpbyBhZnRlciBxdWl0dGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTgxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NzA4OTQ3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICBSdW5uaW5nQm9hcmQgd2lsbCB0cmFjayB3aGV0aGVyIGEgcHJvY2VzcyAo
YW5kIGl0J3MgYXNzb2NpYXRlZCBjaGlsZCBwcm9jZXNzZXMpIGFyZSAidXNlci12aXNpYmxlIiBi
eQorICAgICAgICBncmFudGluZyB0aG9zZSBwcm9jZXNzZXMgYW4gImVuZG93bWVudCIsIHNpbWls
YXIgdG8gdGhlIGV4aXN0aW5nIGVuZG93bWVudCBmb3IgYXBwbGljYXRpb24gdmlzaWJpbGl0eS4K
KyAgICAgICAgVHJhY2sgY2hhbmdlcyB0byB0aGVzZSBlbmRvd21lbnRzIHVzaW5nIGEgUkJTUHJv
Y2Vzc01vbml0b3IsIGFuZCBmb3IgQ2F0YWx5c3QgYXBwcywgcmVhY3QgdG8gbG9zaW5nIHRoZQor
ICAgICAgICAidXNlci12aXNpYmxlIiBlbmRvd21lbnQgYnkgc3VzcGVuZGluZyBhbGwgbWVkaWEg
cGxheWJhY2suCisKKyAgICAgICAgTW92ZSBhbGwgdGhlIGVuZG93bWVudC1yZWxhdGVkIGNvZGUg
aW50byBhIG5ldyBjbGFzcywgRW5kb3dtZW50U3RhdGVUcmFja2VyLCB3aGljaCBpcyBhIHNpbmds
ZXRvbiBvYmplY3QKKyAgICAgICAgdGhhdCBjYW4gaGF2ZSBtdWxpdHBsZSBXZWJQYWdlUHJveHkg
Y2xpZW50cy4gVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlIHByZXZpb3VzbHkgZ2xvYmFsIHN0YXRp
YworICAgICAgICBpc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCgpIGZ1bmN0aW9uIHRvIHJlZmVyIHRv
IEVuZG93bWVudFN0YXRlVHJhY2tlciBpbnN0ZWFkLgorCisgICAgICAgIERyaXZlLWJ5IGZpeDog
bW92ZSBzb21lIGlPUy1vbmx5IGZ1bmN0aW9ucyBpbiBXZWJQYWdlUHJveHkuY3BwIGludG8gV2Vi
UGFnZVByb3h5SU9TLm1tLgorCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVU
cmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1t
OgorICAgICAgICAoV2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6QXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIpOgorICAgICAgICAoV2ViS2l0Ojppc0FwcGxpY2F0aW9uRm9yZWdyb3VuZCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjppc1Zpc2libGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzVXNlckZh
Y2luZyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUZvclBJRCk6CisgICAgICAgIChXZWJL
aXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlvbkZvcmVncm91bmQpOgorICAg
ICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OmlzQXBwbGljYXRpb25Vc2VyRmFj
aW5nKToKKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5nbGV0b24p
OgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OkVuZG93bWVudFN0YXRl
VHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6YWRkQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpyZW1vdmVDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVXNlckZh
Y2luZyk6CisgICAgICAgIChXZWJLaXQ6OkVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNWaXNp
YmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpwcm9jZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmlzQXBwbGljYXRpb25WaXNpYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9j
ZXNzV2lsbEJlY29tZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojppc1VzZXJGYWNpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojppc1Zpc2libGVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAyMC0wNi0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBIaWRlIHRoZSBQaVAgYnV0dG9uIGluIGZ1bGxzY3JlZW4gbW9kZSBp
ZiBQaVAgaXMgZGlzYWJsZWQgaW4gcHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1dlYWtIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCmluZGV4IDNk
MmE4M2YxZjExMjA1ODk1Y2Q0ODI3MDYyZjYyOWI5NmYzZGU5MjEuLjc3NjBiNWE1OWQ4NzY0MTVm
MDYyYWI5MTFkOGFkZDYxNTA0ZTM4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dlYWtI
YXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaApAQCAtMTU1LDYgKzE1
NSwyOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHJJbXBsU2V0IG1fc2V0OwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTWFwcGVyPE1hcEZ1
bmN0aW9uLCBjb25zdCBXZWFrSGFzaFNldDxUPiAmLCB2b2lkPiB7CisgICAgdXNpbmcgU291cmNl
SXRlbVR5cGUgPSBXZWFrUHRyPFQ+OworICAgIHVzaW5nIERlc3RpbmF0aW9uSXRlbVR5cGUgPSB0
eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxNYXBGdW5jdGlvbihTb3VyY2VJdGVtVHlwZSYpPjo6dHlw
ZTsKKworICAgIHN0YXRpYyBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4gbWFwKGNvbnN0IFdl
YWtIYXNoU2V0PFQ+JiBzb3VyY2UsIGNvbnN0IE1hcEZ1bmN0aW9uJiBtYXBGdW5jdGlvbikKKyAg
ICB7CisgICAgICAgIFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5jb21wdXRlU2l6ZSgpKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBpdGVtIDogc291cmNlKQorICAgICAgICAgICAgcmVzdWx0LnVuY2hl
Y2tlZEFwcGVuZChtYXBGdW5jdGlvbihpdGVtKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBhdXRvIGNvcHlUb1ZlY3Rv
cihjb25zdCBXZWFrSGFzaFNldDxUPiYgY29sbGVjdGlvbikgLT4gVmVjdG9yPFdlYWtQdHI8VD4+
Cit7CisgICAgcmV0dXJuIFdURjo6bWFwKGNvbGxlY3Rpb24sIFtdIChhdXRvJiB2KSAtPiBXZWFr
UHRyPFQ+IHsgcmV0dXJuIG1ha2VXZWFrUHRyPFQ+KHYpOyB9KTsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogdXNpbmcgV1RGOjpXZWFrSGFzaFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9SdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKaW5kZXgg
ODY3ZjZjNzAzM2ZjYWIwMzM2OTgyMDc2ZjRlNDY1MzdhY2YxMTUyZC4uYjliOTQwZTgwZDQ2YzYw
ODY3N2RhMjZhNTc4MmRlYjM4ZmZhNTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL1J1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgKQEAgLTM3LDYgKzM3
LDggQEAgZXh0ZXJuIGNvbnN0IE5TVGltZUludGVydmFsIFJCU1Byb2Nlc3NUaW1lTGltaXRhdGlv
bk5vbmU7CiAKICNlbHNlCiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2Ug
UkJTQXR0cmlidXRlIDogTlNPYmplY3QKIEBlbmQKIApAQCAtNDYsNiArNDgsNyBAQCBleHRlcm4g
Y29uc3QgTlNUaW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsKIAogQGlu
dGVyZmFjZSBSQlNUYXJnZXQgOiBOU09iamVjdAogKyAoUkJTVGFyZ2V0ICopdGFyZ2V0V2l0aFBp
ZDoocGlkX3QpcGlkOworKyAoUkJTVGFyZ2V0ICopY3VycmVudFByb2Nlc3M7CiBAZW5kCiAKIEBw
cm90b2NvbCBSQlNBc3NlcnRpb25PYnNlcnZpbmc7CkBAIC05MSw4ICs5NCw0NyBAQCBleHRlcm4g
Y29uc3QgTlNUaW1lSW50ZXJ2YWwgUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZTsKIEBpbnRl
cmZhY2UgUkJTUHJvY2Vzc0hhbmRsZSA6IE5TT2JqZWN0CiArIChSQlNQcm9jZXNzSGFuZGxlICop
aGFuZGxlRm9ySWRlbnRpZmllcjooUkJTUHJvY2Vzc0lkZW50aWZpZXIgKilpZGVudGlmaWVyIGVy
cm9yOihOU0Vycm9yICoqKW91dEVycm9yOwogKyAoUkJTUHJvY2Vzc0hhbmRsZSAqKWN1cnJlbnRQ
cm9jZXNzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBhc3NpZ24pIHBpZF90IHBp
ZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBSQlNQcm9jZXNzU3Rh
dGUgKmN1cnJlbnRTdGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25n
KSBSQlNQcm9jZXNzTGltaXRhdGlvbnMgKmFjdGl2ZUxpbWl0YXRpb25zOwogQGVuZAogCitAaW50
ZXJmYWNlIFJCU1Byb2Nlc3NTdGF0ZVVwZGF0ZSA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIHN0cm9uZykgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2VzczsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nLCBudWxsYWJsZSkgUkJTUHJvY2Vzc1N0
YXRlICpzdGF0ZTsKK0BlbmQKKworQGNsYXNzIFJCU1Byb2Nlc3NNb25pdG9yOworQGNsYXNzIFJC
U1Byb2Nlc3NQcmVkaWNhdGU7CitAY2xhc3MgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRvcjsKK0Bw
cm90b2NvbCBSQlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyaW5nOworCit0eXBlZGVmIHZvaWQgKF5S
QlNQcm9jZXNzTW9uaXRvckNvbmZpZ3VyYXRvcikoaWQ8UkJTUHJvY2Vzc01vbml0b3JDb25maWd1
cmluZz4gY29uZmlnKTsKK3R5cGVkZWYgdm9pZCAoXlJCU1Byb2Nlc3NVcGRhdGVIYW5kbGVyKShS
QlNQcm9jZXNzTW9uaXRvciAqbW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2VzcywgUkJT
UHJvY2Vzc1N0YXRlVXBkYXRlICp1cGRhdGUpOworCitAcHJvdG9jb2wgUkJTUHJvY2Vzc01hdGNo
aW5nIDxOU09iamVjdD4KKy0gKFJCU1Byb2Nlc3NQcmVkaWNhdGUgKilwcm9jZXNzUHJlZGljYXRl
OworQGVuZAorCitAcHJvdG9jb2wgUkJTUHJvY2Vzc01vbml0b3JDb25maWd1cmluZworLSAodm9p
ZClzZXRQcmVkaWNhdGVzOihudWxsYWJsZSBOU0FycmF5PFJCU1Byb2Nlc3NQcmVkaWNhdGUgKj4g
KilwcmVkaWNhdGVzOworLSAodm9pZClzZXRTdGF0ZURlc2NyaXB0b3I6KG51bGxhYmxlIFJCU1By
b2Nlc3NTdGF0ZURlc2NyaXB0b3IgKilkZXNjcmlwdG9yOworLSAodm9pZClzZXRVcGRhdGVIYW5k
bGVyOihudWxsYWJsZSBSQlNQcm9jZXNzVXBkYXRlSGFuZGxlcilibG9jazsKK0BlbmQKKworQGlu
dGVyZmFjZSBSQlNQcm9jZXNzTW9uaXRvciA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CisrIChpbnN0
YW5jZXR5cGUpbW9uaXRvcldpdGhDb25maWd1cmF0aW9uOihOU19OT0VTQ0FQRSBSQlNQcm9jZXNz
TW9uaXRvckNvbmZpZ3VyYXRvcilibG9jazsKK0BlbmQKKworQGludGVyZmFjZSBSQlNQcm9jZXNz
UHJlZGljYXRlIDogTlNPYmplY3QgPFJCU1Byb2Nlc3NNYXRjaGluZz4KKysgKFJCU1Byb2Nlc3NQ
cmVkaWNhdGUgKilwcmVkaWNhdGVNYXRjaGluZ0hhbmRsZTooUkJTUHJvY2Vzc0hhbmRsZSAqKXBy
b2Nlc3M7CitAZW5kCisKK0BpbnRlcmZhY2UgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRvciA6IE5T
T2JqZWN0IDxOU0NvcHlpbmc+CisrIChpbnN0YW5jZXR5cGUpZGVzY3JpcHRvcjsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGNvcHksIG51bGxhYmxlKSBOU0FycmF5PE5TU3RyaW5n
ICo+ICplbmRvd21lbnROYW1lc3BhY2VzOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlv
blN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIuaAppbmRleCAzY2QyYTE1Yjg5OTQxOTlhY2ZhNzllZTNjN2I3MjdmODg2ODAyZmNm
Li5mNTFmMTc4YzhiMDY0N2VmM2VmMGIwMDY1YWY0ODkzMmZkYzQ4ODVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKQEAgLTc1LDcg
Kzc1LDYgQEAgZW51bSBjbGFzcyBBcHBsaWNhdGlvblR5cGUgewogfTsKIAogQXBwbGljYXRpb25U
eXBlIGFwcGxpY2F0aW9uVHlwZShVSVdpbmRvdyAqKTsKLWJvb2wgaXNBcHBsaWNhdGlvbkZvcmVn
cm91bmQocGlkX3QpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGljYXRpb25TdGF0ZVRyYWNrZXIubW0KaW5kZXggYzQyOWRkYTI3NDFiNTg3MDgwZWY3NDUyYmNh
ZDg2MjEwNTk4OTA0MC4uZmZhMzVkZDYxNGY4NDQzZjEwOTA2ZGViZjlmYzA4OTkxMzkwYmZhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXIubW0KQEAgLTI5LDggKzI5LDggQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1w
b3J0ICJBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIgorI2ltcG9ydCAiRW5kb3dtZW50U3RhdGVUcmFj
a2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJSdW5uaW5nQm9hcmRTZXJ2aWNl
c1NQSS5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlLaXRTUEku
aCIKICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgpAQCAtMTQyLDcgKzE0Miw3IEBA
IEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcihVSVZpZXcg
KnZpZXcsIFNFTCBkaWRFbnRlckJhY2tnCiAgICAgICAgIHBpZF90IGFwcGxpY2F0aW9uUElEID0g
c2VydmljZVZpZXdDb250cm9sbGVyLl9ob3N0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgICAgIEFT
U0VSVChhcHBsaWNhdGlvblBJRCk7CiAKLSAgICAgICAgbV9pc0luQmFja2dyb3VuZCA9ICFpc0Fw
cGxpY2F0aW9uRm9yZWdyb3VuZChhcHBsaWNhdGlvblBJRCk7CisgICAgICAgIG1faXNJbkJhY2tn
cm91bmQgPSAhRW5kb3dtZW50U3RhdGVUcmFja2VyOjppc0FwcGxpY2F0aW9uRm9yZWdyb3VuZChh
cHBsaWNhdGlvblBJRCk7CiAKICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzM0MDI4OTIxPi4gSWYgdGhlIGhvc3QgYXBwbGljYXRpb24gaXMgU3RvcmVLaXRVSVNlcnZp
Y2UgdGhlbiBpdCBpcyBhbHNvIGEgVmlld1NlcnZpY2UKICAgICAgICAgLy8gYW5kIGlzIGFsd2F5
cyBpbiB0aGUgYmFja2dyb3VuZC4gV2UgbmVlZCB0byB0cmVhdCBTdG9yZUtpdFVJU2VydmljZSBh
cyBmb3JlZ3JvdW5kIGZvciB0aGUgcHVycG9zZSBvZiBwcm9jZXNzIHN1c3BlbnNpb24KQEAgLTE2
NiwzNCArMTY2LDYgQEAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OkFwcGxpY2F0aW9uU3RhdGVU
cmFja2VyKFVJVmlldyAqdmlldywgU0VMIGRpZEVudGVyQmFja2cKICAgICB9CiB9CiAKLWJvb2wg
aXNBcHBsaWNhdGlvbkZvcmVncm91bmQocGlkX3QgcGlkKQotewotICAgIFJCU1Byb2Nlc3NJZGVu
dGlmaWVyICpwcm9jZXNzSWRlbnRpZmllciA9IFtSQlNQcm9jZXNzSWRlbnRpZmllciBpZGVudGlm
aWVyV2l0aFBpZDpwaWRdOwotICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJpc0FwcGxpY2F0aW9uRm9yZWdy
b3VuZDogRmFpbGVkIHRvIGNvbnN0cnVjdCBSQlNQcm9jZXNzSWRlbnRpZmllciBmcm9tIFBJRCAl
ZCIsIHBpZCk7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4gdW5hYmxlIHRv
IGRldGVybWluZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZpb3IgYW5kIHRv
IGF2b2lkCi0gICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3ZSBmYWlsLgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
LSAgICBSQlNQcm9jZXNzSGFuZGxlICpwcm9jZXNzSGFuZGxlID0gW1JCU1Byb2Nlc3NIYW5kbGUg
aGFuZGxlRm9ySWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllciBlcnJvcjomZXJyb3JdOwotICAg
IGlmICghcHJvY2Vzc0hhbmRsZSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNz
U3VzcGVuc2lvbiwgImlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kOiBGYWlsZWQgdG8gZ2V0IFJCU1By
b2Nlc3NIYW5kbGUgZm9yIHByb2Nlc3Mgd2l0aCBQSUQgJWQsIGVycm9yOiAle3B1YmxpY31AIiwg
cGlkLCBlcnJvcik7Ci0gICAgICAgIC8vIFdlIGFzc3VtZSBmb3JlZ3JvdW5kIHdoZW4gdW5hYmxl
IHRvIGRldGVybWluZSBzdGF0ZSB0byBtYWludGFpbiBwcmUtZXhpc3RpbmcgYmVoYXZpb3IgYW5k
IHRvIGF2b2lkCi0gICAgICAgIC8vIG5vdCByZW5kZXJpbmcgYW55dGhpbmcgd2hlbiB3ZSBmYWls
LgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSQlNQcm9jZXNzU3RhdGUgKnN0
YXRlID0gcHJvY2Vzc0hhbmRsZS5jdXJyZW50U3RhdGU7Ci0gICAgaWYgKHN0YXRlLnRhc2tTdGF0
ZSAhPSBSQlNUYXNrU3RhdGVSdW5uaW5nU2NoZWR1bGVkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiaXNBcHBsaWNhdGlvbkZvcmVncm91bmQ6IFByb2Nl
c3Mgd2l0aCBQSUQgJWQgaXMgbm90IHJ1bm5pbmciLCBwaWQpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIFtbc3RhdGUgZW5kb3dtZW50TmFtZXNwYWNlc10gY29u
dGFpbnNPYmplY3Q6QCJjb20uYXBwbGUuZnJvbnRib2FyZC52aXNpYmlsaXR5Il07Ci19Ci0KIEFw
cGxpY2F0aW9uU3RhdGVUcmFja2VyOjp+QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoKQogewogICAg
IFJFTEVBU0VfTE9HKFZpZXdTdGF0ZSwgIiVwIC0gfkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyIiwg
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0
ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIyMTlhNTg4M2U0MjFjYjhmZDk0ZDk0ZGM0NzlhNjdlMjc4NWJlYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0
ZVRyYWNrZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Cisj
aW1wb3J0IDx3dGYvV2Vha0hhc2hTZXQuaD4KKworT0JKQ19DTEFTUyBSQlNQcm9jZXNzTW9uaXRv
cjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3Mg
RW5kb3dtZW50U3RhdGVUcmFja2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgRW5kb3dtZW50U3RhdGVUcmFja2VyJiBzaW5nbGV0b24oKTsKKyAg
ICB+RW5kb3dtZW50U3RhdGVUcmFja2VyKCk7CisKKyAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5D
bGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBpc1VzZXJGYWNpbmdDaGFu
Z2VkKGJvb2wpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgaXNWaXNpYmxlQ2hhbmdlZChib29s
KSB7IH0KKyAgICB9OworCisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lz
VmlzaWJsZTsgfQorICAgIGJvb2wgaXNVc2VyRmFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1Vz
ZXJGYWNpbmc7IH0KKworICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYpOworICAgIHZvaWQgcmVt
b3ZlQ2xpZW50KENsaWVudCYpOworCisgICAgc3RhdGljIGJvb2wgaXNBcHBsaWNhdGlvbkZvcmVn
cm91bmQocGlkX3QpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3ll
ZDxFbmRvd21lbnRTdGF0ZVRyYWNrZXI+OworICAgIEVuZG93bWVudFN0YXRlVHJhY2tlcigpOwor
ICAgIHZvaWQgc2V0SXNVc2VyRmFjaW5nKGJvb2wpOworICAgIHZvaWQgc2V0SXNWaXNpYmxlKGJv
b2wpOworCisgICAgV2Vha0hhc2hTZXQ8Q2xpZW50PiBtX2NsaWVudHM7CisgICAgUmV0YWluUHRy
PFJCU1Byb2Nlc3NNb25pdG9yPiBtX3Byb2Nlc3NNb25pdG9yOworICAgIGJvb2wgbV9pc1VzZXJG
YWNpbmc7CisgICAgYm9vbCBtX2lzVmlzaWJsZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWUzZTQ5NjE1MmNiYWNmMTdjZTQyYTA5OTZkNTBmZjVlZmIyMGRiZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5tbQpA
QCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCIKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2lt
cG9ydCAiUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgTlNTdHJpbmcqIHZpc2liaWxpdHlFbmRvd21lbnQgPSBAImNvbS5hcHBsZS5m
cm9udGJvYXJkLnZpc2liaWxpdHkiOworc3RhdGljIE5TU3RyaW5nKiB1c2VyZmFjaW5nRW5kb3dt
ZW50ID0gQCJjb20uYXBwbGUubGF1bmNoc2VydmljZXMudXNlcmZhY2luZyI7CisKK3N0YXRpYyBS
QlNQcm9jZXNzSGFuZGxlICpoYW5kbGVGb3JQSUQocGlkX3QgcGlkKQoreworICAgIFJCU1Byb2Nl
c3NJZGVudGlmaWVyICpwcm9jZXNzSWRlbnRpZmllciA9IFtSQlNQcm9jZXNzSWRlbnRpZmllciBp
ZGVudGlmaWVyV2l0aFBpZDpwaWRdOworICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICJoYW5kbGVGb3JQSUQ6
IEZhaWxlZCB0byBjb25zdHJ1Y3QgUkJTUHJvY2Vzc0lkZW50aWZpZXIgZnJvbSBQSUQgJWQiLCBw
aWQpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOworICAgIFJCU1Byb2Nlc3NIYW5kbGUgKnByb2Nlc3NIYW5kbGUgPSBbUkJTUHJvY2Vzc0hh
bmRsZSBoYW5kbGVGb3JJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyIGVycm9yOiZlcnJvcl07
CisgICAgaWYgKCFwcm9jZXNzSGFuZGxlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiZW5kb3dtZW50c0ZvclBpZDogRmFpbGVkIHRvIGdldCBSQlNQcm9j
ZXNzSGFuZGxlIGZvciBwcm9jZXNzIHdpdGggUElEICVkLCBlcnJvcjogJXtwdWJsaWN9QCIsIHBp
ZCwgZXJyb3IpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVybiBwcm9j
ZXNzSGFuZGxlOworfQorCitzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmVuZG93bWVudHNGb3JI
YW5kbGUoUkJTUHJvY2Vzc0hhbmRsZSAqcHJvY2Vzc0hhbmRsZSkKK3sKKyAgICBpZiAoIXByb2Nl
c3NIYW5kbGUpIHsKKyAgICAgICAgLy8gV2UgYXNzdW1lIGZvcmVncm91bmQgd2hlbiB1bmFibGUg
dG8gZGV0ZXJtaW5lIHN0YXRlIHRvIG1haW50YWluIHByZS1leGlzdGluZyBiZWhhdmlvciBhbmQg
dG8gYXZvaWQKKyAgICAgICAgLy8gbm90IHJlbmRlcmluZyBhbnl0aGluZyB3aGVuIHdlIGZhaWwu
CisgICAgICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6dmlzaWJpbGl0eUVuZG93bWVu
dCwgdXNlcmZhY2luZ0VuZG93bWVudCwgbmlsXTsKKyAgICB9CisKKyAgICBSQlNQcm9jZXNzU3Rh
dGUgKnN0YXRlID0gcHJvY2Vzc0hhbmRsZS5jdXJyZW50U3RhdGU7CisgICAgaWYgKHN0YXRlLnRh
c2tTdGF0ZSAhPSBSQlNUYXNrU3RhdGVSdW5uaW5nU2NoZWR1bGVkKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kb3dtZW50c0ZvckhhbmRsZTogUHJv
Y2VzcyB3aXRoIFBJRCAlZCBpcyBub3QgcnVubmluZyIsIHByb2Nlc3NIYW5kbGUucGlkKTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICByZXR1cm4gW3N0YXRlIGVuZG93bWVudE5h
bWVzcGFjZXNdOworfQorCitib29sIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6aXNBcHBsaWNhdGlv
bkZvcmVncm91bmQocGlkX3QgcGlkKQoreworICAgIHJldHVybiBbZW5kb3dtZW50c0ZvckhhbmRs
ZShoYW5kbGVGb3JQSUQocGlkKSkgY29udGFpbnNPYmplY3Q6dmlzaWJpbGl0eUVuZG93bWVudF07
Cit9CisKK0VuZG93bWVudFN0YXRlVHJhY2tlciYgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpzaW5n
bGV0b24oKQoreworICAgIHN0YXRpYyBhdXRvIHRyYWNrZXIgPSBOZXZlckRlc3Ryb3llZDxFbmRv
d21lbnRTdGF0ZVRyYWNrZXI+KCk7CisgICAgcmV0dXJuIHRyYWNrZXI7Cit9CisKK0VuZG93bWVu
dFN0YXRlVHJhY2tlcjo6RW5kb3dtZW50U3RhdGVUcmFja2VyKCkKK3sKKyAgICBhdXRvIHByb2Nl
c3NIYW5kbGUgPSBbUkJTUHJvY2Vzc0hhbmRsZSBjdXJyZW50UHJvY2Vzc107CisgICAgYXV0byBl
bmRvd21lbnROYW1lc3BhY2VzID0gZW5kb3dtZW50c0ZvckhhbmRsZShwcm9jZXNzSGFuZGxlKTsK
KworICAgIG1faXNVc2VyRmFjaW5nID0gW2VuZG93bWVudE5hbWVzcGFjZXMgY29udGFpbnNPYmpl
Y3Q6dXNlcmZhY2luZ0VuZG93bWVudF07CisgICAgbV9pc1Zpc2libGUgPSBbZW5kb3dtZW50TmFt
ZXNwYWNlcyBjb250YWluc09iamVjdDp2aXNpYmlsaXR5RW5kb3dtZW50XTsKKworICAgIG1fcHJv
Y2Vzc01vbml0b3IgPSBbUkJTUHJvY2Vzc01vbml0b3IgbW9uaXRvcldpdGhDb25maWd1cmF0aW9u
Olt0aGlzLCBwcm9jZXNzSGFuZGxlID0gcmV0YWluUHRyKHByb2Nlc3NIYW5kbGUpXSAoaWQ8UkJT
UHJvY2Vzc01vbml0b3JDb25maWd1cmluZz4gY29uZmlnKSB7CisKKyAgICAgICAgUkJTUHJvY2Vz
c1ByZWRpY2F0ZSAqcHJvY2Vzc1ByZWRpY2F0ZSA9IFtSQlNQcm9jZXNzUHJlZGljYXRlIHByZWRp
Y2F0ZU1hdGNoaW5nSGFuZGxlOnByb2Nlc3NIYW5kbGUuZ2V0KCldOworCisgICAgICAgIFJCU1By
b2Nlc3NTdGF0ZURlc2NyaXB0b3IgKnN0YXRlRGVzY3JpcHRvciA9IFtSQlNQcm9jZXNzU3RhdGVE
ZXNjcmlwdG9yIGRlc2NyaXB0b3JdOworICAgICAgICBzdGF0ZURlc2NyaXB0b3IuZW5kb3dtZW50
TmFtZXNwYWNlcyA9IEBbdmlzaWJpbGl0eUVuZG93bWVudCwgdXNlcmZhY2luZ0VuZG93bWVudF07
CisKKyAgICAgICAgW2NvbmZpZyBzZXRQcmVkaWNhdGVzOkBbcHJvY2Vzc1ByZWRpY2F0ZV1dOwor
ICAgICAgICBbY29uZmlnIHNldFN0YXRlRGVzY3JpcHRvcjpzdGF0ZURlc2NyaXB0b3JdOworCisg
ICAgICAgIFtjb25maWcgc2V0VXBkYXRlSGFuZGxlcjpbdGhpc10gKFJCU1Byb2Nlc3NNb25pdG9y
ICogX05vbm51bGwgbW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqIF9Ob25udWxsIHByb2Nlc3Ms
IFJCU1Byb2Nlc3NTdGF0ZVVwZGF0ZSAqIF9Ob25udWxsIHVwZGF0ZSkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGhpcywg
ZW5kb3dtZW50TmFtZXNwYWNlcyA9IHJldGFpblB0cih1cGRhdGUuc3RhdGUuZW5kb3dtZW50TmFt
ZXNwYWNlcyldIHsKKyAgICAgICAgICAgICAgICBzZXRJc1VzZXJGYWNpbmcoW2VuZG93bWVudE5h
bWVzcGFjZXMgY29udGFpbnNPYmplY3Q6dXNlcmZhY2luZ0VuZG93bWVudF0pOworICAgICAgICAg
ICAgICAgIHNldElzVmlzaWJsZShbZW5kb3dtZW50TmFtZXNwYWNlcyBjb250YWluc09iamVjdDp2
aXNpYmlsaXR5RW5kb3dtZW50XSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAg
fV07Cit9CisKK3ZvaWQgRW5kb3dtZW50U3RhdGVUcmFja2VyOjphZGRDbGllbnQoQ2xpZW50JiBj
bGllbnQpCit7CisgICAgbV9jbGllbnRzLmFkZChjbGllbnQpOworfQorCit2b2lkIEVuZG93bWVu
dFN0YXRlVHJhY2tlcjo6cmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KQoreworICAgIG1fY2xp
ZW50cy5yZW1vdmUoY2xpZW50KTsKK30KKwordm9pZCBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNl
dElzVXNlckZhY2luZyhib29sIGlzVXNlckZhY2luZykKK3sKKyAgICBpZiAobV9pc1VzZXJGYWNp
bmcgPT0gaXNVc2VyRmFjaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1VzZXJGYWNpbmcg
PSBpc1VzZXJGYWNpbmc7CisKKyAgICBSRUxFQVNFX0xPRyhWaWV3U3RhdGUsICIlcCAtIEVuZG93
bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNVc2VyRmFjaW5nKCV7cHVibGljfXMpIiwgdGhpcywgaXNV
c2VyRmFjaW5nID8gInRydWUiIDogImZhbHNlIik7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKSB7CisgICAgICAgIGlmIChjbGllbnQpCisgICAgICAg
ICAgICBjbGllbnQtPmlzVXNlckZhY2luZ0NoYW5nZWQobV9pc1VzZXJGYWNpbmcpOworICAgIH0K
K30KKwordm9pZCBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNldElzVmlzaWJsZShib29sIGlzVmlz
aWJsZSkKK3sKKyAgICBpZiAobV9pc1Zpc2libGUgPT0gaXNWaXNpYmxlKQorICAgICAgICByZXR1
cm47CisgICAgbV9pc1Zpc2libGUgPSBpc1Zpc2libGU7CisKKyAgICBSRUxFQVNFX0xPRyhWaWV3
U3RhdGUsICIlcCAtIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2V0SXNWaXNpYmxlKCV7cHVibGlj
fXMpIiwgdGhpcywgaXNWaXNpYmxlID8gInRydWUiIDogImZhbHNlIik7CisKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKSB7CisgICAgICAgIGlmIChjbGll
bnQpCisgICAgICAgICAgICBjbGllbnQtPmlzVmlzaWJsZUNoYW5nZWQobV9pc1Zpc2libGUpOwor
ICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IGYxMDExYmFjZTJhNTNjOTNhMTQxZTc5YzRiMzZhNmEyNDcxZDAzNmEuLjlm
OGJmZDI4NWE3YWNiYjk5YWQyNDcwMmQ3Y2QwNmMzYjk3ODg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTI1LDYgKzUyNSw4IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgUmVmCiAgICAgCiAgICAgaWYgKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMo
KS0+c2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nKCkpCiAgICAgICAg
IGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCk7CisKKyAg
ICBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnNpbmdsZXRvbigpLmFkZENsaWVudCgqdGhpcyk7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNTY2LDYgKzU2OCwxMCBAQCBXZWJQYWdl
UHJveHk6On5XZWJQYWdlUHJveHkoKQogI2lmbmRlZiBOREVCVUcKICAgICB3ZWJQYWdlUHJveHlD
b3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6c2luZ2xldG9uKCkucmVtb3ZlQ2xpZW50KCp0aGlz
KTsKKyNlbmRpZgogfQogCiAvLyBGSVhNRTogU2hvdWxkIHJldHVybiBhIGNvbnN0IFBhZ2VDbGll
bnQmIGFuZCBhZGQgYSBzZXBhcmF0ZSBub24tY29uc3QKQEAgLTc0NjIsMjkgKzc0NjgsNiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEFsbFVSTFNjaGVtZVRhc2tzKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcykKICAgICAgICAgaGFuZGxlci0+c3RvcEFsbFRhc2tzRm9yUGFnZSgqdGhpcywgcHJv
Y2Vzcyk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NXaWxsQmVjb21lU3VzcGVuZGVkKCkKLXsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNw
ZW5kZWQgPSBtX3BhZ2VMb2FkU3RhdGUubmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpOwotICAg
IGlmIChtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkKQotICAgICAgICBzZXROZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKGZhbHNlKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nl
c3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpCi17Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9oYXNOZXR3b3JrUmVxdWVzdHNPblN1c3Bl
bmRlZCkgewotICAgICAgICBzZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKHRydWUpOwotICAg
ICAgICBtX2hhc05ldHdvcmtSZXF1ZXN0c09uU3VzcGVuZGVkID0gZmFsc2U7Ci0gICAgfQotfQot
I2VuZGlmCi0KIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24g
cmVzZXRTdGF0ZVJlYXNvbikKIHsKICAgICBtX21haW5GcmFtZSA9IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3MDY0Y2ZjZjY3YzVhODI3MzliNDE4
M2Y4YmI4OTk1ZjllOTE3OGQuLjNjODRjMWNmOTM5NTc1MzZmYTdiZjFiYTRkYjU4N2ZlN2ZkM2Y2
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjEsNiArMTIx
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisjaW5jbHVkZSAiRW5kb3dtZW50U3RhdGVUcmFja2VyLmgiCiAjaW5jbHVkZSAi
R2VzdHVyZVR5cGVzLmgiCiAjaW5jbHVkZSAiV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgiCiAj
ZW5kaWYKQEAgLTQzMyw3ICs0MzQsMTIgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudAogICAgICwgcHVibGlj
IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQKICNlbmRpZgotICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4geworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgLCBwdWJsaWMgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpDbGllbnQKKyNlbHNl
CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZVByb3h5PgorI2VuZGlmCisgICAg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVu
dCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAg
ICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKQEAgLTExODMsNiArMTE4OSw4IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgcHJvY2Vzc1dpbGxCZWNvbWVTdXNw
ZW5kZWQoKTsKICAgICB2b2lkIHByb2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpOworICAgIHZv
aWQgaXNVc2VyRmFjaW5nQ2hhbmdlZChib29sKSBmaW5hbDsKKyAgICB2b2lkIGlzVmlzaWJsZUNo
YW5nZWQoYm9vbCkgZmluYWw7CiAjZW5kaWYKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCmluZGV4IDliYWRlY2IyYTQyMmM4MzdjNWQzM2UyMmE0NDQ2N2I4MTU5YjRhMzcu
LjM4NzlhYmQxNWE2NDNiMGNiZTI2NmY5ZjUyMWJhMWU2NmRlZjdkMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM0LDYgKzM0
LDcgQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHku
aCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIkVuZG93bWVudFN0YXRl
VHJhY2tlci5oIgogI2ltcG9ydCAiRnJhbWVJbmZvRGF0YS5oIgogI2ltcG9ydCAiSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCIKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZl
bnQuaCIKQEAgLTE2Niw3ICsxNjcsNyBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjppc0FwcGxpY2F0
aW9uVmlzaWJsZSgpCiAgICAgcGlkX3QgYXBwbGljYXRpb25QSUQgPSBzZXJ2aWNlVmlld0NvbnRy
b2xsZXIuX2hvc3RQcm9jZXNzSWRlbnRpZmllcjsKICAgICBBU1NFUlQoYXBwbGljYXRpb25QSUQp
OwogCi0gICAgcmV0dXJuIGlzQXBwbGljYXRpb25Gb3JlZ3JvdW5kKGFwcGxpY2F0aW9uUElEKTsK
KyAgICByZXR1cm4gRW5kb3dtZW50U3RhdGVUcmFja2VyOjppc0FwcGxpY2F0aW9uRm9yZWdyb3Vu
ZChhcHBsaWNhdGlvblBJRCk7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0luV2lu
ZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IDYxNGRjYmYzN2MwNDVkYThiNDk4MmNjOGRhMzg1NTBhMTJiZTI0N2QuLmVhNWU0ZWZk
MmRkMTNmMTdiMjgxZjk4Mzk0NjU5N2NiODQ3OGRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTYwMCw2ICsxNjAwLDQ0IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp3aWxsT3BlbkFwcExpbmsoKQogICAgIH0pOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVTdXNwZW5kZWQoKQoreworICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNOZXR3b3JrUmVx
dWVzdHNPblN1c3BlbmRlZCA9IG1fcGFnZUxvYWRTdGF0ZS5uZXR3b3JrUmVxdWVzdHNJblByb2dy
ZXNzKCk7CisgICAgaWYgKG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQpCisgICAgICAg
IHNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoZmFsc2UpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKCkKK3sKKyAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2hhc05ldHdvcmtSZXF1
ZXN0c09uU3VzcGVuZGVkKSB7CisgICAgICAgIHNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mo
dHJ1ZSk7CisgICAgICAgIG1faGFzTmV0d29ya1JlcXVlc3RzT25TdXNwZW5kZWQgPSBmYWxzZTsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojppc1VzZXJGYWNpbmdDaGFuZ2VkKGJvb2wg
aXNVc2VyRmFjaW5nKQoreworI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIGlmICghaXNV
c2VyRmFjaW5nKQorICAgICAgICBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOworICAgIGVsc2UK
KyAgICAgICAgcmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oaXNVc2VyRmFjaW5nKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aXNWaXNp
YmxlQ2hhbmdlZChib29sIGlzVmlzaWJsZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oaXNWaXNpYmxl
KTsKK30KKwogI2lmIFBMQVRGT1JNKElPUykKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vz
c1RvQXNzZXRTZXJ2aWNlcygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlMjZiNDAzZjg2ZDg2MDcwYTc3YjdlYWU0ZjMxZjRjZWM2
MThmNTA4Li4zNzAwNzFiMzE4NmQxMGQ5YjVmYmJiN2NhM2I4OWZjY2U4ZWNkMzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NTcs
NiArMTc1Nyw4IEBACiAJCUNEQkI0OUZEMjQwRDlBNzIwMDE3QzI5MiAvKiBSZW1vdGVBdWRpb1Nl
c3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREJCNDlGQzI0MEQ5QTcyMDAxN0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9u
Q29uZmlndXJhdGlvbi5oICovOyB9OwogCQlDREMyODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tG
dWxsc2NyZWVuU3RhY2tWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tW
aWV3LmggKi87IH07CiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oICovOyB9OworCQlDRENEQzk5RDI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50
U3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRENEQzk5QjI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLmgg
Ki87IH07CisJCUNEQ0RDOTlFMjQ4RkU4REEwMEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNr
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENE
Qzk5QzI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tICovOyB9Owog
CQlDREU1NTUzMjI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENERTU1NTI5MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDREU1NTUzMzI0MDZFQjhDMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MkEyNDA2Qjg5NjAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJQ0RFNTU1MzQyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFNTU1MkUyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtNTE4MCw2ICs1MTgyLDggQEAKIAkJQ0RDQTg1
QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODVDNzEzMkFC
QTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUQ0MTMyQUMyQjMwMEU5NjFERiAvKiBJ
T0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKKwkJQ0RDREM5OUIyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVu
dFN0YXRlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDREM5OUMyNDhGRThEQTAwQTY5NTIyIC8q
IEVuZG93bWVudFN0YXRlVHJhY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVuZG93bWVu
dFN0YXRlVHJhY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENTM1NkYy
NDBERDM0MzAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVBdWRpb1Nlc3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNERDUzNTcwMjQwREQ0RUYwMEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1h
bmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREQ1MzU3MTI0MERERTA2
MDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk4Niw2ICs2OTkwLDggQEAKIAkJ
CQkyRDU4NzVCRDIxOUI1MzE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCAq
LywKIAkJCQkyRDU4NzVCQjIxOUIyOEE1MDA3MEI5QUEgLyogRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJMkQ1ODc1QkUyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyLm1tICovLAorCQkJCUNEQ0RDOTlCMjQ4RkU4REEwMEE2OTUyMiAv
KiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCAqLywKKwkJCQlDRENEQzk5QzI0OEZFOERBMDBBNjk1
MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tICovLAogCQkJCTJERDQ1QURDMUU1Rjg5NzIw
MDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oICovLAogCQkJCTJERDQ1QUREMUU1
Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbSAqLywKIAkJCQkwRkNC
NEUzNjE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCAqLywKQEAgLTEwNzg0
LDYgKzEwNzkwLDcgQEAKIAkJCQlFMTA1RkU1NDE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1Jh
bmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE0MUFCNTEyQzAyRUM0MDAyQkU2N0IgLyogRWRp
dG9yU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyREE4MTBGNDM3RDEwMDU4QzE1QSAv
KiBFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRENEQzk5RDI0OEZFOERBMDBBNjk1MjIg
LyogRW5kb3dtZW50U3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUIxNUE4NTEz
ODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQTU3NUZCMTQ5NkI1MjYwMEE0RUUwNiAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3QjgyNjQ4MjMwNTBDNTEwMEI3MkVCMCAvKiBGaWRvU2VydmljZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMjcwMSw2ICsxMjcwOCw3IEBACiAJCQkJMUE2NDIyOTkxMkREMDI5
MjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNjQyMzA4MTJERDA5RUIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgwMjEyQjZBNzEwMEY0OTNG
RCAvKiBFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQ0RDOTlFMjQ4RkU4REEwMEE2
OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUE1
NzYwMjE0OTZCOTc5MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI3
NDlGNjQ0MjE0NjU2MUIwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2Vi
S2l0TGlicmFyaWVzL0NoYW5nZUxvZwppbmRleCA0ZjMyOGEwZjMxYTdkNGQ2NThjZDViNzU1MGRj
MDI0NTgxNjI4MmE1Li5iOGIwMzhhNGE1OGMxY2M3MWI5ZGIzNmM1N2YyZTEwYWQyNjE1MDM1IDEw
MDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdExpYnJhcmll
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNi0wOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBDYXRhbHlzdCBXZWJLaXQgYXBwcyBjb250aW51
ZSB0byBwbGF5IGF1ZGlvIGFmdGVyIHF1aXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3
MDg5NDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICog
V2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2lPUy8xMy9SdW5uaW5nQm9hcmRTZXJ2aWNlcy5m
cmFtZXdvcmsvUnVubmluZ0JvYXJkU2VydmljZXMudGJkOgorCiAyMDIwLTA2LTA0ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0dk9TOiBSZW1vdmUgYXJt
NjRlIHJlZmVyZW5jZXMgaW4gLnRiZCBmaWxlcwpkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVz
L1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9pT1MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMu
ZnJhbWV3b3JrL1J1bm5pbmdCb2FyZFNlcnZpY2VzLnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJL
aXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvaU9TLzEzL1J1bm5pbmdCb2FyZFNlcnZpY2VzLmZyYW1l
d29yay9SdW5uaW5nQm9hcmRTZXJ2aWNlcy50YmQKaW5kZXggZGJiM2U0MTk5YTVkMGY5YWQwMDQw
NmY3NDY5ZGMxZWMzODdjZDE3Yi4uNDc4N2M1M2YwOGUzNTk4NGNkNGNhYjdhODNkOWQzNWM0NTBj
YTBlMyAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtT
dHVicy9pT1MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1J1bm5pbmdCb2FyZFNl
cnZpY2VzLnRiZAorKysgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0
dWJzL2lPUy8xMy9SdW5uaW5nQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsvUnVubmluZ0JvYXJkU2Vy
dmljZXMudGJkCkBAIC02LDUgKzYsNSBAQCBwbGF0Zm9ybTogaW9zCiBleHBvcnRzOgogICAtIGFy
Y2hzOiAgICAgICAgICAgWyB4ODZfNjQsIGFybTY0LCBhcm02NGUgXQogICAgIHN5bWJvbHM6ICAg
ICAgICAgWyBfUkJTUHJvY2Vzc1RpbWVMaW1pdGF0aW9uTm9uZSBdCi0gICAgb2JqYy1jbGFzc2Vz
OiAgICBbIFJCU0F0dHJpYnV0ZSwgUkJTRG9tYWluQXR0cmlidXRlLCBSQlNUYXJnZXQsIFJCU0Fz
c2VydGlvbiwgUkJTUHJvY2Vzc0lkZW50aWZpZXIsIFJCU1Byb2Nlc3NTdGF0ZSwgUkJTUHJvY2Vz
c0hhbmRsZSBdCisgICAgb2JqYy1jbGFzc2VzOiAgICBbIFJCU0F0dHJpYnV0ZSwgUkJTRG9tYWlu
QXR0cmlidXRlLCBSQlNUYXJnZXQsIFJCU0Fzc2VydGlvbiwgUkJTUHJvY2Vzc0lkZW50aWZpZXIs
IFJCU1Byb2Nlc3NTdGF0ZSwgUkJTUHJvY2Vzc0hhbmRsZSwgUkJTUHJvY2Vzc1N0YXRlRGVzY3Jp
cHRvciwgUkJTUHJvY2Vzc1ByZWRpY2F0ZSwgUkJTUHJvY2Vzc01vbml0b3IgXQogLi4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401607</attachid>
            <date>2020-06-10 17:04:23 -0700</date>
            <delta_ts>2020-06-10 17:46:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212981-20200610170422.patch</filename>
            <type>text/plain</type>
            <size>2716</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGli
cmFyaWVzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyODczKQorKysgV2ViS2l0TGlicmFyaWVzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTEwICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBDYXRhbHlzdCBXZWJL
aXQgYXBwcyBjb250aW51ZSB0byBwbGF5IGF1ZGlvIGFmdGVyIHF1aXR0aW5nIChGb2xsb3ctdXAg
Zml4KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
OTgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzA4OTQ3MT4KKworICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KKworICAgICAgICAqIFdlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy9h
cHBsZXR2b3MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1J1bm5pbmdCb2FyZFNl
cnZpY2VzLnRiZDoKKyAgICAgICAgKiBXZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hv
cy82L1J1bm5pbmdCb2FyZFNlcnZpY2VzLmZyYW1ld29yay9SdW5uaW5nQm9hcmRTZXJ2aWNlcy50
YmQ6CisKIDIwMjAtMDYtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ2F0YWx5c3QgV2ViS2l0IGFwcHMgY29udGludWUgdG8gcGxheSBhdWRpbyBhZnRlciBx
dWl0dGluZwpJbmRleDogV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVi
cy9hcHBsZXR2b3MvMTMvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1J1bm5pbmdCb2Fy
ZFNlcnZpY2VzLnRiZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0
ZUZyYW1ld29ya1N0dWJzL2FwcGxldHZvcy8xMy9SdW5uaW5nQm9hcmRTZXJ2aWNlcy5mcmFtZXdv
cmsvUnVubmluZ0JvYXJkU2VydmljZXMudGJkCShyZXZpc2lvbiAyNjI4NzMpCisrKyBXZWJLaXRM
aWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL2FwcGxldHZvcy8xMy9SdW5uaW5n
Qm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsvUnVubmluZ0JvYXJkU2VydmljZXMudGJkCSh3b3JraW5n
IGNvcHkpCkBAIC02LDUgKzYsNSBAQCBwbGF0Zm9ybTogdHZvcwogZXhwb3J0czoKICAgLSBhcmNo
czogICAgICAgICAgIFsgeDg2XzY0LCBhcm02NCBdCiAgICAgc3ltYm9sczogICAgICAgICBbIF9S
QlNQcm9jZXNzVGltZUxpbWl0YXRpb25Ob25lIF0KLSAgICBvYmpjLWNsYXNzZXM6ICAgIFsgUkJT
QXR0cmlidXRlLCBSQlNEb21haW5BdHRyaWJ1dGUsIFJCU1RhcmdldCwgUkJTQXNzZXJ0aW9uLCBS
QlNQcm9jZXNzSWRlbnRpZmllciwgUkJTUHJvY2Vzc1N0YXRlLCBSQlNQcm9jZXNzSGFuZGxlIF0K
KyAgICBvYmpjLWNsYXNzZXM6ICAgIFsgUkJTQXR0cmlidXRlLCBSQlNEb21haW5BdHRyaWJ1dGUs
IFJCU1RhcmdldCwgUkJTQXNzZXJ0aW9uLCBSQlNQcm9jZXNzSWRlbnRpZmllciwgUkJTUHJvY2Vz
c1N0YXRlLCBSQlNQcm9jZXNzSGFuZGxlLCBSQlNQcm9jZXNzU3RhdGVEZXNjcmlwdG9yLCBSQlNQ
cm9jZXNzUHJlZGljYXRlLCBSQlNQcm9jZXNzTW9uaXRvciBdCiAuLi4KSW5kZXg6IFdlYktpdExp
YnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy82L1J1bm5pbmdCb2Fy
ZFNlcnZpY2VzLmZyYW1ld29yay9SdW5uaW5nQm9hcmRTZXJ2aWNlcy50YmQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzYv
UnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1J1bm5pbmdCb2FyZFNlcnZpY2VzLnRiZAko
cmV2aXNpb24gMjYyODczKQorKysgV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdv
cmtTdHVicy93YXRjaG9zLzYvUnVubmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1J1bm5pbmdC
b2FyZFNlcnZpY2VzLnRiZAkod29ya2luZyBjb3B5KQpAQCAtNiw1ICs2LDUgQEAgcGxhdGZvcm06
IHdhdGNob3MKIGV4cG9ydHM6CiAgIC0gYXJjaHM6ICAgICAgICAgICBbIGkzODYsIHg4Nl82NCwg
YXJtNjQsIGFybTY0ZSwgYXJtNjRfMzIgXQogICAgIHN5bWJvbHM6ICAgICAgICAgWyBfUkJTUHJv
Y2Vzc1RpbWVMaW1pdGF0aW9uTm9uZSBdCi0gICAgb2JqYy1jbGFzc2VzOiAgICBbIFJCU0F0dHJp
YnV0ZSwgUkJTRG9tYWluQXR0cmlidXRlLCBSQlNUYXJnZXQsIFJCU0Fzc2VydGlvbiwgUkJTUHJv
Y2Vzc0lkZW50aWZpZXIsIFJCU1Byb2Nlc3NTdGF0ZSwgUkJTUHJvY2Vzc0hhbmRsZSBdCisgICAg
b2JqYy1jbGFzc2VzOiAgICBbIFJCU0F0dHJpYnV0ZSwgUkJTRG9tYWluQXR0cmlidXRlLCBSQlNU
YXJnZXQsIFJCU0Fzc2VydGlvbiwgUkJTUHJvY2Vzc0lkZW50aWZpZXIsIFJCU1Byb2Nlc3NTdGF0
ZSwgUkJTUHJvY2Vzc0hhbmRsZSwgUkJTUHJvY2Vzc1N0YXRlRGVzY3JpcHRvciwgUkJTUHJvY2Vz
c1ByZWRpY2F0ZSwgUkJTUHJvY2Vzc01vbml0b3IgXQogLi4uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>