<?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>158463</bug_id>
          
          <creation_ts>2016-06-06 22:42:50 -0700</creation_ts>
          <short_desc>Network: Correctly report encoded data length (transfer size) from CFNetwork to NetworkResourceLoader</short_desc>
          <delta_ts>2021-09-10 09:04:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=155112</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>max</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199916</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-06 22:42:50 -0700</bug_when>
    <thetext>Correctly report encoded data length from CFNetwork to NetworkResourceLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199921</commentid>
    <comment_count>1</comment_count>
      <attachid>280676</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-06 22:49:15 -0700</bug_when>
    <thetext>Created attachment 280676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200085</commentid>
    <comment_count>2</comment_count>
      <attachid>280715</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-07 09:51:22 -0700</bug_when>
    <thetext>Created attachment 280715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200213</commentid>
    <comment_count>3</comment_count>
      <attachid>280715</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-07 15:17:13 -0700</bug_when>
    <thetext>Comment on attachment 280715
Patch

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

&gt; Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:263
&gt; +        m_handle-&gt;client()-&gt;didReceiveBuffer(m_handle, SharedBuffer::wrapNSData(data), static_cast&lt;int&gt;(lengthReceived));

This chops a 64-bit integer and turns it into a 32-bit integer. Why is that OK?

&gt; Source/WebKit2/NetworkProcess/NetworkLoad.cpp:252
&gt; +void NetworkLoad::didReceiveData(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer, int64_t encodedDataLength)

How did you choose the type int64_t? Why signed rather than unsigned? Also, other places in the code use “[unsigned] long long” for this.

&gt; Source/WebKit2/NetworkProcess/NetworkLoad.cpp:255
&gt; +    m_client.didReceiveBuffer(WTFMove(buffer), static_cast&lt;int&gt;(encodedDataLength));

This chops a 64-bit integer and turns it into a 32-bit integer. Why is that OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200223</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-07 15:38:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 280715 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280715&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:263
&gt; &gt; +        m_handle-&gt;client()-&gt;didReceiveBuffer(m_handle, SharedBuffer::wrapNSData(data), static_cast&lt;int&gt;(lengthReceived));
&gt; 
&gt; This chops a 64-bit integer and turns it into a 32-bit integer. Why is that
&gt; OK?
There is great inconsistency in how this is passed around.  It should be fixed.
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkLoad.cpp:252
&gt; &gt; +void NetworkLoad::didReceiveData(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer, int64_t encodedDataLength)
&gt; 
&gt; How did you choose the type int64_t? Why signed rather than unsigned? Also,
&gt; other places in the code use “[unsigned] long long” for this.
That&apos;s what is used in NSURLSession.h.
@property (readonly) int64_t countOfBytesReceived;
There&apos;s a comment saying it can be 0 or -1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200234</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-07 16:14:09 -0700</bug_when>
    <thetext>rdar://problem/21319035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200275</commentid>
    <comment_count>6</comment_count>
      <attachid>280756</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-07 18:14:52 -0700</bug_when>
    <thetext>Created attachment 280756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200326</commentid>
    <comment_count>7</comment_count>
      <attachid>280769</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-07 22:11:08 -0700</bug_when>
    <thetext>Created attachment 280769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200344</commentid>
    <comment_count>8</comment_count>
      <attachid>280774</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-07 23:06:41 -0700</bug_when>
    <thetext>Created attachment 280774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200369</commentid>
    <comment_count>9</comment_count>
      <attachid>280784</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-08 00:08:39 -0700</bug_when>
    <thetext>Created attachment 280784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200525</commentid>
    <comment_count>10</comment_count>
      <attachid>280784</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-08 11:47:26 -0700</bug_when>
    <thetext>Comment on attachment 280784
Patch

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

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:265
&gt; +        networkDataTask-&gt;didReceiveData(WebCore::SharedBuffer::wrapNSData(data), [dataTask countOfBytesReceived]);

[dataTask countOfBytesReceived] returns the decoded size, not the encoded size.  That&apos;s exactly the same as the sum of the previous data-&gt;size()s.  This gives us no additional information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201108</commentid>
    <comment_count>11</comment_count>
      <attachid>280715</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 20:00:43 -0700</bug_when>
    <thetext>Comment on attachment 280715
Patch

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

&gt;&gt;&gt; Source/WebKit2/NetworkProcess/NetworkLoad.cpp:252
&gt;&gt;&gt; +void NetworkLoad::didReceiveData(RefPtr&lt;SharedBuffer&gt;&amp;&amp; buffer, int64_t encodedDataLength)
&gt;&gt; 
&gt;&gt; How did you choose the type int64_t? Why signed rather than unsigned? Also, other places in the code use “[unsigned] long long” for this.
&gt; 
&gt; That&apos;s what is used in NSURLSession.h.
&gt; @property (readonly) int64_t countOfBytesReceived;
&gt; There&apos;s a comment saying it can be 0 or -1.

OK, but for future reference, that doesn’t make it the correct type for platform-independent code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296903</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-04-12 18:38:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/27927293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325173</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-03 11:11:23 -0700</bug_when>
    <thetext>&gt; Comment on attachment 280784 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280784&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:265
&gt; &gt; +        networkDataTask-&gt;didReceiveData(WebCore::SharedBuffer::wrapNSData(data), [dataTask countOfBytesReceived]);
&gt; 
&gt; [dataTask countOfBytesReceived] returns the decoded size, not the encoded
&gt; size.  That&apos;s exactly the same as the sum of the previous data-&gt;size()s. 
&gt; This gives us no additional information.

There is a new SPI we should be able to use now to get the encoded size:
-[NSURLSessionTask _countOfBytesReceivedEncoded]

I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325214</commentid>
    <comment_count>14</comment_count>
      <attachid>280784</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-03 13:10:52 -0700</bug_when>
    <thetext>Comment on attachment 280784
Patch

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

&gt; Source/WebKit/WebCoreSupport/WebResourceLoadScheduler.cpp:94
&gt;  WebResourceLoadScheduler::~WebResourceLoadScheduler()
&gt;  {
&gt; +    // FIXME: Why isn&apos;t m_nonHTTPProtocolHost deleted?
&gt;  }

It looks like this should delete the host, but I think the WebResourceLoadScheduler (owned by the PlatformStrategy) is never be destroyed. This could move to a separate issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325361</commentid>
    <comment_count>15</comment_count>
      <attachid>314544</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-03 18:55:02 -0700</bug_when>
    <thetext>Created attachment 314544
[PATCH] Work in Progress

I don&apos;t think the new SPI is enough. But I&apos;m attaching my work in progress so it doesn&apos;t get lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325362</commentid>
    <comment_count>16</comment_count>
      <attachid>314544</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-03 18:56:40 -0700</bug_when>
    <thetext>Comment on attachment 314544
[PATCH] Work in Progress

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

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:405
&gt; +        if ([dataTask respondsToSelector:@selector(_countOfBytesReceivedEncoded)]) {
&gt; +            WTFLogAlways(&quot;&gt;&gt;&gt; didReceiveData (%u) (%u)&quot;, (unsigned)dataTask._countOfBytesReceivedEncoded, (unsigned)dataTask.countOfBytesReceived);
&gt; +            bytesReceived = dataTask._countOfBytesReceivedEncoded ?: dataTask.countOfBytesReceived;
&gt; +        }

This is not good enough.

  1. If the response is encoded (compressed) data, then _countOfBytesReceivedEncoded starts with zero and doesn&apos;t include headers...
  2. If the response is uncompressed data, then countOfBytesReceived starts with non-zero and includes the header size.

So without knowing if we are receiving compressed / uncompressed data we can&apos;t know which set of APIs to use.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280676</attachid>
            <date>2016-06-06 22:49:15 -0700</date>
            <delta_ts>2016-06-07 09:51:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158463-20160606225040.patch</filename>
            <type>text/plain</type>
            <size>10447</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA2LTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5
IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gQ0ZOZXR3b3JrIHRvIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4NDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2Ugc2hvdWxkIGFkZCBhbiBpbnNwZWN0b3IgdGVzdCB0aGF0IHNlbmRzIGd6aXAnZCBkYXRh
IHdpdGggbm8gQ29udGVudC1MZW5ndGggaGVhZGVyCisgICAgICAgIGFuZCBtYWtlIHN1cmUgd2Un
cmUgY291bnRpbmcgdGhlIGNvbXByZXNzZWQgZGF0YSBzaXplIGNvcnJlY3RseS4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2
ZWQ6XSk6CisgICAgICAgIFBhc3MgdGhlIGxlbmd0aFJlY2VpdmVkIHRvIG1hdGNoIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhLgorCiAyMDE2LTA2LTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVwZGF0ZSB0aGUgbGlzdCBvZiBlbGVtZW50cyBhdHRhY2hTaGFkb3cgaXMgYWxs
b3dlZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxNzM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAgLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8v
IC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUg
dG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBo
ZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1f
aGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVy
Ojp3cmFwTlNEYXRhKGRhdGEpLCAtMSk7CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCBs
ZW5ndGhSZWNlaXZlZCk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
MTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI5IEBACisyMDE2LTA2LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3Ro
IGZyb20gQ0ZOZXR3b3JrIHRvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDYzCisgCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6Y2xpZW50KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkQmVjb21lRG93bmxvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRp
ZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJM
U2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkRmluaXNoRG93bmxvYWRpbmdUb1VSTDpdKToKKwogMjAx
Ni0wNi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFBv
c2l0aW9uIG9mIFdlYkdMIDxjYW52YXM+IG9uIGlPUyBpcyBpbmNvcnJlY3Qgd2l0aCBDU1MgYm9y
ZGVycwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQ2NF90
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZURvd25s
b2FkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBAIC0xMDEs
NyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludDY0X3Qp
OwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKTsKICAgICAKICAgICBOZXR3b3JrRGF0YVRh
c2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAy
MDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OSwxMSArMjQ5LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZU5ldHcKICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXI7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVE
YXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgYXV0byBzaXplID0gYnVm
ZmVyLT5zaXplKCk7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
ciksIHNpemUpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIp
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgTmV0d29y
a0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZp
c2lvbiAyMDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
aW50NjRfdCkgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgp
IGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NSwxNyArMzQ1
LDE0IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnUKICAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgotICAg
IC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJv
bSB0aGUgcmVzb3VyY2UgaGFuZGxlLgotICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0g
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA6IGJ1ZmZlci0+c2l6ZSgpOwotCiAgICAgbV9ieXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6
ZSgpOwogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGggKz0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICBzdGFydEJ1ZmZlcmlu
Z1RpbWVySWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzZW5kQnVmZmVy
TWF5YmVBYm9ydGluZygqYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc2VuZEJ1ZmZl
ck1heWJlQWJvcnRpbmcoKmJ1ZmZlciwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5p
c2hUaW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShy
ZXZpc2lvbiAyMDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6UG9saWN5SWdub3JlKTsKICAg
ICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludDY0X3QpICBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBv
dmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KSBvdmVycmlkZSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMDE3
MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3Jr
RGF0YVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShkYXRhKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRCZWNv
bWVEb3dubG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIwMTczOSkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBAQCAtICh2b2lkKVVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiB7CiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFscyA9
IF93aXRoQ3JlZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxsb3dTdG9y
ZWRDcmVkZW50aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHM7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9u
LT5kYXRhVGFza0ZvcklkZW50aWZpZXIoZGF0YVRhc2sudGFza0lkZW50aWZpZXIsIHN0b3JlZENy
ZWRlbnRpYWxzKSkKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOworICAgICAgICBuZXR3b3JrRGF0
YVRhc2stPmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShk
YXRhKSwgW2RhdGFUYXNrIGNvdW50T2ZCeXRlc1JlY2VpdmVkXSk7CiB9CiAKIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lv
bkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRGaW5pc2hEb3dubG9hZGluZ1RvVVJMOihO
U1VSTCAqKWxvY2F0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280715</attachid>
            <date>2016-06-07 09:51:22 -0700</date>
            <delta_ts>2016-06-07 18:14:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158463-20160607095248.patch</filename>
            <type>text/plain</type>
            <size>10465</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA2LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5
IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gQ0ZOZXR3b3JrIHRvIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4NDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2Ugc2hvdWxkIGFkZCBhbiBpbnNwZWN0b3IgdGVzdCB0aGF0IHNlbmRzIGd6aXAnZCBkYXRh
IHdpdGggbm8gQ29udGVudC1MZW5ndGggaGVhZGVyCisgICAgICAgIGFuZCBtYWtlIHN1cmUgd2Un
cmUgY291bnRpbmcgdGhlIGNvbXByZXNzZWQgZGF0YSBzaXplIGNvcnJlY3RseS4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2
ZWQ6XSk6CisgICAgICAgIFBhc3MgdGhlIGxlbmd0aFJlY2VpdmVkIHRvIG1hdGNoIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhLgorCiAyMDE2LTA2LTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVwZGF0ZSB0aGUgbGlzdCBvZiBlbGVtZW50cyBhdHRhY2hTaGFkb3cgaXMgYWxs
b3dlZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxNzM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAgLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8v
IC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUg
dG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBo
ZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1f
aGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVy
Ojp3cmFwTlNEYXRhKGRhdGEpLCAtMSk7CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCBz
dGF0aWNfY2FzdDxpbnQ+KGxlbmd0aFJlY2VpdmVkKSk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwMTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBl
bmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gQ0ZOZXR3b3JrIHRvIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDYz
CisgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFzazo6Y2xpZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3
b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlk
QmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxT
ZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkRmluaXNoRG93bmxvYWRp
bmdUb1VSTDpdKToKKwogMjAxNi0wNi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBvc2l0aW9uIG9mIFdlYkdMIDxjYW52YXM+IG9uIGlPUyBpcyBpbmNv
cnJlY3Qgd2l0aCBDU1MgYm9yZGVycwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBpbnQ2NF90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEJlY29tZURvd25sb2FkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9T
ZW5kKSA9IDA7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludDY0X3QpOwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKTsKICAgICAK
ICAgICBOZXR3b3JrRGF0YVRhc2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCShyZXZpc2lvbiAyMDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSwxMSArMjQ5LDEwIEBAIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHcKICAgICAgICAgbV9yZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0g
ICAgYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHNpemUpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVCdWZm
ZXIoV1RGTW92ZShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7
CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50NjRfdCkgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBk
aWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
dG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0NSwxNyArMzQ1LDE0IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnUKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOwog
ICAgIH0KICNlbmRpZgotICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdl
IGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgotICAgIHVuc2lnbmVkIGVu
Y29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwotCiAgICAgbV9ieXRlc1JlY2Vp
dmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewogICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CisgICAgICAgIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogICAg
ICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBzZW5kQnVmZmVyTWF5YmVBYm9ydGluZygqYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgc2VuZEJ1ZmZlck1heWJlQWJvcnRpbmcoKmJ1ZmZlciwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6
UG9saWN5SWdub3JlKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfQotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgIG92ZXJyaWRlIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludDY0X3QpICBvdmVycmlkZSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQogICAgIHZvaWQgZGlk
QmVjb21lRG93bmxvYWQoKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAg
dm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxC
eXRlc0V4cGVjdGVkVG9TZW5kKSBvdmVycmlkZSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCShyZXZpc2lvbiAyMDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsx
NzUsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
RGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGRhdGEpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgTmV0d29y
a0RhdGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0J
KHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBA
QCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiB7CiAgICAgYXV0byBz
dG9yZWRDcmVkZW50aWFscyA9IF93aXRoQ3JlZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsczo6QWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzOjpEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtE
YXRhVGFzayA9IF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZpZXIoZGF0YVRhc2sudGFza0lk
ZW50aWZpZXIsIHN0b3JlZENyZWRlbnRpYWxzKSkKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5k
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOwor
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSwgW2RhdGFUYXNrIGNvdW50T2ZCeXRlc1JlY2VpdmVkXSk7
CiB9CiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3dubG9h
ZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRGaW5pc2hE
b3dubG9hZGluZ1RvVVJMOihOU1VSTCAqKWxvY2F0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280756</attachid>
            <date>2016-06-07 18:14:52 -0700</date>
            <delta_ts>2016-06-07 22:11:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158463-20160607181618.patch</filename>
            <type>text/plain</type>
            <size>49538</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA2LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5
IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gTlNVUkxTZXNzaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG5lZWRzIGFuIGluc3Bl
Y3RvciB0ZXN0LCBidXQgc29tZXRoaW5nIHN0aWxsIGlzbid0IHF1aXRlIHJpZ2h0IHdpdGggdGhl
IHJlcG9ydGVkIGVuY29kaW5nIHNpemUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc0Vycm9yU3RhdHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVN
ZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3YXNDYW5jZWxsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6Om9wdGlvbnMpOgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3lu
Yyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmdldE9yQ3JlYXRl
UmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKwogMjAxNi0wNi0wNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBZb3Nl
bWl0ZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAyMDE3NjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
b250aW51ZVcKICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENhbmNlbGVkSW1wbChm
cmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCByKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQt
PmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRh
TGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOSArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUuaCIKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC03Miw4ICs3MCwxMCBAQCBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOworY2xhc3MgSGl0
VGVzdFJlc3VsdDsKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50OwogY2xhc3MgSW5zcGVjdG9yQ1NT
T01XcmFwcGVyczsKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKQEAgLTE3Myw3ICsx
NzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclhGcmFtZU9wdGlv
bnNEZW5pZWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0
aFBvbGljeURvd25sb2FkKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBjb250
aW51ZVdpdGhQb2xpY3lJZ25vcmUoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGlt
ZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBz
ZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENvbHVtbk51bWJl
cik7CkBAIC0zNDMsNyArMzQzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjb250aW51
ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZEltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkSW1wbChGcmFtZSosIERvY3VtZW50
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbChGcmFtZSos
IERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9h
ZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQg
d2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgYm9vbCwgUmVmUHRyPEZvcm1EYXRhPiYm
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CkBAIC04OTgsNyArODk4LDcgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjbwogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbChmcmFtZSwgbG9hZGVyLCBpZGVu
dGlmaWVyLCByKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUq
IGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVu
Z3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCShyZXZpc2lvbiAyMDE3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDcg
KzM2Niw3IEBAIHN0YXRpYyBib29sIGlzRXJyb3JTdGF0dXNDb2RlKGludCBzdGF0dXMKICAgICBy
ZXR1cm4gc3RhdHVzQ29kZSA+PSA0MDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIGlmIChtX2hpZGRlblJlcXVlc3RJZGVudGlmaWVycy5jb250YWlucyhp
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAkocmV2aXNpb24gMjAxNzYzKQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw4ICsyOSw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
SW5zcGVjdG9yTmV0d29ya0FnZW50X2gKLSNkZWZpbmUgSW5zcGVjdG9yTmV0d29ya0FnZW50X2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgpAQCAtNzgsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbWFya1Jlc291cmNlQXND
YWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciYsIGRvdWJsZSBmaW5p
c2hUaW1lKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXImLCBDYWNoZWRSZXNvdXJj
ZSYpOwpAQCAtMTM2LDUgKzEzNSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JOZXR3b3JrQWdlbnRfaCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNzYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2UKICAgICAgICAg
Y2FuY2VsKGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmZpbGVEb2VzTm90RXhpc3RFcnJvcihyZXNw
b25zZSkpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxl
bmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuaAkocmV2aXNpb24gMjAxNzYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmlu
aXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcAkocmV2aXNpb24gMjAxNzYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzCiAgICAgZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50
aWZpZXIoKSwgciwgbG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7
CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgcGFnZS0+cHJv
Z3Jlc3MoKS5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YUxlbmd0
aCk7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0
Y2hEaWRSZQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2UoY29va2llLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShE
b2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICAvLyBO
b3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1heSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUg
ZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKQEAgLTE4OCw3ICsx
ODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZygmbV9mcmFtZSwgbG9hZGVyLCBp
ZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRS
ZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhE
b2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8vIElmIHRoZSBy
ZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdlIHNo
b3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgJKHJl
dmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxOCArNTUsMTggQEAgcHVibGljOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90IGRhdGFMZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKFJlc291
cmNlTG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvTG9hZChS
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgYXNzaWdu
SWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgZGlzcGF0Y2hX
aWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNv
dXJjZUxvYWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogcHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAx
NzYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSgKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
UmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90
IHF1aXRlIHZhbGlkIGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlk
ZSBkaWRSZWNlaXZlRGF0YSBpbiBhIHdheSB0aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAg
LTQ2MCw3ICs0NjAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICAvLyBU
aGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZl
ci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwpAQCAtNDcxLDEx
ICs0NzEsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmCiAKICAg
ICBhZGREYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2Fk
VHlwZSk7CiAgICAgCi0gICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdpdGggbW9y
ZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5nLgotICAg
IC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRz
LCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAvLyBDb3VsZCBiZSBhbiBpc3N1
ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzKCkgPT0gU2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRl
cigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0
PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRp
bWUpCkBAIC02MjUsMTIgKzYyMiwxMiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNzYzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5j
dGlvbjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjayk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTU2LDcg
KzE1Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlKTsKIAogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygp
IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCkBAIC0xODYsOCArMTg2LDggQEAgcHJpdmF0ZToKICAg
ICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6
ZV90LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MjAxNzYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb24KICAgICBjaGVja0ZvckhUVFBTdGF0dXNDb2RlRXJyb3IoKTsKIH0K
IAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBwcnBCdWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBwcnBCdWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9yZXNvdXJjZS0+cmVzcG9uc2Uo
KS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCAmJiAhbV9yZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRU
UFN0YXR1c0NvZGVFcnJvcnMoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2hlY2tGb3JIVFRQU3RhdHVzQ29kZUVycm9yKCk7CiAgICAgYm9vbCBjaGVja0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2
aXNpb24gMjAxNzYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlCiAgICAgbV9jdXJyZW50UmVzb3Vy
Y2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSh1cmwsIHJlc3BvbnNlLCB0eXBl
KTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBVTlVTRURfUEFSQU0o
ZW5jb2RlZERhdGFMZW5ndGgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiAyMDE3NjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgJKHJldmlz
aW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBvdmVy
cmlkZSB7IGRlbGV0ZSB0aGlzOyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyBkZWxl
dGUgdGhpczsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBk
b3VibGUpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0KICAgICB2b2lkIGRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsg
fQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSAg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3AKIH0K
ICNlbmRpZgogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzMsOCArNzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSB7IH0KICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFM
ZW5ndGgqLykgeyB9Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBsb25nIC8qZW5jb2RlZERhdGFM
ZW5ndGgqLykgeyB9CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKSB7IH0K
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CkBAIC0xMDgsNyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2VuZGlmCiAKICNpZiBVU0UoU09VUCkKLSAgICAgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0
ZVJlYWRCdWZmZXIoc2l6ZV90IC8qcmVxdWVzdGVkTGVuZ3RoKi8sIHNpemVfdCYgLyphY3R1YWxM
ZW5ndGgqLykgeyByZXR1cm4gMDsgfQorICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRl
UmVhZEJ1ZmZlcihzaXplX3QgLypyZXF1ZXN0ZWRMZW5ndGgqLywgc2l6ZV90JiAvKmFjdHVhbExl
bmd0aCovKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiBm
YWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTc2MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmUKICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CiB9CiAKLXZv
aWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxl
bmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBsb25nIGxvbmcg
LyplbmNvZGVkRGF0YUxlbmd0aCovKQogewogICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgU3luY2hyb25vdXNMb2FkZXJDbGllbnRfaAotI2RlZmlu
ZSBTeW5jaHJvbm91c0xvYWRlckNsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgpAQCAtNDks
NyArNDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
UmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5j
b2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBzaXplX3QsIGxvbmcgbG9uZyAvKmVuY29kZWREYXRh
TGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhh
bmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC02Myw1ICs2MiwzIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzRG9uZSB7IGZhbHNlIH07CiB9OwogfQotCi0jZW5kaWYgLy8gU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNzYzKQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTYtMDYtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBDb3JyZWN0bHkgcmVwb3J0IGVuY29kZWQgZGF0YSBsZW5ndGggZnJvbSBO
U1VSTFNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2s6OmNsaWVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRo
RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
QXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
azo6ZGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS05l
dHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkRmluaXNoRG93
bmxvYWRpbmdUb1VSTDpdKToKKwogMjAxNi0wNi0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vZGVybml6ZSBsb2FkaW5nIGNvZGUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CShyZXZpc2lvbiAyMDE3NjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdv
cmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBjb3VudE9mQnl0ZXNSZWNl
aXZlZCk7CiAgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpOwogICAgIAogICAgIE5ldHdvcmtE
YXRhVGFza0NsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTE2
MCw2ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2Zp
cnN0UmVxdWVzdDsKICAgICBib29sIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdDsKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9u
OworICAgIGxvbmcgbG9uZyBtX2NvdW50T2ZCeXRlc1JlY2VpdmVkU29GYXIgeyAwIH07CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rh
c2s7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUwLDExICsyNTAsOSBA
QCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3CiAgICAgICAgIG1fcmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIHRoZSBlbmNvZGVkIGRhdGEgbGVuZ3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5n
dGguCi0gICAgYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCk7Ci0gICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHNpemUpOworICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
TmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQpAQCAtMjk0LDE0ICsyOTIsMTQgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bgogICAgICAgICBtX2hhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCB1bnNpZ25lZCAvKiBsZW5ndGggKi8sIGludCAvKiBl
bmNvZGVkRGF0YUxlbmd0aCAqLykKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgc2l6ZV90IC8qIGxlbmd0aCAq
LywgbG9uZyBsb25nIC8qIGVuY29kZWREYXRhTGVuZ3RoICovKQogewogICAgIC8vIFRoZSBOZXR3
b3JrUHJvY2VzcyBzaG91bGQgbmV2ZXIgZ2V0IGEgZGlkUmVjZWl2ZURhdGEgY2FsbGJhY2suCiAg
ICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBiZSB1c2luZyBkaWRSZWNlaXZlQnVmZmVyLgogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9V
TlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNp
b24gMjAxNzYzKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0xvYWRfaAotI2RlZmluZSBOZXR3
b3JrTG9hZF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCkBAIC02OCw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJl
Y29tZURvd25sb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3Rh
bEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBvdmVycmlkZTsK
QEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBj
aGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSop
IG92ZXJyaWRlOwpAQCAtMTM2LDUgKzEzNSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5ldHdvcmtMb2FkX2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24g
MjAxNzYzKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICBlbnVtIGNsYXNz
IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHsgTm8sIFllcyB9OwogICAgIHZpcnR1
YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJs
ZSBmaW5pc2hUaW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNzYzKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMxLDcgKzMzMSw3IEBAIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmUKICAgICByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5vOwogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAjaWYgRU5B
QkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KTsKQEAgLTM0Niw2ICszNDYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1CiAgICAgfQogI2VuZGlmCiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9z
ZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCisgICAgLy8g
V2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbiwgd2UgZ2V0IHRoZSBjb3JyZWN0IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGggZnJvbSBOZXR3b3JrRGF0YVRhc2suCiAgICAgdW5zaWduZWQgZW5jb2Rl
ZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKICAgICBtX2J5dGVzUmVjZWl2ZWQg
Kz0gYnVmZmVyLT5zaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNzYzKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTeW5jaHJv
bm91cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwog
ICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNo
VGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMjAxNzYz
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7CiAgICAgICAgIGRlbGV0ZSB0
aGlzOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpICBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcpICBv
dmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyBkZWxldGUg
dGhpczsgfQogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBvdmVycmlkZSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBvdmVycmlkZSB7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgUGVuZGluZ0Rvd25sb2FkX2gKLSNkZWZpbmUgUGVuZGluZ0Rvd25sb2Fk
X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIApAQCAtNTYsNyAr
NTUsNyBAQCBwcml2YXRlOiAgICAKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZSB7IHJldHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRCZWNvbWVEb3dubG9hZCgpIG92ZXJyaWRlOwpAQCAtNzIsNSArNzEsMyBAQCBwcml2YXRlOgog
fQogCiAjZW5kaWYKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDcgKzg4LDcgQEAgYXV0byBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25z
ZQogICAgIHJldHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzOwogfQog
Ci12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9u
ZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hl
RW50cnlGb3JWYWxpZGF0aW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgJKHJldmlzaW9uIDIwMTc2MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJ
REFUSU9OKQogCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCi0jaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlRW50cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CkBAIC00MSw2ICs0MCw4IEBAIGNsYXNzIE5ldHdvcmtMb2FkOwogCiBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKIAorY2xhc3MgRW50cnk7CisKIGNsYXNzIFNwZWN1bGF0aXZlTG9hZCBm
aW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC01OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N5
bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCShyZXZpc2lvbiAyMDE3NjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsx
NzUsMTYgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGxvbmcgbG9uZyBjb3VudE9mQnl0
ZXNSZWNlaXZlZCkKIHsKKyAgICBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGggPSBjb3VudE9m
Qnl0ZXNSZWNlaXZlZDsKKyAgICBpZiAoY291bnRPZkJ5dGVzUmVjZWl2ZWQgPiAwKSB7CisgICAg
ICAgIGVuY29kZWREYXRhTGVuZ3RoID0gY291bnRPZkJ5dGVzUmVjZWl2ZWQgLSBtX2NvdW50T2ZC
eXRlc1JlY2VpdmVkU29GYXI7CisgICAgICAgIG1fY291bnRPZkJ5dGVzUmVjZWl2ZWRTb0ZhciA9
IGNvdW50T2ZCeXRlc1JlY2VpdmVkOworICAgIH0KKyAgICAKICAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjAxNzYzKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYyLDcgKzI2Miw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c2Vzc2kKIHsKICAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFscyA/
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAg
ICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRp
ZmllcihkYXRhVGFzay50YXNrSWRlbnRpZmllciwgc3RvcmVkQ3JlZGVudGlhbHMpKQotICAgICAg
ICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
d3JhcE5TRGF0YShkYXRhKSk7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCBbZGF0YVRhc2sgY291
bnRPZkJ5dGVzUmVjZWl2ZWRdKTsKIH0KIAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Np
b24gKilzZXNzaW9uIGRvd25sb2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopZG93
bmxvYWRUYXNrIGRpZEZpbmlzaERvd25sb2FkaW5nVG9VUkw6KE5TVVJMICopbG9jYXRpb24KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMDE3ODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9y
dCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gTlNVUkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
On5XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpsb2FkUmVzb3VyY2UpOgorCiAyMDE2LTA2LTA3ICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01hY11bY21ha2VdIFVucmV2aWV3ZWQgdHJp
dmlhbCBidWlsZGZpeCBhZnRlciByMjAxNjg5LiBKdXN0IGZvciBmdW4uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwCShyZXZpc2lvbiAyMDE3NjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYg
KzkwLDcgQEAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpXZWJSZXNvdXJjZUxvYQogCiBXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogeworICAg
IC8vIEZJWE1FOiBXaHkgaXNuJ3QgbV9ub25IVFRQUHJvdG9jb2xIb3N0IGRlbGV0ZWQ/CiB9CiAK
IFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2Fk
UmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRp
b25zKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280769</attachid>
            <date>2016-06-07 22:11:08 -0700</date>
            <delta_ts>2016-06-07 23:06:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158463-20160607221235.patch</filename>
            <type>text/plain</type>
            <size>52255</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gTlNV
UkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb246CisKIDIwMTYtMDYtMDcgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE5lZWQgYW4gZXhjZXB0aW9uIGNo
ZWNrIGFmdGVyIGNvbnN0cnVjdEVtcHR5QXJyYXkoKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCShyZXZpc2lv
biAyMDE3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05l
dHdvcmsuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMyw4IEBACiAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIs
ICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50aWZpZXIu
IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0YW1wIiwgIiRyZWYiOiAiVGlt
ZXN0YW1wIiwgImRlc2NyaXB0aW9uIjogIlRpbWVzdGFtcC4iIH0sCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJkYXRhTGVuZ3RoIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJEYXRhIGNodW5rIGxlbmd0aC4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmNv
ZGVkRGF0YUxlbmd0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiQWN0dWFs
IGJ5dGVzIHJlY2VpdmVkIChtaWdodCBiZSBsZXNzIHRoYW4gZGF0YUxlbmd0aCBmb3IgY29tcHJl
c3NlZCBlbmNvZGluZ3MpLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YUxlbmd0
aCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJEYXRhIGNodW5rIGxlbmd0aC4i
IH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmNvZGVkRGF0YUxlbmd0aCIsICJ0eXBl
IjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJBY3R1YWwgYnl0ZXMgcmVjZWl2ZWQgKG1pZ2h0
IGJlIGxlc3MgdGhhbiBkYXRhTGVuZ3RoIGZvciBjb21wcmVzc2VkIGVuY29kaW5ncykuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDcxIEBACisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEg
bGVuZ3RoIGZyb20gTlNVUkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG5lZWRzIGFuIGluc3BlY3RvciB0ZXN0LgorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGlu
dWVXaXRoUG9saWN5SWdub3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFcnJvclN0YXR1c0NvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoRGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZp
ZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6Ondhc0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
b3B0aW9ucyk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1BpbmdIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwOgorCiAyMDE2LTA2LTA3ICBKb29uZ2h1biBQYXJrICA8amg3MTgucGFya0BzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXSBCdWlsZCBmaXggcmVsYXRlZCB3aXRoIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlIGluIFNoYXJlZEJ1ZmZlclBvc2l4LmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNyArNjA3LDcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlVwogICAgIGRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKGZyYW1lLCBsb2FkZXIsIGlkZW50aWZp
ZXIsIHIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChJbnNwZWN0b3JOZXR3
b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0
d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRp
ZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAko
cmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw3IEBACiAKICNpbmNs
dWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5oIgogI2luY2x1ZGUgIk1l
bW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTcyLDggKzcwLDEw
IEBAIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW5z
cGVjdG9yQ1NTQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOwogY2xhc3MgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOwpAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChGcmFtZSosIERvY3Vt
ZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5RG93bmxvYWQoRnJhbWUq
LCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZShG
cmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVE
YXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNo
WEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRM
aW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVyKTsKQEAgLTM0Myw3ICszNDMsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVu
aWVkSW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRo
UG9saWN5RG93bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBj
b250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXImLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlz
aFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBVUkwmLCBib29sLCBSZWZQdHI8Rm9ybURhdGE+JiYsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
LCBib29sKTsKQEAgLTg5OCw3ICs4OTgsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQ
b2xpY3lJZ25vcmVJbXBsKGZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIHIpOwogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBm
cmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCiAg
ICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmll
ciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAJKHJldmlz
aW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIGJvb2wg
aXNFcnJvclN0YXR1c0NvZGUoaW50IHN0YXR1cwogICAgIHJldHVybiBzdGF0dXNDb2RlID49IDQw
MDsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNl
aXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1f
aGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JOZXR3b3JrQWdlbnRf
aAotI2RlZmluZSBJbnNwZWN0b3JOZXR3b3JrQWdlbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CkBAIC03OCw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShEb2N1bWVudExvYWRlciYsIENhY2hlZFJlc291cmNlJik7CkBAIC0xMzYsNSArMTM1LDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3Rvck5ldHdvcmtBZ2VudF9oKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCShyZXZpc2lvbiAy
MDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZQogICAgICAgICBjYW5jZWwoZnJhbWVMb2FkZXIoKS0+
Y2xpZW50KCkuZmlsZURvZXNOb3RFeGlzdEVycm9yKHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewog
ICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCShyZXZpc2lvbiAyMDE3
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhcios
IHNpemVfdCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCShyZXZpc2lv
biAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpZFJlY2VpdmVSZXMKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUucGFnZSgpKQogICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dy
ZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKQEAgLTE2MSw3ICsxNjEsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIGlkZW50
aWZpZXIsIGxvYWRlciwgciwgcmVzb3VyY2VMb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIC8vIE5vdGlmeWluZyB0aGUgRnJhbWVMb2Fk
ZXJDbGllbnQgbWF5IGNhdXNlIHRoZSBmcmFtZSB0byBiZSBkZXN0cm95ZWQuCiAgICAgUmVmPEZy
YW1lPiBwcm90ZWN0KG1fZnJhbWUpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZhaWxMb2FkaW5nKCZtX2ZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIGVycm9yKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2Fn
ZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNl
bmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hvdWxkCiAgICAgLy8gb25seSBkaXNw
YXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDE4ICs1NSwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcios
IGNvbnN0IGNoYXIqLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBkb3VibGUgZmlu
aXNoVGltZSk7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKiA9IG51bGxwdHIp
OwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNz
YWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
CiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDQsNyArNDQ0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKAogICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX3Jlc3Bv
bnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2lu
Y2UgYSBzdWJjbGFzcwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEg
d2F5IHRoYXQgaW52YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmUKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgogICAgIEFTU0VSVCghYnVmZmVy
IHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CkBAIC00NzEsMTEgKzQ3MSw4IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWYKIAogICAgIGFkZERhdGFPckJ1ZmZlcihkYXRh
LCBsZW5ndGgsIGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKICAgICAKLSAgICAvLyBG
SVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMg
Y29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCi0gICAgLy8gSG93ZXZlciwgd2l0aCB0b2Rh
eSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGlu
IHByYWN0aWNlLgotICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBm
aWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKQEAgLTYyNSwxMiArNjIyLDEy
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgKICAgICBkaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwg
bGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90LCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0
YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCBjaGFyKiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9
CiAKQEAgLTE4Niw4ICsxODYsOCBAQCBwcml2YXRlOgogICAgIFJlc291cmNlUmVxdWVzdCB3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERh
dGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBzaXplX3QsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBk
b3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tl
ZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQs
NyArMzA0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbgogICAg
IGNoZWNrRm9ySFRUUFN0YXR1c0NvZGVFcnJvcigpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRh
dGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7
CiB9CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBycEJ1ZmZlciwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBycEJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQogewogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0g
NDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja0ZvckhUVFBTdGF0dXND
b2RlRXJyb3IoKTsKICAgICBib29sIGNoZWNrQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVl
c3QmIG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciosIHNpemVfdCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlE
b25lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRSZWNlaXZlUmUKICAgICBtX2N1cnJlbnRSZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUpOwogfQogCi12b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkRGF0YUxlbmd0aCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBj
aGFyKiwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmlu
aXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgZGVsZXRlIHRoaXM7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH07
CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9OwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkgb3ZlcnJpZGUgeyBkZWxl
dGUgdGhpczsgfQogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CiAgICAgYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopICBvdmVycmlkZSB7IHJldHVybiBtX3No
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkocmV2aXNp
b24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcAogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2
aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3Myw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQogICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFy
Kiwgc2l6ZV90LCBsb25nIGxvbmcgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwog
ICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VI
YW5kbGUqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KQEAgLTEw
OCw3ICsxMDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQ
KQotICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgLypy
ZXF1ZXN0ZWRMZW5ndGgqLywgc2l6ZV90JiAvKmFjdHVhbExlbmd0aCovKSB7IHJldHVybiAwOyB9
CisgICAgICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKnJl
cXVlc3RlZExlbmd0aCovLCBzaXplX3QmIC8qYWN0dWFsTGVuZ3RoKi8pIHsgcmV0dXJuIG51bGxw
dHI7IH0KICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDcgKzY3LDcgQEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZQog
ICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGxvbmcgbG9uZyAvKmVuY29kZWREYXRhTGVuZ3RoKi8p
CiB7CiAgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBTeW5jaHJvbm91c0xvYWRlckNsaWVudF9oCi0jZGVmaW5lIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCkBAIC00OSw3ICs0OCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciosIHNpemVfdCwgbG9uZyBsb25nIC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNo
VGltZSovKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKQEAgLTYzLDUgKzYyLDMgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEb25l
IHsgZmFsc2UgfTsKIH07CiB9Ci0KLSNlbmRpZiAvLyBTeW5jaHJvbm91c0xvYWRlckNsaWVudF9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0MSwxMiArMTQxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9yZXNw
b25zZSA9IHJlc3BvbnNlOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCB1bnNpZ25lZCAvKiBsZW5ndGggKi8s
IGludCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciogLyogZGF0YSAqLywgc2l6ZV90IC8qIGxlbmd0aCAqLywgbG9uZyBsb25nKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCAvKiBlbmNvZGVkTGVuZ3RoICovKSBvdmVycmlkZQorICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgLyogZW5jb2RlZExlbmd0aCAqLykgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIC8vIFRoaXMgcGF0dGVybiBpcyBzdWdnZXN0ZWQgYnkgU2hhcmVkQnVmZmVyLmguCiAgICAg
ICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE3OTAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
NiBAQAorMjAxNi0wNi0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIENvcnJlY3RseSByZXBvcnQgZW5jb2RlZCBkYXRhIGxlbmd0aCBmcm9t
IE5TVVJMU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4NDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6Y2xpZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVz
cG9uc2VOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdp
dGhFcnJvcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9u
c2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrOjpkaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVn
YXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2FkVGFzazpkaWRGaW5pc2hE
b3dubG9hZGluZ1RvVVJMOl0pOgorCiAyMDE2LTA2LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IDEwLjEwIGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIwMTc5MCkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
cGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1NlbmQpID0gMDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGNvdW50T2ZCeXRlc1JlY2VpdmVkKTsKICAgICB2b2lkIGRp
ZEJlY29tZURvd25sb2FkKCk7CiAgICAgCiAgICAgTmV0d29ya0RhdGFUYXNrQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtMTYwLDYgKzE2MCw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fZmlyc3RSZXF1ZXN0OwogICAgIGJv
b2wgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CisgICAgbG9uZyBsb25nIG1f
Y291bnRPZkJ5dGVzUmVjZWl2ZWRTb0ZhciB7IDAgfTsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzazsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNp
b24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsMTEgKzI1MCw5IEBAIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZU5ldHcKICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyID0gY29tcGxldGlvbkhhbmRsZXI7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQg
ZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KLSAgICBhdXRvIHNpemUg
PSBidWZmZXItPnNpemUoKTsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29t
cGxldGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0yOTQsMTQgKzI5
MiwxNCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luCiAgICAgICAg
IG1faGFuZGxlLT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRh
dGEgKi8sIHVuc2lnbmVkIC8qIGxlbmd0aCAqLywgaW50IC8qIGVuY29kZWREYXRhTGVuZ3RoICov
KQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiAvKiBkYXRhICovLCBzaXplX3QgLyogbGVuZ3RoICovLCBsb25nIGxvbmcgLyogZW5j
b2RlZERhdGFMZW5ndGggKi8pCiB7CiAgICAgLy8gVGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBu
ZXZlciBnZXQgYSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjay4KICAgICAvLyBXZSBzaG91bGQgYWx3
YXlzIGJlIHVzaW5nIGRpZFJlY2VpdmVCdWZmZXIuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRs
ZSA9PSBtX2hhbmRsZSk7CiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBOZXR3b3JrTG9hZF9oCi0jZGVmaW5lIE5ldHdvcmtMb2FkX2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaCIKQEAgLTY4LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBmaW5h
bDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIG92ZXJyaWRlOwpAQCAtNzksOCArNzgsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBzaXplX3QsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBm
aW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3YXNCbG9ja2VkKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CkBAIC0xMzYs
NSArMTM1LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gTmV0d29ya0xvYWRfaApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UgeyBObywgWWVzIH07CiAgICAgdmlydHVhbCBTaG91bGRDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpID0gMDsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAg
YXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogICAgIHJldHVybiBTaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkK
ICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtMzQ2LDYgKzM0Niw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnUKICAgICB9CiAjZW5k
aWYKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0
IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KKyAgICAvLyBXaGVuIHVzaW5nIE5ldHdvcmtT
ZXNzaW9uLCB3ZSBnZXQgdGhlIGNvcnJlY3QgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCBmcm9t
IE5ldHdvcmtEYXRhVGFzay4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBi
dWZmZXItPnNpemUoKTsKIAogICAgIG1fYnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFj
dGlvbjo6UG9saWN5SWdub3JlKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfQotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgIG92ZXJyaWRl
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZykgIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CiAgICAgdm9pZCBk
aWRCZWNvbWVEb3dubG9hZCgpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIG92ZXJyaWRlIHsgfQpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQZW5k
aW5nRG93bmxvYWRfaAotI2RlZmluZSBQZW5kaW5nRG93bmxvYWRfaAorI3ByYWdtYSBvbmNlCiAK
ICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCkBAIC01Niw3ICs1NSw3IEBAIHByaXZhdGU6ICAg
IAogICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAg
ICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFNob3VsZENv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRp
bWUpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkg
b3ZlcnJpZGU7CkBAIC03Miw1ICs3MSwzIEBAIHByaXZhdGU6CiB9CiAKICNlbmRpZgotCi0jZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkocmV2aXNpb24g
MjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBh
dXRvIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgcmV0dXJuIFNob3Vs
ZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXM7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24p
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAkocmV2aXNpb24gMjAx
NzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBF
TkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAKICNpbmNsdWRl
ICJOZXR3b3JrQ2FjaGUuaCIKLSNpbmNsdWRlICJOZXR3b3JrQ2FjaGVFbnRyeS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTQxLDYgKzQw
LDggQEAgY2xhc3MgTmV0d29ya0xvYWQ7CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCitj
bGFzcyBFbnRyeTsKKwogY2xhc3MgU3BlY3VsYXRpdmVMb2FkIGZpbmFsIDogcHVibGljIE5ldHdv
cmtMb2FkQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAg
LTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ug
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDIwMTc5
MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwxNiBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtE
YXRhVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQordm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgbG9uZyBsb25nIGNvdW50T2ZCeXRlc1JlY2VpdmVkKQogeworICAg
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCA9IGNvdW50T2ZCeXRlc1JlY2VpdmVkOworICAg
IGlmIChjb3VudE9mQnl0ZXNSZWNlaXZlZCA+IDApIHsKKyAgICAgICAgZW5jb2RlZERhdGFMZW5n
dGggPSBjb3VudE9mQnl0ZXNSZWNlaXZlZCAtIG1fY291bnRPZkJ5dGVzUmVjZWl2ZWRTb0ZhcjsK
KyAgICAgICAgbV9jb3VudE9mQnl0ZXNSZWNlaXZlZFNvRmFyID0gY291bnRPZkJ5dGVzUmVjZWl2
ZWQ7CisgICAgfQorICAgIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEoV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIE5ldHdv
cmtEYXRhVGFzazo6ZGlkQmVjb21lRG93bmxvYWQoKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNyArMjYyLDcg
QEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogewogICAgIGF1dG8g
c3RvcmVkQ3JlZGVudGlhbHMgPSBfd2l0aENyZWRlbnRpYWxzID8gV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsczo6RG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIGlmIChhdXRvKiBuZXR3b3Jr
RGF0YVRhc2sgPSBfc2Vzc2lvbi0+ZGF0YVRhc2tGb3JJZGVudGlmaWVyKGRhdGFUYXNrLnRhc2tJ
ZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFscykpCi0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpKTsK
KyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OndyYXBOU0RhdGEoZGF0YSksIFtkYXRhVGFzayBjb3VudE9mQnl0ZXNSZWNlaXZlZF0p
OwogfQogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZG93bmxv
YWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2sgZGlkRmluaXNo
RG93bmxvYWRpbmdUb1VSTDooTlNVUkwgKilsb2NhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwMTc5MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTYtMDYtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBDb3JyZWN0bHkgcmVwb3J0IGVuY29kZWQgZGF0YSBsZW5n
dGggZnJvbSBOU1VSTFNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1ODQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6fldlYlJlc291cmNlTG9hZFNj
aGVkdWxlcik6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJj
ZSk6CisKIDIwMTYtMDYtMDcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbTWFjXVtjbWFrZV0gVW5yZXZpZXdlZCB0cml2aWFsIGJ1aWxkZml4IGFmdGVy
IHIyMDE2ODkuIEp1c3QgZm9yIGZ1bi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9u
IDIwMTc5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBXZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OldlYlJlc291cmNlTG9hCiAKIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6fldlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7CisgICAgLy8gRklYTUU6IFdoeSBpc24n
dCBtX25vbkhUVFBQcm90b2NvbEhvc3QgZGVsZXRlZD8KIH0KIAogUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJh
bWUsIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280774</attachid>
            <date>2016-06-07 23:06:41 -0700</date>
            <delta_ts>2016-06-08 00:08:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158463-20160607230808.patch</filename>
            <type>text/plain</type>
            <size>53732</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gTlNV
UkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb246CisKIDIwMTYtMDYtMDcgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE5lZWQgYW4gZXhjZXB0aW9uIGNo
ZWNrIGFmdGVyIGNvbnN0cnVjdEVtcHR5QXJyYXkoKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCShyZXZpc2lv
biAyMDE3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05l
dHdvcmsuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMyw4IEBACiAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIs
ICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50aWZpZXIu
IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0YW1wIiwgIiRyZWYiOiAiVGlt
ZXN0YW1wIiwgImRlc2NyaXB0aW9uIjogIlRpbWVzdGFtcC4iIH0sCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJkYXRhTGVuZ3RoIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJEYXRhIGNodW5rIGxlbmd0aC4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmNv
ZGVkRGF0YUxlbmd0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiQWN0dWFs
IGJ5dGVzIHJlY2VpdmVkIChtaWdodCBiZSBsZXNzIHRoYW4gZGF0YUxlbmd0aCBmb3IgY29tcHJl
c3NlZCBlbmNvZGluZ3MpLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YUxlbmd0
aCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJEYXRhIGNodW5rIGxlbmd0aC4i
IH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmNvZGVkRGF0YUxlbmd0aCIsICJ0eXBl
IjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJBY3R1YWwgYnl0ZXMgcmVjZWl2ZWQgKG1pZ2h0
IGJlIGxlc3MgdGhhbiBkYXRhTGVuZ3RoIGZvciBjb21wcmVzc2VkIGVuY29kaW5ncykuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIwMTc5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDczIEBACisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEg
bGVuZ3RoIGZyb20gTlNVUkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG5lZWRzIGFuIGluc3BlY3RvciB0ZXN0LgorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGlu
dWVXaXRoUG9saWN5SWdub3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFcnJvclN0YXR1c0NvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAq
IGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6d2FzQ2FuY2VsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpvcHRp
b25zKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
UmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisKIDIwMTYtMDYtMDcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVGTCBidWlsZCBoYXMgYmVlbiBicm9rZW4gc2lu
Y2UgcjIwMTc2MQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnRpbnVlVwogICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKGZy
YW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIHIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+
ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw5ICszMyw3IEBACiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKLSNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZS5oIgogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKQEAgLTcyLDggKzcwLDEwIEBAIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBGb3JtRGF0YTsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBIaXRU
ZXN0UmVzdWx0OwogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NP
TVdyYXBwZXJzOwogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwpAQCAtMTczLDcgKzE3
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9u
c0RlbmllZChGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRo
UG9saWN5RG93bmxvYWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnRp
bnVlV2l0aFBvbGljeUlnbm9yZShGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1l
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNl
bmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVy
KTsKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVl
QWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkSW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3Rh
dGljIHZvaWQgY29udGludWVXaXRoUG9saWN5RG93bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRM
b2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwg
RG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCB3
aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBSZWZQdHI8Rm9ybURhdGE+JiYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKQEAgLTg5OCw3ICs4OTgsNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKGZyYW1lLCBsb2FkZXIsIGlkZW50
aWZpZXIsIHIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNyAr
MzY2LDcgQEAgc3RhdGljIGJvb2wgaXNFcnJvclN0YXR1c0NvZGUoaW50IHN0YXR1cwogICAgIHJl
dHVybiBzdGF0dXNDb2RlID49IDQwMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDggKzI5LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0b3JOZXR3b3JrQWdlbnRfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CkBAIC03OCw3ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0Nh
Y2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgZG91YmxlIGZpbmlz
aFRpbWUpOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciYsIENhY2hlZFJlc291cmNl
Jik7CkBAIC0xMzYsNSArMTM1LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvck5ldHdvcmtBZ2VudF9oKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZQogICAgICAgICBj
YW5jZWwoZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZmlsZURvZXNOb3RFeGlzdEVycm9yKHJlc3Bv
bnNlKSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVu
Z3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5p
c2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXMKICAgICBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRp
ZmllcigpLCByLCBsb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQogICAgICAgICBwYWdlLT5wcm9n
cmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3Ro
KTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aERpZFJlCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwgcmVzb3VyY2VMb2FkZXIpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIC8vIE5v
dGlmeWluZyB0aGUgRnJhbWVMb2FkZXJDbGllbnQgbWF5IGNhdXNlIHRoZSBmcmFtZSB0byBiZSBk
ZXN0cm95ZWQuCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmEKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKCZtX2ZyYW1lLCBsb2FkZXIsIGlk
ZW50aWZpZXIsIGVycm9yKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3Zv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJl
cXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hv
dWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAkocmV2
aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE4ICs1NSwxOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3Vy
Y2VMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBhc3NpZ25J
ZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdp
bGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVyKiA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE3
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKAogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVS
ZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFyZSBub3Qg
cXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBzdWJjbGFzcwogICAgIC8vIG1pZ2h0IG92ZXJyaWRl
IGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRoYXQgaW52YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAt
NDYwLDcgKzQ2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmUK
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVy
LgogICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CkBAIC00NzEsMTEg
KzQ3MSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWYKIAogICAg
IGFkZERhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRU
eXBlKTsKICAgICAKLSAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3Jl
IHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCi0gICAg
Ly8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMs
IHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgotICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MoKSA9PSBTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8
aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmll
cigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGlt
ZSkKQEAgLTYyNSwxMiArNjIyLDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSgKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC0xNTYsNyAr
MTU2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkg
eyByZXR1cm4gbV9vcHRpb25zOyB9CiAKQEAgLTE4Niw4ICsxODYsOCBAQCBwcml2YXRlOgogICAg
IFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSos
IFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBzaXpl
X3QsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
MDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbgogICAgIGNoZWNrRm9ySFRUUFN0YXR1c0NvZGVFcnJvcigpOwogfQog
Ci12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
bnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxv
YWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IHBycEJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHBycEJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
ZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjaGVja0ZvckhUVFBTdGF0dXNDb2RlRXJyb3IoKTsKICAgICBib29sIGNoZWNrQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZp
c2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmUKICAgICBtX2N1cnJlbnRSZXNvdXJj
ZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUp
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIFVOVVNFRF9QQVJBTShl
bmNvZGVkRGF0YUxlbmd0aCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDIwMTc5MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24g
MjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdQogI2VuZGlmCiAgICAg
ICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90LCBsb25n
IGxvbmcpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZExlbmd0aCkgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAv
KmZpbmlzaFRpbWUqLykgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTEwOTUsNyArMTA5NSw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZFIKICAgICBoYW5kbGVS
ZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVh
bWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAv
KiBkYXRhICovLCB1bnNpZ25lZCAvKiBsZW5ndGggKi8sIGludCkKK3ZvaWQgUmVzb3VyY2VIYW5k
bGVTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciogLyogZGF0YSAqLywgc2l6ZV90IC8qIGxlbmd0aCAqLywgbG9uZyBsb25nKQogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9QaW5nSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QaW5nSGFuZGxlLmgJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IGRl
bGV0ZSB0aGlzOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9OworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpIG92ZXJyaWRlIHsgZGVsZXRlIHRo
aXM7IH0KICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSAgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIw
MTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3AKIH0KICNlbmRpZgogCi12b2lkIFJlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9u
IDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KICAgICAgICAgCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHNp
emVfdCwgbG9uZyBsb25nIC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAg
ICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxl
KiwgZG91YmxlIC8qZmluaXNoVGltZSovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CkBAIC0xMDgsNyAr
MTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKLSAg
ICAgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IC8qcmVxdWVz
dGVkTGVuZ3RoKi8sIHNpemVfdCYgLyphY3R1YWxMZW5ndGgqLykgeyByZXR1cm4gMDsgfQorICAg
ICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgLypyZXF1ZXN0
ZWRMZW5ndGgqLywgc2l6ZV90JiAvKmFjdHVhbExlbmd0aCovKSB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmUKICAgICBt
X3Jlc3BvbnNlID0gcmVzcG9uc2U7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBsb25nIGxvbmcgLyplbmNvZGVkRGF0YUxlbmd0aCovKQogewog
ICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnRfaAotI2RlZmluZSBTeW5jaHJvbm91c0xvYWRlckNsaWVudF9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIgpAQCAtNDksNyArNDgsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBz
aXplX3QsIGxvbmcgbG9uZyAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUq
Lykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCkBAIC02Myw1ICs2MiwzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRG9uZSB7IGZh
bHNlIH07CiB9OwogfQotCi0jZW5kaWYgLy8gU3luY2hyb25vdXNMb2FkZXJDbGllbnRfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsMTIgKzE0MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVzcG9uc2Ug
PSByZXNwb25zZTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgdW5zaWduZWQgLyogbGVuZ3RoICovLCBpbnQp
IG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqIC8qIGRhdGEgKi8sIHNpemVfdCAvKiBsZW5ndGggKi8sIGxvbmcgbG9uZykgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgLyogZW5jb2RlZExlbmd0aCAqLykgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
bG9uZyBsb25nIC8qIGVuY29kZWRMZW5ndGggKi8pIG92ZXJyaWRlCiAgICAgewogICAgICAgICAv
LyBUaGlzIHBhdHRlcm4gaXMgc3VnZ2VzdGVkIGJ5IFNoYXJlZEJ1ZmZlci5oLgogICAgICAgICBj
b25zdCBjaGFyKiBzZWdtZW50OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNzkwKQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTYtMDYtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBDb3JyZWN0bHkgcmVwb3J0IGVuY29kZWQgZGF0YSBsZW5ndGggZnJvbSBOU1VS
TFNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODQ2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2s6OmNsaWVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6
ZGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAoLVtXS05ldHdv
cmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkRmluaXNoRG93bmxv
YWRpbmdUb1VSTDpdKToKKwogMjAxNi0wNi0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEZpeCAxMC4xMCBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBj
b3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9TZW5kKSA9IDA7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBjb3VudE9mQnl0ZXNSZWNlaXZlZCk7CiAgICAgdm9pZCBkaWRCZWNv
bWVEb3dubG9hZCgpOwogICAgIAogICAgIE5ldHdvcmtEYXRhVGFza0NsaWVudCogY2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTE2MCw2ICsxNjAsNyBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2ZpcnN0UmVxdWVzdDsKICAgICBib29sIG1f
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOworICAgIGxvbmcgbG9uZyBtX2NvdW50
T2ZCeXRlc1JlY2VpdmVkU29GYXIgeyAwIH07CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0
YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9uIDIw
MTc5MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUwLDExICsyNTAsOSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2VOZXR3CiAgICAgICAgIG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHRoZSBlbmNvZGVkIGRhdGEg
bGVuZ3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGguCi0gICAgYXV0byBzaXplID0gYnVm
ZmVyLT5zaXplKCk7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
ciksIHNpemUpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMjk0LDE0ICsyOTIsMTQg
QEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bgogICAgICAgICBtX2hh
bmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAvKiBkYXRhICov
LCB1bnNpZ25lZCAvKiBsZW5ndGggKi8sIGludCAvKiBlbmNvZGVkRGF0YUxlbmd0aCAqLykKK3Zv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciogLyogZGF0YSAqLywgc2l6ZV90IC8qIGxlbmd0aCAqLywgbG9uZyBsb25nIC8qIGVuY29kZWRE
YXRhTGVuZ3RoICovKQogewogICAgIC8vIFRoZSBOZXR3b3JrUHJvY2VzcyBzaG91bGQgbmV2ZXIg
Z2V0IGEgZGlkUmVjZWl2ZURhdGEgY2FsbGJhY2suCiAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBi
ZSB1c2luZyBkaWRSZWNlaXZlQnVmZmVyLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0g
bV9oYW5kbGUpOwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIp
LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
OCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgTmV0d29ya0xvYWRfaAotI2RlZmluZSBOZXR3b3JrTG9hZF9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgiCkBAIC02OCw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nKSBm
aW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBvdmVycmlkZTsKQEAgLTc5LDggKzc4LDggQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNo
VGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2Fz
QmxvY2tlZChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpAQCAtMTM2LDUgKzEz
NSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IE5ldHdvcmtMb2FkX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpID0gMDsKICAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSA9IDA7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIGF1dG8g
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmUKICAgICByZXR1cm4gU2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5vOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAg
QVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKQEAgLTM0Niw2ICszNDYsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1CiAgICAgfQogI2VuZGlmCiAg
ICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBm
cm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCisgICAgLy8gV2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lv
biwgd2UgZ2V0IHRoZSBjb3JyZWN0IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggZnJvbSBOZXR3
b3JrRGF0YVRhc2suCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVy
LT5zaXplKCk7CiAKICAgICBtX2J5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBw
cml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246
OlBvbGljeUlnbm9yZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpICBvdmVycmlkZSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcpICBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQogICAgIHZvaWQgZGlkQmVj
b21lRG93bmxvYWQoKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKSBvdmVycmlkZSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHJl
dmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGVuZGluZ0Rv
d25sb2FkX2gKLSNkZWZpbmUgUGVuZGluZ0Rvd25sb2FkX2gKKyNwcmFnbWEgb25jZQogCiAjaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKIApAQCAtNTYsNyArNTUsNyBAQCBwcml2YXRlOiAgICAKICAg
ICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgU2hv
dWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBTaG91bGRDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVy
cmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBv
dmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIG92ZXJy
aWRlOwpAQCAtNzIsNSArNzEsMyBAQCBwcml2YXRlOgogfQogCiAjZW5kaWYKLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHJldmlzaW9uIDIwMTc5
MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgYXV0byBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgIHJldHVybiBTaG91bGRDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHJldmlzaW9uIDIwMTc5MCkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogCiAjaW5jbHVkZSAiTmV0
d29ya0NhY2hlLmgiCi0jaW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZENsaWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC00MSw2ICs0MCw4IEBA
IGNsYXNzIE5ldHdvcmtMb2FkOwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAorY2xhc3Mg
RW50cnk7CisKIGNsYXNzIFNwZWN1bGF0aXZlTG9hZCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9h
ZENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC01OCw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMDE3OTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTYgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRh
c2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3Zv
aWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIGxvbmcgbG9uZyBjb3VudE9mQnl0ZXNSZWNlaXZlZCkKIHsKKyAgICBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGggPSBjb3VudE9mQnl0ZXNSZWNlaXZlZDsKKyAgICBpZiAo
Y291bnRPZkJ5dGVzUmVjZWl2ZWQgPiAwKSB7CisgICAgICAgIGVuY29kZWREYXRhTGVuZ3RoID0g
Y291bnRPZkJ5dGVzUmVjZWl2ZWQgLSBtX2NvdW50T2ZCeXRlc1JlY2VpdmVkU29GYXI7CisgICAg
ICAgIG1fY291bnRPZkJ5dGVzUmVjZWl2ZWRTb0ZhciA9IGNvdW50T2ZCeXRlc1JlY2VpdmVkOwor
ICAgIH0KKyAgICAKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2
aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYyLDcgKzI2Miw3IEBAIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIHsKICAgICBhdXRvIHN0b3Jl
ZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6
OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBpZiAoYXV0byogbmV0d29ya0RhdGFU
YXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcihkYXRhVGFzay50YXNrSWRlbnRp
Zmllciwgc3RvcmVkQ3JlZGVudGlhbHMpKQotICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAg
ICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Ojp3cmFwTlNEYXRhKGRhdGEpLCBbZGF0YVRhc2sgY291bnRPZkJ5dGVzUmVjZWl2ZWRdKTsKIH0K
IAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRvd25sb2FkVGFz
azooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopZG93bmxvYWRUYXNrIGRpZEZpbmlzaERvd25s
b2FkaW5nVG9VUkw6KE5TVVJMICopbG9jYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE3
OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZy
b20gTlNVUkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIpOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2UpOgor
CiAyMDE2LTA2LTA3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW01hY11bY21ha2VdIFVucmV2aWV3ZWQgdHJpdmlhbCBidWlsZGZpeCBhZnRlciByMjAx
Njg5LiBKdXN0IGZvciBmdW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAyMDE3
OTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpXZWJSZXNvdXJjZUxvYQogCiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6On5X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogeworICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgbV9u
b25IVFRQUHJvdG9jb2xIb3N0IGRlbGV0ZWQ/CiB9CiAKIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRl
cj4gV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280784</attachid>
            <date>2016-06-08 00:08:39 -0700</date>
            <delta_ts>2016-06-08 12:38:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158463-20160608001005.patch</filename>
            <type>text/plain</type>
            <size>60150</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gTlNV
UkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb246CisKIDIwMTYtMDYtMDcgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE5lZWQgYW4gZXhjZXB0aW9uIGNo
ZWNrIGFmdGVyIGNvbnN0cnVjdEVtcHR5QXJyYXkoKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCShyZXZpc2lv
biAyMDE3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05l
dHdvcmsuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMyw4IEBACiAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIs
ICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50aWZpZXIu
IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0YW1wIiwgIiRyZWYiOiAiVGlt
ZXN0YW1wIiwgImRlc2NyaXB0aW9uIjogIlRpbWVzdGFtcC4iIH0sCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJkYXRhTGVuZ3RoIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJEYXRhIGNodW5rIGxlbmd0aC4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmNv
ZGVkRGF0YUxlbmd0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiQWN0dWFs
IGJ5dGVzIHJlY2VpdmVkIChtaWdodCBiZSBsZXNzIHRoYW4gZGF0YUxlbmd0aCBmb3IgY29tcHJl
c3NlZCBlbmNvZGluZ3MpLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YUxlbmd0
aCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJEYXRhIGNodW5rIGxlbmd0aC4i
IH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmNvZGVkRGF0YUxlbmd0aCIsICJ0eXBl
IjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJBY3R1YWwgYnl0ZXMgcmVjZWl2ZWQgKG1pZ2h0
IGJlIGxlc3MgdGhhbiBkYXRhTGVuZ3RoIGZvciBjb21wcmVzc2VkIGVuY29kaW5ncykuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIwMTc5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDczIEBACisyMDE2LTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEg
bGVuZ3RoIGZyb20gTlNVUkxTZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG5lZWRzIGFuIGluc3BlY3RvciB0ZXN0LgorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGlu
dWVXaXRoUG9saWN5SWdub3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFcnJvclN0YXR1c0NvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAq
IGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6d2FzQ2FuY2VsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpvcHRp
b25zKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
UmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisKIDIwMTYtMDYtMDcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVGTCBidWlsZCBoYXMgYmVlbiBicm9rZW4gc2lu
Y2UgcjIwMTc2MQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnRpbnVlVwogICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKGZy
YW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIHIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+
ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw5ICszMyw3IEBACiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKLSNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZS5oIgogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKQEAgLTcyLDggKzcwLDEwIEBAIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBGb3JtRGF0YTsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBIaXRU
ZXN0UmVzdWx0OwogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NP
TVdyYXBwZXJzOwogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwpAQCAtMTczLDcgKzE3
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9u
c0RlbmllZChGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRo
UG9saWN5RG93bmxvYWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnRp
bnVlV2l0aFBvbGljeUlnbm9yZShGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1l
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNl
bmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVy
KTsKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVl
QWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkSW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3Rh
dGljIHZvaWQgY29udGludWVXaXRoUG9saWN5RG93bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRM
b2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwg
RG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCB3
aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBSZWZQdHI8Rm9ybURhdGE+JiYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKQEAgLTg5OCw3ICs4OTgsNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKGZyYW1lLCBsb2FkZXIsIGlkZW50
aWZpZXIsIHIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNyAr
MzY2LDcgQEAgc3RhdGljIGJvb2wgaXNFcnJvclN0YXR1c0NvZGUoaW50IHN0YXR1cwogICAgIHJl
dHVybiBzdGF0dXNDb2RlID49IDQwMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDggKzI5LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0b3JOZXR3b3JrQWdlbnRfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CkBAIC03OCw3ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0Nh
Y2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgZG91YmxlIGZpbmlz
aFRpbWUpOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciYsIENhY2hlZFJlc291cmNl
Jik7CkBAIC0xMzYsNSArMTM1LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvck5ldHdvcmtBZ2VudF9oKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZQogICAgICAgICBj
YW5jZWwoZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZmlsZURvZXNOb3RFeGlzdEVycm9yKHJlc3Bv
bnNlKSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVu
Z3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5p
c2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXMKICAgICBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRp
ZmllcigpLCByLCBsb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQogICAgICAgICBwYWdlLT5wcm9n
cmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3Ro
KTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aERpZFJlCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwgcmVzb3VyY2VMb2FkZXIpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIC8vIE5v
dGlmeWluZyB0aGUgRnJhbWVMb2FkZXJDbGllbnQgbWF5IGNhdXNlIHRoZSBmcmFtZSB0byBiZSBk
ZXN0cm95ZWQuCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmEKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKCZtX2ZyYW1lLCBsb2FkZXIsIGlk
ZW50aWZpZXIsIGVycm9yKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3Zv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJl
cXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hv
dWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAkocmV2
aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE4ICs1NSwxOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3Vy
Y2VMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBhc3NpZ25J
ZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdp
bGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVyKiA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE3
OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKAogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVS
ZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFyZSBub3Qg
cXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBzdWJjbGFzcwogICAgIC8vIG1pZ2h0IG92ZXJyaWRl
IGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRoYXQgaW52YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAt
NDYwLDcgKzQ2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmUK
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVy
LgogICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CkBAIC00NzEsMTEg
KzQ3MSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWYKIAogICAg
IGFkZERhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRU
eXBlKTsKICAgICAKLSAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3Jl
IHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCi0gICAg
Ly8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMs
IHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgotICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MoKSA9PSBTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8
aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmll
cigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGlt
ZSkKQEAgLTYyNSwxMiArNjIyLDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSgKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC0xNTYsNyAr
MTU2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkg
eyByZXR1cm4gbV9vcHRpb25zOyB9CiAKQEAgLTE4Niw4ICsxODYsOCBAQCBwcml2YXRlOgogICAg
IFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSos
IFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBzaXpl
X3QsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
MDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbgogICAgIGNoZWNrRm9ySFRUUFN0YXR1c0NvZGVFcnJvcigpOwogfQog
Ci12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
bnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxv
YWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IHBycEJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHBycEJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQ
U3RhdHVzQ29kZUVycm9ycygpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
ZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjaGVja0ZvckhUVFBTdGF0dXNDb2RlRXJyb3IoKTsKICAgICBib29sIGNoZWNrQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZp
c2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmUKICAgICBtX2N1cnJlbnRSZXNvdXJj
ZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUp
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIFVOVVNFRF9QQVJBTShl
bmNvZGVkRGF0YUxlbmd0aCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDIwMTc5MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpIHsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDIw
MTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBA
IGNsYXNzIFN0cmVhbWluZ0NsaWVudCB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjaGFyKiBj
cmVhdGVSZWFkQnVmZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUp
OwogICAgICAgICB2b2lkIGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotICAgICAgICB2b2lkIGhhbmRsZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50
KTsKKyAgICAgICAgdm9pZCBoYW5kbGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIHNpemVfdCk7
CiAgICAgICAgIHZvaWQgaGFuZGxlTm90aWZ5RmluaXNoZWQoKTsKIAogICAgICAgICBHc3RFbGVt
ZW50KiBtX3NyYzsKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQgZmluYQogICAgICAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6
ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAg
ICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hh
ciosIGludCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgICAgICB2b2lk
IGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpIG92ZXJyaWRlOwpAQCAt
OTcsOCArOTcsOCBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudCA6IHB1CiAj
ZW5kaWYKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZTsKLSAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IGVuY29kZWRMZW5ndGgpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBsb25n
KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRMZW5ndGgpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUg
LypmaW5pc2hUaW1lKi8pIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgd2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpAQCAtOTE5LDcgKzkxOSw3IEBAIHZv
aWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2UKICAgICBnc3RfYXBwX3NyY19z
ZXRfY2Fwcyhwcml2LT5hcHBzcmMsIDApOwogfQogCi12b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFu
ZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFN0cmVh
bWluZ0NsaWVudDo6aGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7
CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKQEAgLTEwMjMsNyAr
MTAyMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3AKICAgICBo
YW5kbGVSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBoYW5kbGVEYXRhUmVjZWl2ZWQoZGF0YSwgbGVu
Z3RoKTsKIH0KQEAgLTEwOTUsMTIgKzEwOTUsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVh
bWluZ0NsaWVudDo6ZGlkUgogICAgIGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwog
fQogCi12b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIHVuc2lnbmVkIC8qIGxlbmd0
aCAqLywgaW50KQordm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBzaXplX3QgLyog
bGVuZ3RoICovLCBsb25nIGxvbmcpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IC8qIGVuY29kZWRM
ZW5ndGggKi8pCit2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcg
bG9uZyAvKiBlbmNvZGVkTGVuZ3RoICovKQogewogICAgIC8vIFRoaXMgcGF0dGVybiBpcyBzdWdn
ZXN0ZWQgYnkgU2hhcmVkQnVmZmVyLmguCiAgICAgY29uc3QgY2hhciogc2VnbWVudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCShyZXZpc2lv
biAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCkgb3ZlcnJp
ZGUgeyBkZWxldGUgdGhpczsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgZGVsZXRl
IHRoaXM7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91
YmxlKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0K
ICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgIG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwCiB9CiAj
ZW5kaWYKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDggKzczLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgeyB9CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVu
Z3RoKi8pIHsgfQotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBzaXplX3QsIGxvbmcgbG9uZyAvKmVuY29kZWREYXRhTGVu
Z3RoKi8pIHsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgeyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIHsgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNl
bmRpZgogCiAjaWYgVVNFKFNPVVApCi0gICAgICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKHNpemVfdCAvKnJlcXVlc3RlZExlbmd0aCovLCBzaXplX3QmIC8qYWN0dWFsTGVu
Z3RoKi8pIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJl
YWRCdWZmZXIoc2l6ZV90IC8qcmVxdWVzdGVkTGVuZ3RoKi8sIHNpemVfdCYgLyphY3R1YWxMZW5n
dGgqLykgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gZmFs
c2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlCiAgICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOwogfQogCi12b2lk
IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5n
dGgqLykKK3ZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25nIC8q
ZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKICAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50X2gKLSNkZWZpbmUg
U3luY2hyb25vdXNMb2FkZXJDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKQEAgLTQ5LDcg
KzQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJl
c291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgLyplbmNvZGVkRGF0YUxl
bmd0aCovKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5k
bGUqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtNjMsNSArNjIsMyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc0RvbmUgeyBmYWxzZSB9OwogfTsKIH0KLQotI2VuZGlmIC8vIFN5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHJldmlz
aW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCAtICh2
b2lkKV9zZXREZWZlcnNMb2FkaW5nOihCT09MKWRlZmVyczsKIC0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxv
bmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFs
Qnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYp
cmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9u
c2U7CiAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIHNo
b3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KGNvbnN0IGNoYXIqKWRhdGEgbGVuZ3RoOihpbnQpbGVuZ3RoOworLSAodm9pZClyZXNvdXJj
ZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJilyZXNvdXJjZSByZWNlaXZlZERhdGE6KGNvbnN0IGNo
YXIqKWRhdGEgbGVuZ3RoOihzaXplX3QpbGVuZ3RoOwogLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlJilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihSZXNvdXJjZVJlcXVlc3QmKXJlcXVlc3Q7CiAt
ICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3I7CiAt
ICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGYWls
ZWRXaXRoRXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9yOwpAQCAtMzIzLDcgKzMyMyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u
Zykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciog
LyogZGF0YSAqLywgc2l6ZV90IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7CkBAIC0zNDcsNyArMzQ3LDcg
QEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OgogICAgIHJldHVybiBb
bV90YXNrIHJlc291cmNlOnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwog
fQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgW21fdGFzayByZXNvdXJjZTpyZXNvdXJjZSByZWNlaXZlZERh
dGE6ZGF0YSBsZW5ndGg6bGVuZ3RoXTsKIH0KQEAgLTU2NCwxMSArNTY0LDkgQEAgLSAoQk9PTCly
ZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJgogICAgIHJldHVybiByZXNwb25zZS5odHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQog
Ci0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIHJlY2Vp
dmVkRGF0YTooY29uc3QgY2hhciopZGF0YSBsZW5ndGg6KGludClsZW5ndGgKKy0gKHZvaWQpcmVz
b3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihjb25z
dCBjaGFyKilkYXRhIGxlbmd0aDooc2l6ZV90KWxlbmd0aAogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsICZyZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0Rh
dGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEgbGVuZ3RoOmxl
bmd0aF0pOwogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9u
Z1NlbGYgeyBzZWxmIH07CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpb
c3Ryb25nU2VsZiwgbGVuZ3RoLCBuc0RhdGFdIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
CShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDEyICsxNDEs
MTIgQEAgcHVibGljOgogICAgICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRh
dGEgKi8sIHVuc2lnbmVkIC8qIGxlbmd0aCAqLywgaW50KSBvdmVycmlkZQorICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAvKiBkYXRhICovLCBzaXpl
X3QgLyogbGVuZ3RoICovLCBsb25nIGxvbmcpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IC8qIGVuY29kZWRM
ZW5ndGggKi8pIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFu
ZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyAvKiBlbmNvZGVkTGVu
Z3RoICovKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1Z2dl
c3RlZCBieSBTaGFyZWRCdWZmZXIuaC4KICAgICAgICAgY29uc3QgY2hhciogc2VnbWVudDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE2LTA2LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29ycmVjdGx5IHJl
cG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoIGZyb20gTlNVUkxTZXNzaW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjbGllbnQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRS
ZWNlaXZlRGF0YTpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNl
c3Npb246ZG93bmxvYWRUYXNrOmRpZEZpbmlzaERvd25sb2FkaW5nVG9VUkw6XSk6CisKIDIwMTYt
MDYtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggMTAuMTAg
YnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9h
ZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwpAQCAtMTAxLDcg
KzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgY291bnRP
ZkJ5dGVzUmVjZWl2ZWQpOwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKTsKICAgICAKICAg
ICBOZXR3b3JrRGF0YVRhc2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
OyB9CkBAIC0xNjAsNiArMTYwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgbV9maXJzdFJlcXVlc3Q7CiAgICAgYm9vbCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJv
eEV4dGVuc2lvbjsKKyAgICBsb25nIGxvbmcgbV9jb3VudE9mQnl0ZXNSZWNlaXZlZFNvRmFyIHsg
MCB9OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25EYXRh
VGFzaz4gbV90YXNrOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCwx
MSArMjUwLDkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0dwogICAg
ICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKIH0K
IAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVk
IGRhdGEgbGVuZ3RoLgotICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpOwog
fQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKQEAgLTI5NCwxNCArMjkyLDE0IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZUFzeW4KICAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgdW5zaWduZWQgLyogbGVuZ3RoICov
LCBpbnQgLyogZW5jb2RlZERhdGFMZW5ndGggKi8pCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIHNpemVfdCAv
KiBsZW5ndGggKi8sIGxvbmcgbG9uZyAvKiBlbmNvZGVkRGF0YUxlbmd0aCAqLykKIHsKICAgICAv
LyBUaGUgTmV0d29ya1Byb2Nlc3Mgc2hvdWxkIG5ldmVyIGdldCBhIGRpZFJlY2VpdmVEYXRhIGNh
bGxiYWNrLgogICAgIC8vIFdlIHNob3VsZCBhbHdheXMgYmUgdXNpbmcgZGlkUmVjZWl2ZUJ1ZmZl
ci4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE5ldHdvcmtMb2FkX2gKLSNk
ZWZpbmUgTmV0d29ya0xvYWRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZENsaWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgpAQCAtNjgsNyAr
NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVu
Z2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3Jr
U2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlcikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZykgZmluYWw7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAg
dm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWlu
dDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkg
b3ZlcnJpZGU7CkBAIC03OSw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdEFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqKSBvdmVycmlkZTsKQEAgLTEzNiw1ICsxMzUsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBOZXR3b3JrTG9hZF9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJ
KHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAg
ZW51bSBjbGFzcyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB7IE5vLCBZZXMgfTsK
ICAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhkb3VibGUgZmluaXNoVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzMSw3ICszMzEsNyBAQCBhdXRvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlCiAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
OjpObzsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9y
VmFsaWRhdGlvbik7CkBAIC0zNDYsNiArMzQ2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdQogICAgIH0KICNlbmRpZgogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBv
biBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxl
LgorICAgIC8vIFdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24sIHdlIGdldCB0aGUgY29ycmVjdCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIGZyb20gTmV0d29ya0RhdGFUYXNrLgogICAgIHVuc2ln
bmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8g
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgbV9ieXRl
c1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIw
MTc5MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBv
dmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91
YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHJldmlz
aW9uIDIwMTc5MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwogICAgICAg
ICBkZWxldGUgdGhpczsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSAgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nKSAgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
IHsgZGVsZXRlIHRoaXM7IH0KICAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgb3ZlcnJpZGUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
dG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgb3ZlcnJp
ZGUgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBlbmRpbmdEb3dubG9hZF9oCi0jZGVmaW5lIFBlbmRp
bmdEb3dubG9hZF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAK
QEAgLTU2LDcgKzU1LDcgQEAgcHJpdmF0ZTogICAgCiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGUgeyByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5v
OyB9OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBvdmVycmlkZTsKQEAgLTcyLDUgKzcxLDMgQEAg
cHJpdmF0ZToKIH0KIAogI2VuZGlmCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIGF1dG8gU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UKICAgICByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6
OlllczsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VS
VCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCShyZXZpc2lvbiAyMDE3OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFU
SVZFX1JFVkFMSURBVElPTikKIAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgotI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgpAQCAtNDEsNiArNDAsOCBAQCBjbGFzcyBOZXR3b3JrTG9hZDsKIAog
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKK2NsYXNzIEVudHJ5OworCiBjbGFzcyBTcGVjdWxh
dGl2ZUxvYWQgZmluYWwgOiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNTgsNyArNTksNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICBTaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE3NSwxMCArMTc1LDE2IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBsb25nIGxvbmcg
Y291bnRPZkJ5dGVzUmVjZWl2ZWQpCiB7CisgICAgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
ID0gY291bnRPZkJ5dGVzUmVjZWl2ZWQ7CisgICAgaWYgKGNvdW50T2ZCeXRlc1JlY2VpdmVkID4g
MCkgeworICAgICAgICBlbmNvZGVkRGF0YUxlbmd0aCA9IGNvdW50T2ZCeXRlc1JlY2VpdmVkIC0g
bV9jb3VudE9mQnl0ZXNSZWNlaXZlZFNvRmFyOworICAgICAgICBtX2NvdW50T2ZCeXRlc1JlY2Vp
dmVkU29GYXIgPSBjb3VudE9mQnl0ZXNSZWNlaXZlZDsKKyAgICB9CisgICAgCiAgICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSk7
CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRCZWNvbWVEb3dubG9h
ZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIwMTc5MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJM
U2Vzc2lvbiAqKXNlc3NpCiB7CiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFscyA9IF93aXRoQ3Jl
ZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxsb3dTdG9yZWRDcmVkZW50
aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHM7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9uLT5kYXRhVGFz
a0ZvcklkZW50aWZpZXIoZGF0YVRhc2sudGFza0lkZW50aWZpZXIsIHN0b3JlZENyZWRlbnRpYWxz
KSkKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOworICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSwgW2Rh
dGFUYXNrIGNvdW50T2ZCeXRlc1JlY2VpdmVkXSk7CiB9CiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2Fk
VGFzayAqKWRvd25sb2FkVGFzayBkaWRGaW5pc2hEb3dubG9hZGluZ1RvVVJMOihOU1VSTCAqKWxv
Y2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wNi0wNyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIENvcnJl
Y3RseSByZXBvcnQgZW5jb2RlZCBkYXRhIGxlbmd0aCBmcm9tIE5TVVJMU2Vzc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDYzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjp+V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKToKKyAgICAgICAgKFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291cmNlKToKKwogMjAxNi0wNi0wNyAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtNYWNdW2NtYWtlXSBVbnJl
dmlld2VkIHRyaXZpYWwgYnVpbGRmaXggYWZ0ZXIgcjIwMTY4OS4gSnVzdCBmb3IgZnVuLgpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjAxNzkwKQorKysgU291cmNlL1dlYktpdC9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw2ICs5MCw3IEBAIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6V2ViUmVzb3VyY2VM
b2EKIAogV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjp+V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
KCkKIHsKKyAgICAvLyBGSVhNRTogV2h5IGlzbid0IG1fbm9uSFRUUFByb3RvY29sSG9zdCBkZWxl
dGVkPwogfQogCiBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucykK
</data>
<flag name="review"
          id="304676"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314544</attachid>
            <date>2017-07-03 18:55:02 -0700</date>
            <delta_ts>2017-07-03 18:55:02 -0700</delta_ts>
            <desc>[PATCH] Work in Progress</desc>
            <filename>transfer-size-work-in-progress.patch</filename>
            <type>text/plain</type>
            <size>54702</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2UtdHJhbnNmZXItc2l6ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXRyYW5zZmVyLXNpemUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNjVmZjdkYjY2OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2UtdHJhbnNmZXItc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorVGVzdHMg
dGhhdCBhIHJlc291cmNlIGhhcyB0cmFuc2ZlciBzaXplIGRhdGEgd2hpbGUgbG9hZGluZy4KKwor
Cis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFJlc291cmNlLlRyYW5zZmVyU2l6ZQorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IFJlc291cmNlLlRyYW5zZmVyU2l6ZS5VbmNvbXByZXNzZWQKK1BBU1M6IFJl
Y2VpdmVkIFJlc291cmNlV2FzQWRkZWQKK1BBU1M6IGVzdGltYXRlZE5ldHdvcmtFbmNvZGVkU2l6
ZSBzaG91bGQgYmUgTmFOLgorUEFTUzogUmVjZWl2ZWQgVHJhbnNmZXJTaXplRGlkQ2hhbmdlCitG
QUlMOiBlc3RpbWF0ZWROZXR3b3JrRW5jb2RlZFNpemUgc2hvdWxkIGJlIG5vbi16ZXJvIGFuZCBp
bmNyZWFzaW5nLgorICAgIEV4cGVjdGVkOiBncmVhdGVyIHRoYW4gMAorICAgIEFjdHVhbDogMAor
UEFTUzogUmVjZWl2ZWQgRGlkRmluaXNoTG9hZGluZworMTk0MworCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogUmVzb3VyY2UuVHJhbnNmZXJTaXplLkNvbXByZXNzZWQKK1BBU1M6IFJlY2VpdmVkIFJl
c291cmNlV2FzQWRkZWQKK1BBU1M6IGVzdGltYXRlZE5ldHdvcmtFbmNvZGVkU2l6ZSBzaG91bGQg
YmUgTmFOLgorUEFTUzogUmVjZWl2ZWQgVHJhbnNmZXJTaXplRGlkQ2hhbmdlCitGQUlMOiBlc3Rp
bWF0ZWROZXR3b3JrRW5jb2RlZFNpemUgc2hvdWxkIGJlIG5vbi16ZXJvIGFuZCBpbmNyZWFzaW5n
LgorICAgIEV4cGVjdGVkOiBncmVhdGVyIHRoYW4gMAorICAgIEFjdHVhbDogMAorUEFTUzogUmVj
ZWl2ZWQgRGlkRmluaXNoTG9hZGluZworMTExOQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXRyYW5zZmVyLXNpemUuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtdHJhbnNm
ZXItc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNTMw
NGRiMmJiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2UtdHJhbnNmZXItc2l6ZS5odG1sCkBAIC0wLDAgKzEsNzYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVNsb3dSZXF1ZXN0KCkgeworICAgIGZldGNoKCJyZXNv
dXJjZXMvc2xvdy1sb2FkLnBocCIpOworfQorCitmdW5jdGlvbiBjcmVhdGVTbG93Q29tcHJlc3Nl
ZFJlcXVlc3QoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9zbG93LWxvYWQtY29tcHJlc3NlZC5w
aHAiKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5kZWJ1Zygp
OworCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJSZXNv
dXJjZS5UcmFuc2ZlclNpemUiKTsKKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBk
ZXNjcmlwdGlvbiwgZXhwcmVzc2lvbn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ZXhwcmVzc2lvbik7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2U7CisgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmF3YWl0RXZlbnQoV2ViSW5zcGVjdG9yLkZyYW1lLkV2
ZW50LlJlc291cmNlV2FzQWRkZWQpLnRoZW4oKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzb3VyY2VXYXNBZGRlZChldmVudCk7CisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURp
ZENoYW5nZSwgdHJhbnNmZXJTaXplRGlkQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
b3VyY2UuYXdhaXRFdmVudChXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZp
bmlzaCkudGhlbihkaWRGaW5pc2hMb2FkaW5nKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc291cmNlV2FzQWRkZWQoZXZlbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJSZWNlaXZlZCBSZXNvdXJjZVdhc0FkZGVk
Iik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChpc05hTihy
ZXNvdXJjZS5lc3RpbWF0ZWROZXR3b3JrRW5jb2RlZFNpemUpLCAiZXN0aW1hdGVkTmV0d29ya0Vu
Y29kZWRTaXplIHNob3VsZCBiZSBOYU4uIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgbGV0IGxhc3RTaXplID0gMDsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0cmFu
c2ZlclNpemVEaWRDaGFuZ2UoZXZlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5wYXNzKCJSZWNlaXZlZCBUcmFuc2ZlclNpemVEaWRDaGFuZ2UiKTsKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cocmVzb3VyY2UuZXN0aW1hdGVkTmV0d29ya0VuY29k
ZWRTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gSW5zcGVjdG9yVGVzdC5leHBlY3RHcmVh
dGVyVGhhbihyZXNvdXJjZS5lc3RpbWF0ZWROZXR3b3JrRW5jb2RlZFNpemUsIGxhc3RTaXplLCAi
ZXN0aW1hdGVkTmV0d29ya0VuY29kZWRTaXplIHNob3VsZCBiZSBub24temVybyBhbmQgaW5jcmVh
c2luZy4iKTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdFNpemUgPSByZXNvdXJjZS5lc3RpbWF0
ZWROZXR3b3JrRW5jb2RlZFNpemU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gZGlkRmluaXNoTG9hZGluZyhldmVudCkgeworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnBhc3MoIlJlY2VpdmVkIERpZEZpbmlzaExvYWRpbmciKTsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cocmVzb3VyY2UuZXN0aW1hdGVkTmV0d29y
a0VuY29kZWRTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiUmVzb3VyY2UuVHJhbnNmZXJTaXplLlVuY29tcHJlc3Nl
ZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiRW5zdXJlIGEgcmVzb3VyY2UncyB0cmFuc2ZlciBz
aXplIGluY3JlbWVudHMgYXMgZXhwZWN0ZWQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0
ZVNsb3dSZXF1ZXN0KClgLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiUmVzb3VyY2UuVHJhbnNmZXJTaXplLkNvbXByZXNzZWQiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIkVuc3VyZSBhIHJlc291cmNlJ3MgdHJhbnNmZXIgc2l6ZSBpbmNyZW1lbnRzIGFzIGV4
cGVjdGVkLiIsCisgICAgICAgIGV4cHJlc3Npb246IGBjcmVhdGVTbG93Q29tcHJlc3NlZFJlcXVl
c3QoKWAsCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMg
dGhhdCBhIHJlc291cmNlIGhhcyB0cmFuc2ZlciBzaXplIGRhdGEgd2hpbGUgbG9hZGluZy48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zbG93LWxvYWQtY29tcHJlc3NlZC5waHAgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zbG93LWxvYWQt
Y29tcHJlc3NlZC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUy
Yjg4NjJiMmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc2xvdy1sb2FkLWNvbXByZXNzZWQucGhwCkBAIC0wLDAg
KzEsMjMgQEAKKzw/cGhwCitmdW5jdGlvbiBmbHVzaEFuZFNsZWVwKCkgeworICAgIG9iX2ZsdXNo
KCk7CisgICAgZmx1c2goKTsKKyAgICB1c2xlZXAoNTAwICogMTAwMCk7IC8vIDAuNXMKK30KKwor
JHRleHQgPSBmaWxlX2dldF9jb250ZW50cygiLi9sb3JlbS50eHQiKTsKKyRnemlwVGV4dCA9IGd6
ZW5jb2RlKCR0ZXh0LCA2KTsKKworaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW4iKTsK
K2hlYWRlcigiQ29udGVudC1FbmNvZGluZzogZ3ppcCIpOworCiskc2VudCA9IDA7CiskY2h1bmtT
aXplID0gNTEyOworJGxlbiA9IHN0cmxlbigkZ3ppcFRleHQpOworCit3aGlsZSAoJHNlbnQgPCAk
bGVuKSB7CisgICAgZWNobyBzdWJzdHIoJGd6aXBUZXh0LCAkc2VudCwgJGNodW5rU2l6ZSk7Cisg
ICAgJHNlbnQgKz0gJGNodW5rU2l6ZTsKKyAgICBmbHVzaEFuZFNsZWVwKCk7Cit9Cis/PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvc2xvdy1sb2FkLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3Nsb3ctbG9hZC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjBkN2VkZDE3NTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc2xvdy1sb2FkLnBocApAQCAtMCww
ICsxLDE4IEBACis8P3BocAorZnVuY3Rpb24gZmx1c2hBbmRTbGVlcCgpIHsKKyAgICBvYl9mbHVz
aCgpOworICAgIGZsdXNoKCk7CisgICAgdXNsZWVwKDUwMCAqIDEwMDApOyAvLyAwLjVzCit9CisK
K2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIik7CisKK2VjaG8gIkxvcmVtIGlwc3Vt
IGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIFZpdmFtdXMgYSBs
dWN0dXMganVzdG8sIGEgcGxhY2VyYXQgZXN0LiBWZXN0aWJ1bHVtIGEgdmVuZW5hdGlzIGxlY3R1
cy4gUGhhc2VsbHVzIHZlaGljdWxhIG5lcXVlIGlkIGVzdCBzZW1wZXIsIGFjIGNvbmd1ZSBmZWxp
cyBjb21tb2RvLiBTdXNwZW5kaXNzZSBwb3RlbnRpLiBOYW0gZWdldCBwbGFjZXJhdCBlcmF0LiBO
dWxsYSB1bHRyaWNpZXMgY29uc2VxdWF0IGVyb3MgYWMgdmVzdGlidWx1bS4gQWxpcXVhbSBpbXBl
cmRpZXQgbWFzc2EgYXVndWUsIG5lYyBmYXVjaWJ1cyBuaXNpIHNlbXBlciBhYy4gVXQgbmliaCBu
aXNsLCBpYWN1bGlzIGlkIG1hdHRpcyBzaXQgYW1ldCwgdWx0cmljaWVzIHNlZCBlcm9zLiBWaXZh
bXVzIHZlbCBtaSBhbnRlLiBQcmFlc2VudCBjb21tb2RvIGZpbmlidXMganVzdG8sIHNlZCBoZW5k
cmVyaXQgdXJuYSBjb252YWxsaXMgZWdldC4gTWFlY2VuYXMgY29uZGltZW50dW0gbWkgZWxpdCwg
ZXUgZ3JhdmlkYSBlcm9zIGNvbnNlcXVhdCBhdC4gTnVsbGEgcnV0cnVtIGxvcmVtIG5lcXVlLCB1
dCBmaW5pYnVzIG1ldHVzIHBvc3VlcmUgbm9uLiBRdWlzcXVlIG51bGxhIGp1c3RvLCBzY2VsZXJp
c3F1ZSBzZWQgb3JuYXJlIGV1LCBhbGlxdWV0IGlkIGVzdC4gVXQgYXQgb3JuYXJlIGR1aS4iOwor
ZWNobyAiXG4iOworZmx1c2hBbmRTbGVlcCgpOworZWNobyAiSW50ZWdlciBjb21tb2RvIG5pc2wg
YWMgbmlzbCBzdXNjaXBpdCBmZXVnaWF0LiBNYXVyaXMgcGhhcmV0cmEsIHRlbGx1cyBpZCBhbGlx
dWFtIGNvbnNlY3RldHVyLCBxdWFtIG5pc2kgbG9ib3J0aXMgbWksIGlkIHNhZ2l0dGlzIHNlbSBy
aXN1cyBhdCBuaXNpLiBEb25lYyB2ZW5lbmF0aXMgbWF4aW11cyBmaW5pYnVzLiBOdWxsYW0gbGFv
cmVldCBhcmN1IHZpdGFlIGxhY3VzIGJpYmVuZHVtIGFjY3Vtc2FuLiBGdXNjZSBpbiBsZW8gZXQg
bGFjdXMgb3JuYXJlIHZlbmVuYXRpcy4gQWxpcXVhbSBvZGlvIG51bGxhLCBjb252YWxsaXMgbm9u
IG9ybmFyZSBxdWlzLCBmYWNpbGlzaXMgZWdldCBleC4gSW4gc2VkIG5pYmggZGFwaWJ1cywgc2Nl
bGVyaXNxdWUgZWxpdCBlZ2V0LCBlZ2VzdGFzIGp1c3RvLiBOdWxsYSBldCBkb2xvciBkYXBpYnVz
LCBzY2VsZXJpc3F1ZSByaXN1cyBxdWlzLCBjb25zZWN0ZXR1ciBuZXF1ZS4gQWxpcXVhbSBxdWlz
IHF1YW0gbWkuIE51bGxhIGxhY3VzIGp1c3RvLCBsYWNpbmlhIGV1IHRvcnRvciBlZ2V0LCBjb252
YWxsaXMgZmF1Y2lidXMgcmlzdXMuIFZlc3RpYnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1
Y2lidXMgb3JjaSBsdWN0dXMgZXQgdWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyI7Citl
Y2hvICJcbiI7CitmbHVzaEFuZFNsZWVwKCk7CitlY2hvICJDdXJhYml0dXIgcHJldGl1bSwgZG9s
b3IgdmVsIGZldWdpYXQgc29kYWxlcywgcXVhbSBpcHN1bSBsb2JvcnRpcyBsZW8sIHZlbCBkYXBp
YnVzIGZlbGlzIGRpYW0gYSB0ZWxsdXMuIEludGVnZXIgYWNjdW1zYW4gbWF4aW11cyBsb3JlbS4g
VmVzdGlidWx1bSBmaW5pYnVzIHBvc3VlcmUgb3JjaSBhIGNvbnZhbGxpcy4gVXQgZXUgaGVuZHJl
cml0IG5pYmguIFN1c3BlbmRpc3NlIHZhcml1cyB1dCBleCBhYyBhbGlxdWFtLiBNb3JiaSBuZWMg
dGVsbHVzIHNlZCBhcmN1IHZpdmVycmEgaW50ZXJkdW0gdml0YWUgcXVpcyBsYWN1cy4gSW4gc29k
YWxlcyBuaXNsIGF0IHRvcnRvciBibGFuZGl0LCBlZ2V0IGdyYXZpZGEgbGliZXJvIGxhY2luaWEu
IENyYXMgYXQgbGVvIGxpYmVyby4gQWVuZWFuIHRlbXBvciBoZW5kcmVyaXQgY29tbW9kby4gQ3Jh
cyBpbiBsYWNpbmlhIGVyYXQuIFZlc3RpYnVsdW0gdml0YWUgaW50ZXJkdW0gcHVydXMsIHV0IGx1
Y3R1cyB0ZWxsdXMuIE51bGxhIG1hdXJpcyBtYXNzYSwgYXVjdG9yIHNlZCBlbmltIGVmZmljaXR1
ciwgdmFyaXVzIGxvYm9ydGlzIG1hdXJpcy4gRnVzY2Ugc2l0IGFtZXQgbWFzc2EgYSBhbnRlIGZh
Y2lsaXNpcyBzYWdpdHRpcy4iOworCis/PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRleCAyYTRkOGMzZDA1ZC4uNTBm
NDI2NTMyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvTmV0d29yay5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvTmV0d29yay5qc29uCkBAIC0yNDEsOCArMjQxLDggQEAKICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWRlbnRpZmllci4iIH0s
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0aW1lc3RhbXAiLCAiJHJlZiI6ICJUaW1lc3Rh
bXAiLCAiZGVzY3JpcHRpb24iOiAiVGltZXN0YW1wLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImRhdGFMZW5ndGgiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkRh
dGEgY2h1bmsgbGVuZ3RoLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuY29kZWRE
YXRhTGVuZ3RoIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJBY3R1YWwgYnl0
ZXMgcmVjZWl2ZWQgKG1pZ2h0IGJlIGxlc3MgdGhhbiBkYXRhTGVuZ3RoIGZvciBjb21wcmVzc2Vk
IGVuY29kaW5ncykuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhTGVuZ3RoIiwg
InR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIkRhdGEgY2h1bmsgbGVuZ3RoLiIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuY29kZWREYXRhTGVuZ3RoIiwgInR5cGUiOiAi
bnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIkFjdHVhbCBieXRlcyByZWNlaXZlZCAobWlnaHQgYmUg
bGVzcyB0aGFuIGRhdGFMZW5ndGggZm9yIGNvbXByZXNzZWQgZW5jb2RpbmdzKS4iIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA3MjM2NDQyODA3
My4uYTdlYTYxOTFiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2VJ
bXBsKEluc3RydW1lbnQKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlVGhyZWFkYWJs
ZUxvYWRlclJlc3BvbnNlKGlkZW50aWZpZXIsIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcik7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBkYXRh
LCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNjdhZTM1ZjcyZGMu
LjI0MDZiNDU1NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0zNCwxMCArMzQsOCBAQAogI2luY2x1ZGUgIkNTU1Nl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNjksNyArNjcs
NyBAQCBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci1jbGFzcyBIVFRQSGVhZGVyTWFwOworY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwpAQCAtODMsNyArODEs
NiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTaGFkb3dSb290OwogY2xhc3MgVVJMOwotY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTsKIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKIGNsYXNzIFdvcmtlckluc3BlY3RvclByb3h5Owog
CkBAIC0xNjEsNyArMTU4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShQYWdlJiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJj
ZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVU
aHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFt
ZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VM
b2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQoRnJhbWUm
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwpAQCAtMzM5LDcgKzMzNiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRh
YmxlTG9hZGVyUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5n
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCBkaWRG
aW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1
bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVyKTsKQEAgLTg2OSw3ICs4NjYsNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVz
cG9uc2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNl
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLCBpZGVu
dGlmaWVyKTsKIH0KICAgICAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1l
KiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IDA3N2I2MzM5ODdkLi44OWRiMzFiMzcwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQxOSw3
ICs0MTksNyBAQCBzdGF0aWMgYm9vbCBpc0Vycm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkK
ICAgICByZXR1cm4gc3RhdHVzQ29kZSA+PSA0MDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2hpZGRlblJlcXVlc3RJZGVudGlmaWVycy5jb250
YWlucyhpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDliYjgxOGY5NmVlLi40NTkz
YzJjZTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNhbGN1
bGF0ZVN0eWxlKCk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRM
b2FkZXImLCBDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXggN2Y4Mzc3ZDI5YjguLjYxOTZjYjY2NzI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigp
LCByLCBsb2FkZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQogICAgICAgICBwYWdlLT5wcm9ncmVzcygp
LmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKQEAg
LTE0NCw3ICsxNDQsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bgogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFtZSwgaWRlbnRp
ZmllciwgbG9hZGVyLCByLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlz
cGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRl
ckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVy
LCB1bnNpZ24KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKCZt
X2ZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIGVycm9yKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxl
ZCB0aGUgbG9hZC4gV2Ugc2hvdWxkCiAgICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGlu
ZyBpbiB0aGlzIGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5oCmluZGV4IGUwZTZhNDg2YTQ2Li5mZGMwMzkyZGRkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKQEAgLTUyLDE4ICs1MiwxOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBjaGFyKiwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QgZGF0
YUxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCiBwcml2YXRlOgogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzc0NDZlMWNlZTkuLjc3NDlmNTAxMzJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ4NCwxMSArNDg0
LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFIKIAogICAgIGFkZERhdGFPckJ1ZmZlcihkYXRh
LCBsZW5ndGgsIGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKIAotICAgIC8vIEZJWE1F
OiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2Rl
IHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KLSAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3Mg
Y29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJh
Y3RpY2UuCi0gICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUu
CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzICYm
IG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURh
dGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwor
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKQEAgLTYzOCwxMiArNjM1LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiByZXNwCiAgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVEYXRhKGRh
dGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRp
ZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRCeXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDZkZGEzNGE5NmFjLi4xNjZlNDkyYTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmgKQEAgLTE4OCw4ICsxODgsOCBAQCBwcml2YXRlOgogICAgIFJlc291cmNlUmVxdWVz
dCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90LCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSop
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBlYTVjZGRiMTI4NS4uNTBkZDY0MTdiMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNv
dXJjZVIKICAgICBtX2N1cnJlbnRSZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkRGF0YUxlbmd0aCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aAppbmRleCA1MzczODQ1MjQ4Yi4uMjVjNWM1NjUyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKQEAgLTExMCw3
ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUmVzb3VyY2VIYW5kbGVDbGllbnQKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2Um
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
LCBzaXplX3QgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRl
eCA3YjI5OTU0YjZmNC4uNGJiZTM4N2EzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0xMDksOCArMTA5LDggQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqLCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZExlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCBzaXplX3QsIGxvbmcgbG9uZykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWRMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3Vy
Y2VIYW5kbGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
aW5nSGFuZGxlLmgKaW5kZXggY2JhZmMwOTM1NjkuLjA1MzU0MTc5NDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUuaApAQCAtNzAsNyArNzAsNyBAQCBw
cml2YXRlOgogICAgICAgICBkZWxldGUgdGhpczsKICAgICB9CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsIHsgZGVs
ZXRlIHRoaXM7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgZGVsZXRlIHRoaXM7IH07CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgZGVsZXRlIHRoaXM7IH0KICAgICB2b2lkIGRp
ZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWwgeyBkZWxl
dGUgdGhpczsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VI
YW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCmluZGV4IDk0ODdkOTY3ZTQ5Li4yNjNmNDUyNjY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENh
Y2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2gKIH0KICNlbmRp
ZgogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAppbmRleCAyNjE4OTM5OTk2MC4uZDMxNjI4YmI3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTY4
LDggKzY4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgeyB9CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVu
c2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHNpemVfdCwgbG9uZyBs
b25nIC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CkBAIC05
OCw3ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCi0gICAgdmlydHVh
bCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IC8qcmVxdWVzdGVkTGVuZ3RoKi8s
IHNpemVfdCYgLyphY3R1YWxMZW5ndGgqLykgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgY2hh
ciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKnJlcXVlc3RlZExlbmd0aCovLCBzaXpl
X3QmIC8qYWN0dWFsTGVuZ3RoKi8pIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKaW5kZXggOThjMGI5NTNjNGMu
LjkzNDE3MmY1NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlc3BvbgogICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNl
KTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVu
Y29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGxvbmcgbG9uZyAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiB7CiAgICAgbV9kYXRhLmFwcGVuZChk
YXRhLCBsZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IGNiOWIzMDkzNWQyLi4xZTQ5
NWNhODAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5j
aHJvbm91c0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNl
JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwg
c2l6ZV90LCBsb25nIGxvbmcgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCBmM2M2YmM5MDQyNy4uMmI3
MDUyMWI3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmgKQEAgLTEzNyw2ICsxMzcsMTAgQEAgdHlwZWRlZiB2b2lkICheQ0ZDYWNoZWRVUkxSZXNw
b25zZUNhbGxCYWNrQmxvY2spKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogQHByb3BlcnR5IChh
c3NpZ24sIHJlYWRvbmx5KSBpbnQ2NF90IF9yZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkOwogQHBy
b3BlcnR5IChhc3NpZ24sIHJlYWRvbmx5KSBpbnQ2NF90IF9yZXNwb25zZUJvZHlCeXRlc0RlY29k
ZWQ7CiBAZW5kCisKK0BpbnRlcmZhY2UgTlNVUkxTZXNzaW9uVGFzayAoKQorQHByb3BlcnR5IChy
ZWFkd3JpdGUsIGFzc2lnbiwgYXRvbWljKSBpbnQ2NF90IF9jb3VudE9mQnl0ZXNSZWNlaXZlZEVu
Y29kZWQ7CitAZW5kCiAjZW5kaWYKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1BsYXRmb3JtLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9QbGF0Zm9ybS5qcwpp
bmRleCA2NTc2NGVjN2QwMi4uNmYzMGY0OTBiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvUGxhdGZvcm0uanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9QbGF0Zm9ybS5qcwpAQCAtNDQsNiArNDQsOSBA
QCBXZWJJbnNwZWN0b3IuUGxhdGZvcm0gPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5QbGF0Zm9y
bS52ZXJzaW9uLmJhc2UgPSAxMDsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBsYXRmb3JtLnZlcnNp
b24ucmVsZWFzZSA9IHBhcnNlSW50KG9zVmVyc2lvbk1hdGNoWzJdKTsKICAgICAgICAgc3dpdGNo
IChvc1ZlcnNpb25NYXRjaFsyXSkgeworICAgICAgICBjYXNlICIxMyI6CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuUGxhdGZvcm0udmVyc2lvbi5uYW1lID0gImhpZ2gtc2llcnJhIjsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICIxMiI6CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuUGxhdGZvcm0udmVyc2lvbi5uYW1lID0gInNpZXJyYSI7CiAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9S
ZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9S
ZXNvdXJjZS5qcwppbmRleCAwYmM2NDNjMTEzMS4uODNkY2MyYzI1MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMK
QEAgLTUwOCwyMSArNTA4LDI4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGNsYXNzIFJlc291
cmNlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUKICAgICAgICAgaWYgKCFpc05hTihl
eGFjdCkpCiAgICAgICAgICAgICByZXR1cm4gZXhhY3Q7CiAKLSAgICAgICAgaWYgKHRoaXMuX2Nh
Y2hlZCkKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnVuYnVmZmVyZWRMb2coImVzdGlt
YXRlZE5ldHdvcmtFbmNvZGVkU2l6ZSIpOworCisgICAgICAgIGlmICh0aGlzLl9jYWNoZWQpIHsK
KyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC51bmJ1ZmZlcmVkTG9nKCJlc3RpbWF0
ZWROZXR3b3JrRW5jb2RlZFNpemUgLSBiYWlsIGNhY2hlZCIpOwogICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE1ODQ2Mz4gTmV0d29yazogQ29ycmVjdGx5IHJlcG9ydCBlbmNvZGVkIGRhdGEgbGVuZ3RoICh0
cmFuc2ZlciBzaXplKSBmcm9tIENGTmV0d29yayB0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKLSAg
ICAgICAgLy8gbWFjT1MgcHJvdmlkZXMgdGhlIGRlY29kZWQgdHJhbnNmZXIgc2l6ZSBpbnN0ZWFk
IG9mIHRoZSBlbmNvZGVkIHNpemUKLSAgICAgICAgLy8gZm9yIGVzdGltYXRlZFRyYW5zZmVyU2l6
ZS4gU28gcHJlZmVyIHRoZSAiQ29udGVudC1MZW5ndGgiIHByb3BlcnR5CisgICAgICAgIC8vIENP
TVBBVElCSUxJVFkobWFjT1MgMTAuMTIpOiBCZWZvcmUgbWFjT1MgMTAuMTMgdGhlIGJhY2tlbmQg
cHJvdmlkZWQgdGhlIGRlY29kZWQgdHJhbnNmZXIgc2l6ZQorICAgICAgICAvLyBpbnN0ZWFkIG9m
IHRoZSBlbmNvZGVkIHNpemUgZm9yIGVzdGltYXRlZFRyYW5zZmVyU2l6ZS4gU28gcHJlZmVyIHRo
ZSAiQ29udGVudC1MZW5ndGgiIHByb3BlcnR5CiAgICAgICAgIC8vIG9uIG1hYyBpZiBpdCBpcyBh
dmFpbGFibGUuCi0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0ubmFtZSA9PT0gIm1h
YyIpIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5uYW1lID09PSAibWFjIiAm
JiBXZWJJbnNwZWN0b3IuUGxhdGZvcm0udmVyc2lvbi5yZWxlYXNlIDw9IDEyKSB7CiAgICAgICAg
ICAgICBsZXQgY29udGVudExlbmd0aCA9IE51bWJlcih0aGlzLl9yZXNwb25zZUhlYWRlcnMudmFs
dWVGb3JDYXNlSW5zZW5zaXRpdmVLZXkoIkNvbnRlbnQtTGVuZ3RoIikpOwogICAgICAgICAgICAg
aWYgKCFpc05hTihjb250ZW50TGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVu
dExlbmd0aDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghaXNOYU4odGhpcy5fZXN0aW1hdGVk
VHJhbnNmZXJTaXplKSkKKyAgICAgICAgaWYgKCFpc05hTih0aGlzLl9lc3RpbWF0ZWRUcmFuc2Zl
clNpemUpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QudW5idWZmZXJlZExv
ZygiZXN0aW1hdGVkTmV0d29ya0VuY29kZWRTaXplIC0gQ09SUkVDVCIpOwogICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2VzdGltYXRlZFRyYW5zZmVyU2l6ZTsKKyAgICAgICAgfQorCisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC51bmJ1ZmZlcmVkTG9nKCJlc3RpbWF0ZWROZXR3b3JrRW5j
b2RlZFNpemUgLSBDb250ZW50TGVuZ3RoIik7CiAKICAgICAgICAgLy8gSWYgd2UgZGlkIG5vdCBy
ZWNlaXZlIGFjdHVhbCB0cmFuc2ZlciBzaXplIGZyb20gbmV0d29yawogICAgICAgICAvLyBzdGFj
aywgd2UgcHJlZmVyIHVzaW5nIENvbnRlbnQtTGVuZ3RoIG92ZXIgcmVzb3VyY2VTaXplIGFzCkBA
IC03NjEsNiArNzY4LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2Ug
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogCiAgICAgaW5jcmVhc2VUcmFuc2ZlclNp
emUoZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgeworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QudW5idWZmZXJlZExvZygiaW5jcmVhc2VUcmFuc2ZlclNpemUgLSAiICsgdGhpcy51cmwgKyAi
OiAiLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVuY29kZWRE
YXRhTGVuZ3RoID49IDApOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcmVjZWl2ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MsICJJZiB3ZSByZWNlaXZlZCBtZXRyaWNzIHdlIGRvbid0IG5lZWQg
dG8gY2hhbmdlIHRoZSBlc3RpbWF0ZWQgdHJhbnNmZXIgc2l6ZS4iKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9h
ZENsaWVudC5oCmluZGV4IDRhNDJjYzJjYTc3Li4xYTFkZWYwYjU0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxv
YWRDbGllbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFJl
c291cmNlSGFuZGxlQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9v
bCB1c2VzQXN5bmNDYWxsYmFja3MoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmgKaW5kZXggMzhmYzJlMTYzZWYuLmQ4M2RmZDZjNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
CkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBQZW5kaW5nRG93bmxvYWRfaAotI2RlZmluZSBQZW5kaW5nRG93bmxvYWRf
aAorI3ByYWdtYSBvbmNlCiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCkBAIC02Myw3ICs2
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlIHsgcmV0dXJu
IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBA
IC03OCw1ICs3NywzIEBAIHByaXZhdGU6CiB9CiAKICNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZWRhMzM1
ZTVmMzQuLjA3MzhmM2Q4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vz
c2lvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBjb3VudE9mQnl0ZXNSZWNlaXZl
ZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDA5NjEyNzMyYTVlLi5mZjdjOWRm
Mjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmNvbnN1bWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJU
KG1fY2xpZW50KTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlc1JlYWQpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlc1JlYWQpLCBieXRl
c1JlYWQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggNTE3M2U3OWMxZmYuLmM0NWE2NTRkNWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC00MDMs
NyArNDAzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2UKICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lVc2UpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKCFtX3Rocm90dGxlKTsKIApAQCAtNDEyLDkgKzQxMiw3IEBAIHZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ICAgICAgICBtX3JlY29yZGVyLT5yZWNvcmREYXRhUmVjZWl2ZWQoYnVmZmVyLmdldCgpKTsKICNl
bmRpZgogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHRoZSBlbmNvZGVkIGRhdGEgbGVu
Z3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGguCi0gICAgYXV0byBzaXplID0gYnVmZmVy
LT5zaXplKCk7Ci0gICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlciksIHNpemUpOworICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92
ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTQ2NSwxNCAr
NDYzLDE0IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVzcG9uCiAgICAgICAgIG1faGFuZGxlLT5jb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIHVuc2lnbmVk
IC8qIGxlbmd0aCAqLywgaW50IC8qIGVuY29kZWREYXRhTGVuZ3RoICovKQordm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAvKiBkYXRh
ICovLCBzaXplX3QgLyogbGVuZ3RoICovLCBsb25nIGxvbmcgLyogZW5jb2RlZERhdGFMZW5ndGgg
Ki8pCiB7CiAgICAgLy8gVGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBuZXZlciBnZXQgYSBkaWRS
ZWNlaXZlRGF0YSBjYWxsYmFjay4KICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGJlIHVzaW5nIGRp
ZFJlY2VpdmVCdWZmZXIuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7
CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmgKaW5kZXggNjI4NzNlNGEyNDUuLjAxYTYyYzQyZTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE5ldHdv
cmtMb2FkX2gKLSNkZWZpbmUgTmV0d29ya0xvYWRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJOZXR3b3JrTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5o
IgpAQCAtMTE0LDggKzExMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RB
c3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5z
aWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgc2l6ZV90
IGxlbmd0aCwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWw7
CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSopIGZpbmFsOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgY291bnRPZkJ5dGVzUmVjZWl2ZWQpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29t
cGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWlu
dDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkg
ZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CkBAIC0xNzAsNSArMTY5LDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gTmV0d29y
a0xvYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKaW5kZXggMjg3MWQzMmQwZDUuLjJlNjEwNTAzYmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSA9IDA7CiAgICAgZW51bSBjbGFzcyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSB7IE5vLCBZZXMgfTsKICAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYTBk
ZjUwNWFlYjcuLjhiNWEzYjgxODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBA
QCBhdXRvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgIHJldHVybiBTaG91bGRDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZTo6Tm87CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkgewogICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2Vpdmlu
ZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKQEAgLTM4NCw3ICszODQs
OCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIH0KICNlbmRpZgogICAgIC8vIEZJWE1F
OiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVz
b3VyY2UgaGFuZGxlLgotICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZl
ci0+c2l6ZSgpOworICAgIC8vIFdoZW4gdXNpbmcgTmV0d29ya1Nlc3Npb24sIHdlIGdldCB0aGUg
Y29ycmVjdCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIGZyb20gTmV0d29ya0RhdGFUYXNrLgor
ICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgg
Pj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAogICAg
IG1fYnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsKICAgICBpZiAobV9idWZmZXJlZERh
dGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggZmNjOTkyMjM2ZTQuLmYxYzYwODM0ZGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKLSNkZWZpbmUgTmV0d29ya1Jl
c291cmNlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKQEAgLTkyLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTE2Niw1ICsxNjUsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBOZXR3b3JrUmVzb3VyY2VMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggMzliZTA2ZDNlMWIuLjBhMzI4NWY0YmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTIzLDggKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBp
bmdMb2FkX2gKLSNkZWZpbmUgUGluZ0xvYWRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKQEAg
LTY0LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwogICAgICAgICBkZWxldGUgdGhpczsKICAg
ICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbCB7
IH0KICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9CkBAIC04Nyw1
ICs4NiwzIEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYjkzODY4YzlmNTcuLjgyNWFmYzliYzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYXV0byBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb25zZSkgLT4KICAgICByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2U6OlllczsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGxvbmcgbG9uZyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAppbmRleCA4ZWIxN2ZkYjA4Mi4uNDQ4MDliNTFkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRfaAot
I2RlZmluZSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRfaAorI3ByYWdtYSBvbmNlCiAKICNp
ZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAKQEAgLTYw
LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApA
QCAtODMsNSArODIsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCi0KLSNl
bmRpZiAvLyBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tS
ZXBsYXkuY3BwCmluZGV4IDMwZDczMDI1Mjc5Li5mMmZlNjE0NDdkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Rh
dGFUYXNrUmVwbGF5LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
UmVwbGF5OjpyZXBsYXlEYXRhUmVjZWl2ZWQoY29uc3QgRGF0YVJlY2VpdmVkRXZlbnQmIGV2ZW50
KQogICAgIERFQlVHX0xPRygiVVJMID0gIiBTVFJJTkdfU1BFQ0lGSUVSLCBERUJVR19TVFIobV9m
aXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkpKTsKIAogICAgIEFTU0VSVChtX2NsaWVudCk7Ci0g
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGV2ZW50LmRhdGEuY29weVJlZigpKTsKKyAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZXZlbnQuZGF0YS5jb3B5UmVmKCksIDApOwogCiAgICAg
ZW5xdWV1ZUV2ZW50SGFuZGxlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggY2ViNTk2
M2VkNzkuLjBmNzgzODhkNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQs
IHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiAgICAgdm9pZCBkaWRSZWNlaXZl
Q2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyk7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hF
eHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CkBAIC03OCw2ICs3OCw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsKICAgICBS
ZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzazsKICAgICBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1ldHJpY3M7CisgICAgbG9uZyBsb25nIG1fY291
bnRPZkJ5dGVzUmVjZWl2ZWRTb0ZhciB7IDAgfTsKIH07CiAKIFdlYkNvcmU6OkNyZWRlbnRpYWwg
c2VydmVyVHJ1c3RDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDUxMjc2ZWM1YjUyLi4yMzRiMjY3ZTgw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTE4MSwxMCArMTgxLDE3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihl
cnJvciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBsb25nIGxvbmcgY291bnRPZkJ5dGVzUmVjZWl2ZWQpCiB7CisgICAg
QVNTRVJUKGNvdW50T2ZCeXRlc1JlY2VpdmVkID49IG1fY291bnRPZkJ5dGVzUmVjZWl2ZWRTb0Zh
cik7CisgICAgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoID0gY291bnRPZkJ5dGVzUmVjZWl2
ZWQ7CisgICAgaWYgKGNvdW50T2ZCeXRlc1JlY2VpdmVkID4gMCkgeyAgICAgICAgCisgICAgICAg
IGVuY29kZWREYXRhTGVuZ3RoID0gY291bnRPZkJ5dGVzUmVjZWl2ZWQgLSBtX2NvdW50T2ZCeXRl
c1JlY2VpdmVkU29GYXI7CisgICAgICAgIG1fY291bnRPZkJ5dGVzUmVjZWl2ZWRTb0ZhciA9IGNv
dW50T2ZCeXRlc1JlY2VpdmVkOworICAgIH0KKwogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQog
CiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggOWE0NTJhNTAyOTMuLjYwNmE5
M2RlNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTM5NCw4ICszOTQsMTggQEAgc3RhdGlj
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3JrTG9hZFByaW9yaXR5KGZsb2F0
IHByaW9yaXR5KQogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24g
ZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZURhdGE6
KE5TRGF0YSAqKWRhdGEKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYg
ZXhpc3RpbmdUYXNrOmRhdGFUYXNrXSkKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpkYXRhVGFza10pIHsKKyAg
ICAgICAgaW50NjRfdCBieXRlc1JlY2VpdmVkID0gMDsKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorICAgICAg
ICAvLyAtW05TVVJMU2Vzc2lvblRhc2sgX2NvdW50T2ZCeXRlc1JlY2VpdmVkRW5jb2RlZF0gcmV0
dXJucyAwIGlmIHRoaXMgaXMgbm90IGEgY29tcHJlc3NlZCByZXNwb25zZSwgc28gZmFsbGJhY2sK
KyAgICAgICAgLy8gdG8gdXNpbmcgLVtOU1VSTFNlc3Npb25UYXNrIGNvdW50T2ZCeXRlc1JlY2Vp
dmVkXSB0byBwcm92aWRlIHRoZSBjb3VudCBvZiBieXRlcyByZWNlaXZlZCBzbyBmYXIuCisgICAg
ICAgIGlmIChbZGF0YVRhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfY291bnRPZkJ5
dGVzUmVjZWl2ZWRFbmNvZGVkKV0pIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPj4+IGRp
ZFJlY2VpdmVEYXRhICgldSkgKCV1KSIsICh1bnNpZ25lZClkYXRhVGFzay5fY291bnRPZkJ5dGVz
UmVjZWl2ZWRFbmNvZGVkLCAodW5zaWduZWQpZGF0YVRhc2suY291bnRPZkJ5dGVzUmVjZWl2ZWQp
OworICAgICAgICAgICAgYnl0ZXNSZWNlaXZlZCA9IGRhdGFUYXNrLl9jb3VudE9mQnl0ZXNSZWNl
aXZlZEVuY29kZWQgPzogZGF0YVRhc2suY291bnRPZkJ5dGVzUmVjZWl2ZWQ7CisgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpLCBieXRlc1JlY2VpdmVkKTsKKyAgICB9CiB9CiAK
IC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3dubG9hZFRhc2s6
KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRGaW5pc2hEb3dubG9h
ZGluZ1RvVVJMOihOU1VSTCAqKWxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMTg2
M2RiZmQwNi4uYjEwYjY1NjU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtNzQ1LDcgKzc0
NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZChnc3NpemUgYnl0ZXNSZWFk
KQogICAgICAgICB3cml0ZURvd25sb2FkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KG1fY2xpZW50KTsKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUobV9yZWFkQnVmZmVyKSkpOworICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3JlYWRCdWZmZXIpKSwg
Ynl0ZXNSZWFkKTsKICAgICAgICAgcmVhZCgpOwogICAgIH0KIH0K
</data>
<flag name="review"
          id="335415"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>