<?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>158251</bug_id>
          
          <creation_ts>2016-05-31 23:12:12 -0700</creation_ts>
          <short_desc>Reduce ResourceRequest copying in loading code</short_desc>
          <delta_ts>2016-06-06 01:23:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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="Alex Christensen">achristensen</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>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198081</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 23:12:12 -0700</bug_when>
    <thetext>Reduce ResourceRequest copying in loading code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198083</commentid>
    <comment_count>1</comment_count>
      <attachid>280216</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 23:33:04 -0700</bug_when>
    <thetext>Created attachment 280216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198084</commentid>
    <comment_count>2</comment_count>
      <attachid>280217</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 23:41:51 -0700</bug_when>
    <thetext>Created attachment 280217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198087</commentid>
    <comment_count>3</comment_count>
      <attachid>280218</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-01 00:01:32 -0700</bug_when>
    <thetext>Created attachment 280218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198096</commentid>
    <comment_count>4</comment_count>
      <attachid>280221</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-01 00:43:13 -0700</bug_when>
    <thetext>Created attachment 280221
Fix the soup build

This fixes the soup build, but I&apos;m not sure we are really reducing copies, specially in the case of the redirect response, since we have to copy before move in several places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198165</commentid>
    <comment_count>5</comment_count>
      <attachid>280221</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-01 09:07:22 -0700</bug_when>
    <thetext>Comment on attachment 280221
Fix the soup build

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

The number of copies of the libsoup ResourceHandle-based loading in WK2 loading is unaffected.
The number of copies of the Mac non-NetworkSession loading in WK2 is reduced by 1.
The number of copies of the Mac NetworkSession loading in WK2 is reduced by 1.
This patch is a net improvement.

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:-508
&gt; -    ResourceRequest newRequest = request;

This is one fewer copy for Mac non-NetworkSession loading.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:-473
&gt; -    ResourceRequest newRequest(request);

This is one fewer copy for libsoup loading.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:534
&gt; +    ResourceResponse responseCopy = d-&gt;m_response;

This is one more copy for libsoup loading.

&gt; Source/WebKit2/NetworkProcess/NetworkLoad.cpp:128
&gt; +        ResourceRequest currentRequestCopy = m_currentRequest;

This is one more copy for all loads not using NetworkSession in WebKit2.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:-85
&gt; -    ResourceRequest newRequest = proposedRequest;

This is one fewer copy for all loads in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198169</commentid>
    <comment_count>6</comment_count>
      <attachid>280242</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-01 09:18:42 -0700</bug_when>
    <thetext>Created attachment 280242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198207</commentid>
    <comment_count>7</comment_count>
      <attachid>280249</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-01 11:16:22 -0700</bug_when>
    <thetext>Created attachment 280249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198541</commentid>
    <comment_count>8</comment_count>
      <attachid>280249</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-02 09:21:25 -0700</bug_when>
    <thetext>Comment on attachment 280249
Patch

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

Looks like the compilation error on Windows is real; seems like continueWillSendRequest in ResourceHandleCFNet.cpp needs to be updated.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:292
&gt; +    // FIXME: There is functionality in ResourceHandleMac.mm that does not have corresponding functionality here.

Could you be more specific with this comment? This is broad and vague, and I think something more specific would have more value.

&gt; Source/WebKit2/NetworkProcess/NetworkLoad.cpp:130
&gt; -    } else if (m_handle)
&gt; -        m_handle-&gt;continueWillSendRequest(m_currentRequest);
&gt; +    } else if (m_handle) {
&gt; +        ResourceRequest currentRequestCopy = m_currentRequest;
&gt; +        m_handle-&gt;continueWillSendRequest(WTFMove(currentRequestCopy));
&gt; +    }

Is this change really needed? Do we get a compile error with the old code, or do we get incorrect behavior? This seems like what I would have expected if I didn’t call WTFMove. Even if there is a need to be explicit, maybe we could do it without a local variable. Like maybe one of these:

    m_handle-&gt;continueWillSendRequest(ResourceRequest { m_currentRequest });

    m_handle-&gt;continueWillSendRequest({ m_currentRequest });

    auto currentRequestCopy = m_currentRequest;
    m_handle-&gt;continueWillSendRequest(WTFMove(currentRequestCopy));

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:83
&gt;      RefPtr&lt;WebResourceLoader&gt; protect(this);

Should be Ref, not RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198839</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-02 20:19:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:292
&gt; &gt; +    // FIXME: There is functionality in ResourceHandleMac.mm that does not have corresponding functionality here.
I&apos;m removing this comment.  The corresponding functionality is in ResourceHandleCFURLConnectionDelegate::createResourceRequest and tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198841</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-02 20:21:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Is this change really needed? Do we get a compile error with the old code,
&gt; or do we get incorrect behavior? 
I&apos;m pretty sure there was a compiler error.  I also wanted it to be as obvious as possible that there was a copy being made because I think this copy can also be avoided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198842</commentid>
    <comment_count>11</comment_count>
      <attachid>280420</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-02 20:25:05 -0700</bug_when>
    <thetext>Created attachment 280420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198880</commentid>
    <comment_count>12</comment_count>
      <attachid>280427</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-02 23:29:44 -0700</bug_when>
    <thetext>Created attachment 280427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199343</commentid>
    <comment_count>13</comment_count>
      <attachid>280544</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-04 22:31:45 -0700</bug_when>
    <thetext>Created attachment 280544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199393</commentid>
    <comment_count>14</comment_count>
      <attachid>280544</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-05 10:49:04 -0700</bug_when>
    <thetext>Comment on attachment 280544
Patch

In some of the code paths the ownership seems great. In some others, there are quite a few copies and it’s not clear to me they are all needed, such as in NetworkLoad::sharedWillSendRedirectedRequest and NetworkResourceLoader::willSendRedirectedRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199524</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-06 01:03:40 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 280544 [details]
&gt; Patch
&gt; 
&gt; In some of the code paths the ownership seems great. In some others, there
&gt; are quite a few copies and it’s not clear to me they are all needed, such as
&gt; in NetworkLoad::sharedWillSendRedirectedRequest and
&gt; NetworkResourceLoader::willSendRedirectedRequest.
I agree.  I think there&apos;s room for improvement.  I think sometimes we only need to actually keep part of the original request, like just the URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199530</commentid>
    <comment_count>16</comment_count>
      <attachid>280544</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-06 01:23:51 -0700</bug_when>
    <thetext>Comment on attachment 280544
Patch

Clearing flags on attachment: 280544

Committed r201708: &lt;http://trac.webkit.org/changeset/201708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199531</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-06 01:23:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280216</attachid>
            <date>2016-05-31 23:33:04 -0700</date>
            <delta_ts>2016-05-31 23:41:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160531233422.patch</filename>
            <type>text/plain</type>
            <size>49825</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE2LTA1LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQg
YmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMu
CisgICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
YXJvdW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBj
b3B5IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBh
bG9uZy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50
aWNzIHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAg
VGhlIGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2Ug
YSBub24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJl
dHVybnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRp
bmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6
XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlv
blNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
IGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VUKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRp
bnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UpOgorCiAyMDE2LTA1LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTW9kZXJuaXplIGxhbWJkYSBjYXB0dXJlcyBpbiBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsMTEgKzYxNiwxMiBAQCBSZXNv
dXJjZUVycm9yIFJlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93CiAgICAgcmV0dXJuIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihtX3JlcXVlc3QpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpCitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KHRoaXMsIHJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKHJlcXVlc3QpOwogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOworICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoTmV0d29y
a0xvYWQoKTsKIAogICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVl
c3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZSgpOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBVU0UoU09VUCkKQEAgLTIwMiw3
ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckNsaWVudCgp
OwogCiAgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3
aWxsU2VuZFJlcXVlc3RBc3luYygpLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVX
aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CiAKICAg
ICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKCkuCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24g
MjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTAgKzM5LDE1IEBAIFJlc291cmNlSGFuZGxlQ2xp
ZW50OjpSZXNvdXJjZUhhbmRsZUNsaWUKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VI
YW5kbGVDbGllbnQoKQogewogfQorICAgIAorUmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlSGFuZGxl
Q2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCit7CisgICAgcmV0dXJuIFdURk1vdmUocmVx
dWVzdCk7Cit9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFz
eW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pCit2b2lkIFJl
c291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgLypy
ZWRpcmVjdFJlc3BvbnNlKi8pCiB7Ci0gICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVz
dChyZXF1ZXN0KTsKKyAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUo
cmVxdWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjksOCArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIFJlc291cmNlSGFuZGxlQ2xpZW50KCk7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgflJlc291cmNlSGFuZGxlQ2xpZW50KCk7CiAKLSAgICAgICAgLy8gUmVxdWVzdCBtYXkgYmUg
bW9kaWZpZWQuCi0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiAvKnJlZGly
ZWN0UmVzcG9uc2UqLykgeyB9CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVzb3Vy
Y2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVz
dCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgeyB9CkBAIC04OCw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGxvYWRpbmdTeW5jaHJvbm91c1hIUigpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3Qg
dXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KCkgd2hlbiByZWFk
eS4KLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFz
eW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogCiAgICAgICAgIC8vIENsaWVudCB3aWxs
IGNhbGwgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgd2hlbiBy
ZWFkeS4KICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5j
aHJvbm91c0xvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxNiArMzYsMTYgQEAgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6On5TeW5j
aHJvbm91c0xvYQogewogfQogCi12b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykKK1Jlc291cmNl
UmVxdWVzdCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UmJikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBmaXhlZCB0byBmb2xsb3cg
dGhlIHJlZGlyZWN0IGNvcnJlY3RseSBldmVuIGZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMuCiAg
ICAgaWYgKHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLCByZXF1ZXN0LnVybCgpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
V1RGTW92ZShyZXF1ZXN0KTsKIAogICAgIEFTU0VSVChtX2Vycm9yLmlzTnVsbCgpKTsKICAgICBt
X2Vycm9yID0gcGxhdGZvcm1CYWRSZXNwb25zZUVycm9yKCk7CiAgICAgbV9pc0RvbmUgPSB0cnVl
OwotICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICByZXR1cm4geyB9OwogfQog
CiBib29sIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZShSZXNvdXJjZUhhbmRsZSopCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDE1
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZUVycm9yIHBsYXRmb3JtQmFkUmVzcG9uc2VFcnJv
cigpOwogCiBwcml2YXRlOgotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxl
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJl
c3BvbnNlKi8pIG92ZXJyaWRlOworICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKSBv
dmVycmlkZTsKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFu
ZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShy
ZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsOCArMjg3LDEwIEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiAgICAgfQogfQogCi12b2lkIFJlc291cmNl
SGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBSZXNvdXJjZUhhbmRsZTo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgLy8gRklYTUU6IFRoZXJlIGlzIGZ1
bmN0aW9uYWxpdHkgaW4gUmVzb3VyY2VIYW5kbGVNYWMubW0gdGhhdCBkb2VzIG5vdCBoYXZlIGNv
cnJlc3BvbmRpbmcgZnVuY3Rpb25hbGl0eSBoZXJlLgorCiAgICAgY29uc3QgVVJMJiB1cmwgPSBy
ZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNz
ID0gdXJsLnBhc3MoKTsKQEAgLTMxNiwxNSArMzE4LDE1IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OndpbGxTZW5kUmVxdWVzdChSZXMKIAogICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBj
bGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSk7CisgICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKTsKKyAgICAgICAgYXV0byBuZXdSZXF1ZXN0ID0gY2xpZW50KCktPndpbGxTZW5kUmVx
dWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsK
IAogICAgICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBl
c3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgICAgIGlmICgh
cmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lv
bihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgaWYgKCFuZXdSZXF1ZXN0Lmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBuZXdSZXF1ZXN0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1f
c3RvcmFnZVNlc3Npb24uZ2V0KCkpOwogCi0gICAgICAgICAgICBkLT5tX2N1cnJlbnRSZXF1ZXN0
ID0gcmVxdWVzdDsKKyAgICAgICAgICAgIGQtPm1fY3VycmVudFJlcXVlc3QgPSBuZXdSZXF1ZXN0
OwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgQ0ZVUkxSZXF1ZXN0
UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgICAgICBBU1NFUlQocmVkaXJlY3RSZXNw
b25zZSk7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBjcmVhdGVSZXNvdXJj
ZVJlcXVlc3QoY2ZSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLSAgICAgICAgbV9o
YW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsK
KyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRp
cmVjdFJlc3BvbnNlLmdldCgpKTsKICAgICB9KTsKIAogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93
YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxNSArOTIsMTUgQEAgQ0ZVUkxSZXF1ZXN0UmVm
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbAogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVx
dWVzdChoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QgPSBjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY2ZSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
LmdldCgpKTsKLSAgICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UuZ2V0KCkpOworICAgIGF1dG8gbmV3UmVxdWVzdCA9IG1faGFuZGxlLT53aWxsU2Vu
ZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CiAKLSAg
ICBpZiAocmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG5ld1Jl
cXVlc3QuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY2ZSZXF1ZXN0
ID0gcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOworICAgIGF1dG8gbmV3Q0ZS
ZXF1ZXN0ID0gbmV3UmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogCi0gICAg
Q0ZSZXRhaW4oY2ZSZXF1ZXN0KTsKLSAgICByZXR1cm4gY2ZSZXF1ZXN0OworICAgIENGUmV0YWlu
KG5ld0NGUmVxdWVzdCk7CisgICAgcmV0dXJuIG5ld0NGUmVxdWVzdDsKIH0KIAogI2lmICFQTEFU
Rk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAyMDE1MjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtTG9hZFJlc291cmMKICAgICBkYXRhLnN3YXAoY2xpZW50Lm11dGFibGVEYXRhKCkpOwog
fQogCi12b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQorUmVz
b3VyY2VSZXF1ZXN0IFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAg
ICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKTsKIApAQCAtNDg5LDIzICs0ODks
MjMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgIH0KIAog
ICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykgewotICAgICAgICBjbGllbnQoKS0+d2ls
bFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAg
ICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
IGVsc2UgewogICAgICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwotICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOworICAgICAgICBhdXRvIG5ld1JlcXVlc3QgPSBjbGllbnQoKS0+d2lsbFNl
bmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25z
ZSkpOwogCiAgICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Np
b24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICAgICAg
aWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vz
c2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgaWYgKCFuZXdSZXF1ZXN0
LmlzTnVsbCgpKQorICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5t
X3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tz
KTsKIAogICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVz
cGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICBSZXNvdXJjZVJl
cXVlc3QgbmV3UmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgp
KQogICAgICAgICBuZXdSZXF1ZXN0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Np
b24uZ2V0KCkpOwogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpu
ZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSldOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE1MjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsNyBAQCAtIChOU1VSTFJl
cXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSGFu
ZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0
UmVzcG9uc2U6bm9uLUhUVFAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVz
Y3JpcHRpb25dKTsgCiAjZW5kaWYKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3
UmVxdWVzdDsKLQotICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSk7Ci0KLSAgICByZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpOworICAgIHJldHVybiBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpLm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0g
KEJPT0wpY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rp
b24gKiljb25uZWN0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE1MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5ICsx
MjIsNyBAQCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCA9IG5ld1JlcXVlc3Q7Ci0KLSAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVz
dChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB9KTsKIAogICAgIGRpc3BhdGNo
X3NlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NjQsMTggKzQ2NCwxNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFz
R0VUKFNvdXBNZXNzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjb250aW51
ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3N0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKICAgICAvLyB3aWxsU2VuZFJlcXVlc3QgbWlnaHQgY2FuY2VsIHRoZSBsb2FkLgogICAgIGlm
IChoYW5kbGUtPmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0KTsKICAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwotICAgIGlmIChwcm90b2NvbEhv
c3RBbmRQb3J0QXJlRXF1YWwobmV3UmVxdWVzdC51cmwoKSwgZC0+bV9yZXNwb25zZS51cmwoKSkp
Ci0gICAgICAgIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0
LCB0cnVlKTsKKyAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJlcXVlc3QudXJs
KCksIGQtPm1fcmVzcG9uc2UudXJsKCkpKQorICAgICAgICBhcHBseUF1dGhlbnRpY2F0aW9uVG9S
ZXF1ZXN0KGhhbmRsZSwgcmVxdWVzdCwgdHJ1ZSk7CiAKLSAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1
ZXN0QW5kTWVzc2FnZUZvckhhbmRsZShoYW5kbGUsIG5ld1JlcXVlc3QpKSB7CisgICAgaWYgKCFj
cmVhdGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoaGFuZGxlLCByZXF1ZXN0KSkgewog
ICAgICAgICBkLT5jbGllbnQoKS0+Y2Fubm90U2hvd1VSTChoYW5kbGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTM2NywxMCArMTM2NiwxMCBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJh
Y2soR09iamVjdCosIEdBc3luCiAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRD
YWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIWNsaWVudCgpIHx8IGNsaWVudCgpLT51c2VzQXN5bmND
YWxsYmFja3MoKSk7Ci0gICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1
ZXN0KTsKKyAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVx
dWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE1NDQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2MyBAQAorMjAxNi0wNS0zMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
ZHVjZSBSZXNvdXJjZVJlcXVlc3QgY29weWluZyBpbiBsb2FkaW5nIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGlu
Z0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFzazo6Zmlyc3RSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5jZWwpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmN1cnJlbnRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNsZWFyQ3VycmVudFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cGVuZGluZ0Rvd25sb2FkSUQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENh
bmNlbGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDE2LTA1LTMxICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIy
MDE0ODEsIHIyMDE1MjM6IDAuMyUgcmVncmVzc2lvbiBpbiBPY3RhbmUgY29kZS1sb2FkCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAko
cmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgdHlwZWRlZiBzdGQ6
OmZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UG9saQogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGll
bnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgZmlyc3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdFJlcXVlc3Q7IH0KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY3VycmVu
dFJlcXVlc3QoKTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAgICB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93
bmxvYWQmKTsKICAgICBib29sIGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9u
IDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNh
bmNlbCgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9h
ZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBuZXdSZXF1ZXN0KQordm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBtX2N1cnJlbnRSZXF1ZXN0LnVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdP
bGRQcm9wZXJ0aWVzKG5ld1JlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkp
KTsKQEAgLTEyNCw4ICsxMjQsMTAgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlcwogICAgICAgICAgICAgcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcih7IH0pOwogI2Vu
ZGlmCiAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKG1faGFuZGxlKQotICAgICAgICBt
X2hhbmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QobV9jdXJyZW50UmVxdWVzdCk7CisgICAg
fSBlbHNlIGlmIChtX2hhbmRsZSkgeworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJl
cXVlc3RDb3B5ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUoY3VycmVudFJlcXVlc3RDb3B5KSk7CisgICAgfQogCiAj
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAocmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
cikKQEAgLTE1NiwxNSArMTU4LDE1IEBAIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51
ZURpZFJlY2UKICAgICByZXR1cm4gbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIC8vIFdlIG9ubHkgZXhwZWN0IHRvIGdldCB0aGUg
d2lsbFNlbmRSZXF1ZXN0IGNhbGxiYWNrIGZyb20gUmVzb3VyY2VIYW5kbGUgYXMgdGhlIHJlc3Vs
dCBvZiBhIHJlZGlyZWN0LgogICAgIEFTU0VSVCghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gb2xkUmVxdWVzdCA9
IG1fY3VycmVudFJlcXVlc3Q7CisgICAgYXV0byBvbGRSZXF1ZXN0ID0gV1RGTW92ZShtX2N1cnJl
bnRSZXF1ZXN0KTsKICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBtX2NsaWVu
dC53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KG9sZFJlcXVlc3QsIHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOworICAgIG1fY2xpZW50LndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92
ZShvbGRSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNl
KSk7CiB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpAQCAtMTk3LDExICsxOTksMTEgQEAg
dm9pZCBOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25sb2FkKFBlbgogICAgIG1fdGFzay0+c2V0
UGVuZGluZ0Rvd25sb2FkKHBlbmRpbmdEb3dubG9hZCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIG1fcmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOwotICAgIHNoYXJlZFdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9uc2UpOworICAgIHNoYXJlZFdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25z
ZSkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJik+IGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMzE0LDEwICszMTYsMTAgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
RmFpbChSZXNvdXJjZUhhbmRsZQogICAgIG1fY2xpZW50LmRpZEZhaWxMb2FkaW5nKGVycm9yKTsK
IH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBOZXR3b3JrTG9hZDo6d2lsbFNlbmRS
ZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgc2hhcmVkV2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBzaGFyZWRX
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSkpOwogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAko
cmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudFJlcXVlc3Q7IH0KICAgICB2b2lkIGNsZWFyQ3VycmVudFJlcXVlc3QoKSB7
IG1fY3VycmVudFJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKTsgfQogCi0gICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRG93
bmxvYWRJRCBwZW5kaW5nRG93bmxvYWRJRCgpIHsgcmV0dXJuIG1fdGFzay0+cGVuZGluZ0Rvd25s
b2FkSUQoKTsgfQogICAgIAogICAgIC8vIE5ldHdvcmtEYXRhVGFza0NsaWVudAotICAgIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsOworICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nl
c3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNhbm5vdFNob3dVUkwoKSBvdmVycmlkZTsKICNlbmRpZgogICAgIC8vIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOworICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBzaGFy
ZWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
dm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogCiAgICAgTmV0d29ya0xvYWRD
bGllbnQmIG1fY2xpZW50OwogICAgIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyBtX3BhcmFt
ZXRlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAg
ICAgZW51bSBjbGFzcyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB7IE5vLCBZZXMg
fTsKICAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAy
MDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMSw5ICs1MDEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojpjb250aW51ZUNhbkF1dGhlbnRpCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGRvd25sb2FkSUQsIGNhbkF1dGhlbnRp
Y2F0ZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewotICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGRvd25sb2FkSUQsIFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEIGRvd25sb2FkSUQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJl
dmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShEb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSk7Ci0gICAgdm9pZCBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25s
b2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEwLDcgKzQxMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGkK
ICAgICBjbGVhbnVwKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgICsrbV9yZWRpcmVjdENvdW50OwogCkBAIC00MjQs
NyArNDI0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQogICAg
ICAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y2xlYXJDdXJyZW50UmVxdWVzdCgpOwogICAgICAgICAg
ICAgb3ZlcnJpZGVuUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAgICB9Ci0gICAg
ICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG92ZXJyaWRlblJlcXVlc3QpOworICAgICAgICBj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG92ZXJyaWRlblJlcXVlc3QpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKSk7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVkaQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKIHsKICAgICBORVRXT1JLUkVTT1VSQ0VMT0FE
RVJfTE9HX0FMV0FZUygiRm9sbG93aW5nIHJlZGlyZWN0IG9mIG5ldHdvcmsgcmVzb3VyY2U6IGxv
YWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihtX3BhcmFtZXRlcnMud2ViUGFnZUlEKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCksIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CiAKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGludWVXaWxsCiAjZW5kaWYKIAogICAgIGlmIChtX25ldHdvcmtMb2FkKQotICAg
ICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0KTsK
KyAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShu
ZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNTI0KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7CiAjZW5kaWYKLSAgICB2b2lkIGNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7
CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiBuZXdSZXF1ZXN0KTsKIAogICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyZWRE
YXRhKCkgeyByZXR1cm4gbV9idWZmZXJlZERhdGEuZ2V0KCk7IH0KICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToK
LSAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NywxMiArODcsMTIgQEAg
dm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlQ2FuQXV0aGVudAogICAgICAgICBwZW5kaW5n
RG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
YW5BdXRoZW50aWNhdGUpOwogfQogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogewogICAgIGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25s
b2Fkcy5nZXQoZG93bmxvYWRJRCk7CiAgICAgQVNTRVJUKHBlbmRpbmdEb3dubG9hZCk7CiAgICAg
aWYgKHBlbmRpbmdEb3dubG9hZCkKLSAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jb250aW51ZVdp
bGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jb250aW51
ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1h
bmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRh
c2smIG5ldHdvcmtEYXRhVGFzaywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICBzdGQ6OnBhaXI8UmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4sIHN0ZDo6dW5p
cXVlX3B0cjxQZW5kaW5nRG93bmxvYWQ+PiBkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3du
bG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYpOwogICAgIHZvaWQgY29udGludWVD
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2Fu
QXV0aGVudGljYXRlKTsKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2Fk
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVX
aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
ICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRh
VGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgY29udGludWVEZWNp
ZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRp
b24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgYWxsb3dPdmVyd3JpdGUp
OwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIFBlbmRpbmdEb3dubG9hZDo6
UGVuZGluZ0Rvd25sb2FkKGNvbnN0IE4KICAgICBtX25ldHdvcmtMb2FkLT5zZXRQZW5kaW5nRG93
bmxvYWQoKnRoaXMpOwogfQogCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6d2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgUGVuZGluZ0Rvd25sb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpXaWxsU2VuZFJlcXVlc3QoV1RG
TW92ZShyZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKSk7CiB9Owog
ICAgIAotdm9pZCBQZW5kaW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgUGVuZGluZ0Rvd25s
b2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0KQogewotICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KG5ld1JlcXVlc3QpOworICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KFdURk1vdmUobmV3UmVxdWVzdCkpOwogfQogCiB2b2lkIFBlbmRpbmdEb3dubG9hZDo6Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkocmV2
aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IFBlbmRpbmdEb3dubG9hZCA6IHB1YmxpYyBOZXR3b3JrTG8KIHB1YmxpYzoKICAgICBQZW5kaW5n
RG93bmxvYWQoY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiwgRG93bmxvYWRJRCk7CiAKLSAg
ICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRlKTsKIAogcHJpdmF0ZTogICAgCkBAIC01
NCw3ICs1NCw3IEBAIHByaXZhdGU6ICAgIAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92
ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7
CiAgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBTaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CiAgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRv
dWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZSB7IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVM
b2FkKCkKICAgICBBU1NFUlQoIW1fbmV0d29ya0xvYWQpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
TG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAg
IExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3Mp
IFNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBmb3IgJXMgaGl0IGEgcmVkaXJlY3QsIGFib3J0aW5n
IHRoZSBsb2FkLiIsIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgLy8gV2UgZHJvcCBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb25zIGlmIHRoZXkgcmVk
aXJlY3QgZm9yIG5vdyBhcyB3ZSB3b3VsZCBuZWVkIHRvIG5vdGlmeSBXZWJDb3JlIG9mIHN1Y2gg
cmVkaXJlY3RzLgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHJldmlz
aW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNT
ZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25z
dCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZSB7IH0KICAgICBib29sIGlzU3lu
Y2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICBTaG91bGRD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5p
c2hUaW1lKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAy
MDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCgKICAgICAgICAgbV9jbGllbnQtPmRpZEJl
Y29tZURvd25sb2FkKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2s6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChyZWRpcmVj
dFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA3IHx8IHJlZGlyZWN0UmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA9PSAzMDgpIHsKICAgICAgICAgQVNTRVJUKG1fbGFzdEhUVFBNZXRob2Qg
PT0gcmVxdWVzdC5odHRwTWV0aG9kKCkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWQKICAgICB9CiAgICAgCiAgICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24ocmVkaXJl
Y3RSZXNwb25zZSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBtX2NsaWVu
dC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzUsMTggKzc1LDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRldGFjaEZyb21Db3Jl
TG8KICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3NlZFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRS
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBMT0co
TmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJXZWJSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0LCBXZWJSZXNvdXJjZUxvYWRlciA9ICVwIiwgdGhpcyk7CiAKICAgICBS
ZWZQdHI8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAKLSAgICBSZXNvdXJjZVJl
cXVlc3QgbmV3UmVxdWVzdCA9IHByb3Bvc2VkUmVxdWVzdDsKLSAgICBpZiAobV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxs
YmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgbmV3UmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSkpCisgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdChtX2NvcmVMb2Fk
ZXIuZ2V0KCksIHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byB1cGRhdGUgTmV0d29ya1Jlc291cmNl
TG9hZGVyIGNsaWVudENyZWRlbnRpYWxQb2xpY3kgaW4gY2FzZSBsb2FkZXIgcG9saWN5IGlzIERv
Tm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscz8KLSAgICBtX2NvcmVMb2FkZXIt
PndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBb
cHJvdGVjdF0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgeworICAgIG1fY29yZUxvYWRlci0+
d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25z
ZSwgW3Byb3RlY3RdKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFw
cm90ZWN0LT5tX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBw
cml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBv
dmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSk7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280217</attachid>
            <date>2016-05-31 23:41:51 -0700</date>
            <delta_ts>2016-06-01 00:01:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160531234309.patch</filename>
            <type>text/plain</type>
            <size>51524</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA1LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQg
YmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMu
CisgICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
YXJvdW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBj
b3B5IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBh
bG9uZy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50
aWNzIHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAg
VGhlIGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2Ug
YSBub24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJl
dHVybnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpnZXRP
ckNyZWF0ZVJlYWRCdWZmZXIpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0Ns
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJl
c291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRpbmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNM
b2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNl
bmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VU
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE2LTA1LTMxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIGxhbWJk
YSBjYXB0dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTYsMTEgKzYxNiwxMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlTG9hZGVyOjpjYW5u
b3RTaG93CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhbm5vdFNob3dVUkxF
cnJvcihtX3JlcXVlc3QpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlm
IChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxs
YmFja0ZvclJlZGlyZWN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIHdpbGxTZW5k
UmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHJldHVybiBX
VEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIAogICAgIC8vIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0
cmVhbWluZ0NsaWVudCA6IHB1CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIGNoYXIqIGdldE9yQ3Jl
YXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBv
dmVycmlkZTsKICNlbmRpZgotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBpbnQgZW5jb2RlZExlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xMDg1LDggKzEwODUs
OSBAQCBjaGFyKiBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6Z2V0CiB9CiAjZW5kaWYK
IAotdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
CitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmJikKIHsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCkBAIC0yMDIsNyArMjAyLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogICAgIC8v
IENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1
ZXN0QXN5bmMoKS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwogCiAgICAgLy8gQ2FsbGVk
IGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYygpLgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCIKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDEwICszOSwxNSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3Vy
Y2VIYW5kbGVDbGllCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50
KCkKIHsKIH0KKyAgICAKK1Jlc291cmNlUmVxdWVzdCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmKQoreworICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOworfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKQordm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIC8qcmVkaXJlY3RSZXNw
b25zZSovKQogewotICAgIGhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7
CisgICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogCi0gICAgICAgIC8vIFJlcXVlc3QgbWF5IGJlIG1vZGlmaWVkLgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNl
Ki8pIHsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlc291cmNlUmVxdWVzdCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNl
SGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQpAQCAtODgsNyArODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNYSFIoKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCgpIHdoZW4gcmVhZHkuCi0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBjYWxsIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCiAgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTYgKzM2LDE2IEBAIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2EK
IHsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pCitSZXNvdXJjZVJlcXVlc3QgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVj
dCBjb3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgogICAgIGlmIChwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgcmVx
dWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVx
dWVzdCk7CiAKICAgICBBU1NFUlQobV9lcnJvci5pc051bGwoKSk7CiAgICAgbV9lcnJvciA9IHBs
YXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpOwogICAgIG1faXNEb25lID0gdHJ1ZTsKLSAgICByZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VI
YW5kbGUqKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVzb3VyY2VFcnJvciBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDggKzI4NywxMCBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKQogeworICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBmdW5jdGlvbmFsaXR5
IGluIFJlc291cmNlSGFuZGxlTWFjLm1tIHRoYXQgZG9lcyBub3QgaGF2ZSBjb3JyZXNwb25kaW5n
IGZ1bmN0aW9uYWxpdHkgaGVyZS4KKwogICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwo
KTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigpOwogICAgIGQtPm1fcGFzcyA9IHVybC5wYXNz
KCk7CkBAIC0zMTYsMTUgKzMxOCwxNSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJl
cXVlc3QoUmVzCiAKICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAg
ICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNsaWVu
dCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cisg
ICAgICAgIGF1dG8gbmV3UmVxdWVzdCA9IGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiAKICAgICAgICAg
Ly8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBp
ZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgotICAgICAgICBpZiAoIXJlcXVlc3QuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkgewor
ICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNz
aW9uLmdldCgpKTsKIAotICAgICAgICAgICAgZC0+bV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7
CisgICAgICAgICAgICBkLT5tX2N1cnJlbnRSZXF1ZXN0ID0gbmV3UmVxdWVzdDsKICAgICAgICAg
fQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAkocmV2
aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmUKICAgICAgICAgQVNTRVJUKHJlZGlyZWN0UmVzcG9uc2UpOwogCiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gY3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNm
UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIG1faGFuZGxlLT53aWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CisgICAgICAgIG1f
aGFuZGxlLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25z
ZS5nZXQoKSk7CiAgICAgfSk7CiAKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFw
aG9yZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJ
KHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsMTUgKzkyLDE1IEBAIENGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGwKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoaGFuZGxl
PSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gY3Jl
YXRlUmVzb3VyY2VSZXF1ZXN0KGNmUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0g
ICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLmdl
dCgpKTsKKyAgICBhdXRvIG5ld1JlcXVlc3QgPSBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KFdU
Rk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwogCi0gICAgaWYgKHJlcXVl
c3QuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNmUmVxdWVzdCA9IHJlcXVlc3Qu
Y2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBhdXRvIG5ld0NGUmVxdWVzdCA9IG5l
d1JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIAotICAgIENGUmV0YWluKGNm
UmVxdWVzdCk7Ci0gICAgcmV0dXJuIGNmUmVxdWVzdDsKKyAgICBDRlJldGFpbihuZXdDRlJlcXVl
c3QpOworICAgIHJldHVybiBuZXdDRlJlcXVlc3Q7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRS
ZXNvdXJjCiAgICAgZGF0YS5zd2FwKGNsaWVudC5tdXRhYmxlRGF0YSgpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291cmNlUmVxdWVz
dCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIEFTU0VSVCgh
cmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7CiAKQEAgLTQ4OSwyMyArNDg5LDIzIEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICB9CiAKICAgICBpZiAoZC0+
bV91c2VzQXN5bmNDYWxsYmFja3MpIHsKLSAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVz
dEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBjbGllbnQo
KS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZWRpcmVjdFJlc3BvbnNlKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLSAgICAgICAg
Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICAgICAgYXV0byBuZXdSZXF1ZXN0ID0gY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0
aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIAogICAg
ICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lh
bGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgICAgIGlmICghcmVxdWVz
dC5pc051bGwoKSkKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9z
dG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkK
KyAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vz
c2lvbi5nZXQoKSk7CiAgICAgfQogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0KQogewogICAgIEFTU0VSVChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcyk7CiAKICAgICAv
LyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlm
IHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1Jl
cXVlc3QgPSByZXF1ZXN0OwogICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkKICAgICAgICAg
bmV3UmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsK
ICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxsU2VuZFJlcXVlc3Q6bmV3UmVxdWVzdC5u
c1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDcgQEAgLSAoTlNVUkxSZXF1ZXN0ICopY29u
bmVjdGlvbjooTlNVUkxDb25uZQogICAgICAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxl
Z2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxTZW5kUmVxdWVzdDolQCByZWRpcmVjdFJlc3BvbnNlOm5v
bi1IVFRQIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIFtuZXdSZXF1ZXN0IGRlc2NyaXB0aW9uXSk7
IAogI2VuZGlmCiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7Ci0K
LSAgICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OwotCi0gICAgcmV0dXJuIHJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKKyAg
ICByZXR1cm4gbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKS5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogfQogCiAtIChCT09MKWNvbm5l
Y3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOSArMTIyLDcgQEAgLSAo
TlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBuZXdSZXF1
ZXN0OwotCi0gICAgICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSk7CisgICAgICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgfSk7CiAKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVf
d2FpdChtX3NlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDY0LDE4ICs0NjQsMTcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChTb3VwTWVz
cwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgY29udGludWVBZnRlcldpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCitzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgLy8g
d2lsbFNlbmRSZXF1ZXN0IG1pZ2h0IGNhbmNlbCB0aGUgbG9hZC4KICAgICBpZiAoaGFuZGxlLT5j
YW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVzb3VyY2VS
ZXF1ZXN0IG5ld1JlcXVlc3QocmVxdWVzdCk7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCog
ZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKLSAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKG5ld1JlcXVlc3QudXJsKCksIGQtPm1fcmVzcG9uc2UudXJsKCkpKQotICAgICAgICBh
cHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KGhhbmRsZSwgbmV3UmVxdWVzdCwgdHJ1ZSk7Cisg
ICAgaWYgKHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCBkLT5tX3Jl
c3BvbnNlLnVybCgpKSkKKyAgICAgICAgYXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChoYW5k
bGUsIHJlcXVlc3QsIHRydWUpOwogCi0gICAgaWYgKCFjcmVhdGVTb3VwUmVxdWVzdEFuZE1lc3Nh
Z2VGb3JIYW5kbGUoaGFuZGxlLCBuZXdSZXF1ZXN0KSkgeworICAgIGlmICghY3JlYXRlU291cFJl
cXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKGhhbmRsZSwgcmVxdWVzdCkpIHsKICAgICAgICAgZC0+
Y2xpZW50KCktPmNhbm5vdFNob3dVUkwoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEzNjcsMTAgKzEzNjYsMTAgQEAgc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3Qq
LCBHQXN5bgogICAgICAgICBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhh
bmRsZS5nZXQoKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7
CiAgICAgQVNTRVJUKCFjbGllbnQoKSB8fCBjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkp
OwotICAgIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCk7CisgICAg
Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNTQ0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTYtMDUtMzEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgUmVzb3Vy
Y2VSZXF1ZXN0IGNvcHlpbmcgaW4gbG9hZGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgyNTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnRp
bnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5h
dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmZp
cnN0UmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6OnNldFBlbmRpbmdEb3dubG9hZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjdXJyZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjbGVhckN1cnJlbnRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnBlbmRpbmdEb3dubG9hZElEKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwZW5kaW5nRG93bmxvYWRDYW5jZWxlZCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAg
IChXZWJLaXQ6OlBpbmdMb2FkOjpQaW5nTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlk
QmVjb21lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6
ZGV0YWNoRnJvbUNvcmVMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaDoKKwogMjAxNi0wNS0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCByMjAxNDgxLCByMjAx
NTIzOiAwLjMlIHJlZ3Jlc3Npb24gaW4gT2N0YW5lIGNvZGUtbG9hZApJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIw
MTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlBvbGkKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgPSAwOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIGZpcnN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RS
ZXF1ZXN0OyB9CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0KCk7
CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKCk7Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAg
ICAgYm9vbCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjYW5jZWwoKQogICAg
ICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVz
dCkKK3ZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
bV9jdXJyZW50UmVxdWVzdC51cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGll
cyhuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CkBAIC0xMjQs
OCArMTI0LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXMKICAg
ICAgICAgICAgIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICNlbmRpZgogICAgICAg
ICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QpOworICAgIH0gZWxzZSBpZiAo
bV9oYW5kbGUpIHsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0Q29weSA9
IG1fY3VycmVudFJlcXVlc3Q7CisgICAgICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKGN1cnJlbnRSZXF1ZXN0Q29weSkpOworICAgIH0KIAogI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgaWYgKHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNTYs
MTUgKzE1OCwxNSBAQCBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlCiAg
ICAgcmV0dXJuIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKQordm9pZCBOZXR3b3JrTG9hZDo6c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkKIHsKICAgICAvLyBXZSBvbmx5IGV4cGVjdCB0byBnZXQgdGhlIHdpbGxTZW5kUmVx
dWVzdCBjYWxsYmFjayBmcm9tIFJlc291cmNlSGFuZGxlIGFzIHRoZSByZXN1bHQgb2YgYSByZWRp
cmVjdC4KICAgICBBU1NFUlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIG9sZFJlcXVlc3QgPSBtX2N1cnJlbnRS
ZXF1ZXN0OworICAgIGF1dG8gb2xkUmVxdWVzdCA9IFdURk1vdmUobV9jdXJyZW50UmVxdWVzdCk7
CiAgICAgbV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9jbGllbnQud2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChvbGRSZXF1ZXN0LCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
KyAgICBtX2NsaWVudC53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUob2xkUmVxdWVz
dCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOwogfQogCiAj
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKQEAgLTE5NywxMSArMTk5LDExIEBAIHZvaWQgTmV0d29y
a0xvYWQ6OnNldFBlbmRpbmdEb3dubG9hZChQZW4KICAgICBtX3Rhc2stPnNldFBlbmRpbmdEb3du
bG9hZChwZW5kaW5nRG93bmxvYWQpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKTsKICAgICBtX3JlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKLSAgICBzaGFyZWRXaWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNlKTsKKyAgICBzaGFyZWRXaWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAog
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgQ3JlZGVudGlhbCYpPiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTMxNCwxMCArMzE2LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUKICAgICBtX2NsaWVudC5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5j
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFu
ZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotICAgIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgc2hhcmVkV2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
KTsKIH0KIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIw
MTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRSZXF1ZXN0OyB9CiAgICAgdm9pZCBjbGVhckN1cnJlbnRSZXF1ZXN0KCkgeyBtX2N1cnJlbnRS
ZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCk7IH0KIAotICAgIHZvaWQgY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIERvd25sb2FkSUQgcGVu
ZGluZ0Rvd25sb2FkSUQoKSB7IHJldHVybiBtX3Rhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7IH0K
ICAgICAKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQKLSAgICB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bDsKKyAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5ub3RT
aG93VVJMKCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAot
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdEFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrTG9h
ZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHNo
YXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgc2hhcmVk
V2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgIE5ldHdvcmtMb2FkQ2xpZW50JiBtX2Ns
aWVudDsKICAgICBjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVu
dC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0
ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhj
b25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIGVudW0gY2xh
c3MgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgeyBObywgWWVzIH07CiAgICAgdmly
dHVhbCBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDEsOSArNTAxLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVD
YW5BdXRoZW50aQogICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShkb3dubG9hZElELCBjYW5BdXRoZW50aWNhdGUpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElE
IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBkb3du
bG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3dubG9hZElELCByZXF1ZXN0
KTsKKyAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3dubG9h
ZElELCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGVuZGlu
Z0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMDE1
MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNl
bERvd25sb2FkKERvd25sb2FkSUQpOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9p
ZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJ
RCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVl
c3QoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9p
ZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKTsK
ICNlbmRpZgogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpCiAgICAgY2xlYW51
cCgpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkKIHsKICAgICArK21fcmVkaXJlY3RDb3VudDsKIApAQCAtNDI0LDcgKzQyNCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGkKICAgICAgICAgICAgIG1f
bmV0d29ya0xvYWQtPmNsZWFyQ3VycmVudFJlcXVlc3QoKTsKICAgICAgICAgICAgIG92ZXJyaWRl
blJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKICAgICAgICAgfQotICAgICAgICBjb250aW51
ZVdpbGxTZW5kUmVxdWVzdChvdmVycmlkZW5SZXF1ZXN0KTsKKyAgICAgICAgY29udGludWVXaWxs
U2VuZFJlcXVlc3QoV1RGTW92ZShvdmVycmlkZW5SZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgc2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6V2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkp
OwpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlZGkKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QpCiB7CiAgICAgTkVUV09SS1JFU09VUkNFTE9BREVSX0xPR19BTFdB
WVMoIkZvbGxvd2luZyByZWRpcmVjdCBvZiBuZXR3b3JrIHJlc291cmNlOiBsb2FkZXIgPSAlcCwg
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQpLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkp
OwogCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRp
bnVlV2lsbAogI2VuZGlmCiAKICAgICBpZiAobV9uZXR3b3JrTG9hZCkKLSAgICAgICAgbV9uZXR3
b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCk7CisgICAgICAgIG1f
bmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUobmV3UmVxdWVzdCkp
OwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGJvb2wpOwogI2VuZGlmCi0gICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOworICAgIHZvaWQg
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVx
dWVzdCk7CiAKICAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcmVkRGF0YSgpIHsgcmV0
dXJuIG1fYnVmZmVyZWREYXRhLmdldCgpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5j
KGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNT
eW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
Jikgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCB3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICB2b2lkIHdpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAg
ICBkZWxldGUgdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMDE1
MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsMTIgKzg3LDEyIEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnQKICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5j
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGlj
YXRlKTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQordm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERv
d25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKICAgICBhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRv
d25sb2FkSUQpOwogICAgIEFTU0VSVChwZW5kaW5nRG93bmxvYWQpOwogICAgIGlmIChwZW5kaW5n
RG93bmxvYWQpCi0gICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVl
c3QocmVxdWVzdCk7CisgICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxs
RGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3Jr
RGF0YVRhc2ssIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAg
ICAgc3RkOjpwYWlyPFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8UGVu
ZGluZ0Rvd25sb2FkPj4gZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCwgc3Rk
Ojp1bmlxdWVfcHRyPERvd25sb2FkPiYmKTsKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0
ZSk7Ci0gICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHdp
bGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKICNlbHNlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3du
bG9hZChjb25zdCBOCiAgICAgbV9uZXR3b3JrTG9hZC0+c2V0UGVuZGluZ0Rvd25sb2FkKCp0aGlz
KTsKIH0KIAotdm9pZCBQZW5kaW5nRG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6d2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpXaWxs
U2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVkaXJl
Y3RSZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSkpOwogfTsKICAgICAKLXZvaWQg
UGVuZGluZ0Rvd25sb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkK
IHsKLSAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0
KTsKKyAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG5l
d1JlcXVlc3QpKTsKIH0KIAogdm9pZCBQZW5kaW5nRG93bmxvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
IHByb3RlY3Rpb25TcGFjZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHJldmlzaW9uIDIwMTUy
NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBQZW5kaW5nRG93
bmxvYWQgOiBwdWJsaWMgTmV0d29ya0xvCiBwdWJsaWM6CiAgICAgUGVuZGluZ0Rvd25sb2FkKGNv
bnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYsIERvd25sb2FkSUQpOwogCi0gICAgdm9pZCBjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KTsKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShib29sIGNhbkF1dGhlbnRpY2F0ZSk7CiAKIHByaXZhdGU6ICAgIApAQCAtNTQsNyArNTQsNyBA
QCBwcml2YXRlOiAgICAKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
IHsgfQogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5j
KGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNT
eW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCB3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIFNob3Vs
ZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gU2hvdWxkQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2U6Ok5vOyB9OwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNo
VGltZSkgb3ZlcnJpZGUgeyB9OwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw3ICs2Myw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCiAgICAg
QVNTRVJUKCFtX25ldHdvcmtMb2FkKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OndpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBMT0coTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2
ZSByZXZhbGlkYXRpb24gZm9yICVzIGhpdCBhIHJlZGlyZWN0LCBhYm9ydGluZyB0aGUgbG9hZC4i
LCByZWRpcmVjdFJlc3BvbnNlLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIC8v
IFdlIGRyb3Agc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9ucyBpZiB0aGV5IHJlZGlyZWN0IGZvciBu
b3cgYXMgd2Ugd291bGQgbmVlZCB0byBub3RpZnkgV2ViQ29yZSBvZiBzdWNoIHJlZGlyZWN0cy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCShyZXZpc2lvbiAyMDE1MjQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlJikgb3ZlcnJpZGUgeyB9CiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjAxNTI0KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
azo6ZGlkQmVjb21lRG93bmxvYWQoCiAgICAgICAgIG1fY2xpZW50LT5kaWRCZWNvbWVEb3dubG9h
ZCgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpID09IDMwNyB8fCByZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA4KSB7CiAgICAgICAgIEFTU0VSVChtX2xhc3RIVFRQTWV0aG9kID09IHJlcXVlc3Qu
aHR0cE1ldGhvZCgpKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6
d2lsbFBlcmZvcm1IVFRQUmVkCiAgICAgfQogICAgIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgbV9jbGllbnQtPndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKHJlZGlyZWN0UmVzcG9uc2Us
IHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVx
dWVzdCksIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDE4ICs3
NSwxNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvCiAgICAgbV9j
b3JlTG9hZGVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnIiwg
cHJvcG9zZWRSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VC
UkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdCwgV2ViUmVzb3VyY2VMb2FkZXIgPSAlcCIsIHRoaXMpOwogCiAgICAgUmVmUHRyPFdlYlJl
c291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1Jl
cXVlc3QgPSBwcm9wb3NlZFJlcXVlc3Q7Ci0gICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRp
cmVjdChtX2NvcmVMb2FkZXIuZ2V0KCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQor
ICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBw
cm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gdXBkYXRlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBjbGll
bnRDcmVkZW50aWFsUG9saWN5IGluIGNhc2UgbG9hZGVyIHBvbGljeSBpcyBEb05vdEFza0NsaWVu
dEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHM/Ci0gICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RdKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKKyAgICBtX2NvcmVMb2FkZXItPndpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0
XShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghcHJvdGVjdC0+bV9j
b3JlTG9hZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNp
b24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CiAg
ICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNT
ZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280218</attachid>
            <date>2016-06-01 00:01:32 -0700</date>
            <delta_ts>2016-06-01 00:43:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160601000249.patch</filename>
            <type>text/plain</type>
            <size>52230</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA1LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQg
YmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMu
CisgICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
YXJvdW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBj
b3B5IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBh
bG9uZy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50
aWNzIHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAg
VGhlIGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2Ug
YSBub24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJl
dHVybnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpnZXRP
ckNyZWF0ZVJlYWRCdWZmZXIpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0Ns
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJl
c291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRpbmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNM
b2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNl
bmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VU
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE2LTA1LTMxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIGxhbWJk
YSBjYXB0dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTYsMTEgKzYxNiwxMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlTG9hZGVyOjpjYW5u
b3RTaG93CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhbm5vdFNob3dVUkxF
cnJvcihtX3JlcXVlc3QpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlm
IChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxs
YmFja0ZvclJlZGlyZWN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIHdpbGxTZW5k
UmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHJldHVybiBX
VEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIAogICAgIC8vIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0
cmVhbWluZ0NsaWVudCA6IHB1CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIGNoYXIqIGdldE9yQ3Jl
YXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBv
dmVycmlkZTsKICNlbmRpZgotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBpbnQgZW5jb2RlZExlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xMDg1LDggKzEwODUs
OSBAQCBjaGFyKiBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6Z2V0CiB9CiAjZW5kaWYK
IAotdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
CitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmJikKIHsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCkBAIC0yMDIsNyArMjAyLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogICAgIC8v
IENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1
ZXN0QXN5bmMoKS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwogCiAgICAgLy8gQ2FsbGVk
IGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYygpLgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCIKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDEwICszOSwxNSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3Vy
Y2VIYW5kbGVDbGllCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50
KCkKIHsKIH0KKyAgICAKK1Jlc291cmNlUmVxdWVzdCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmKQoreworICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOworfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKQordm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIC8qcmVkaXJlY3RSZXNw
b25zZSovKQogewotICAgIGhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7
CisgICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogCi0gICAgICAgIC8vIFJlcXVlc3QgbWF5IGJlIG1vZGlmaWVkLgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNl
Ki8pIHsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlc291cmNlUmVxdWVzdCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNl
SGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQpAQCAtODgsNyArODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNYSFIoKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCgpIHdoZW4gcmVhZHkuCi0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBjYWxsIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCiAgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTYgKzM2LDE2IEBAIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2EK
IHsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pCitSZXNvdXJjZVJlcXVlc3QgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVj
dCBjb3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgogICAgIGlmIChwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgcmVx
dWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVx
dWVzdCk7CiAKICAgICBBU1NFUlQobV9lcnJvci5pc051bGwoKSk7CiAgICAgbV9lcnJvciA9IHBs
YXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpOwogICAgIG1faXNEb25lID0gdHJ1ZTsKLSAgICByZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VI
YW5kbGUqKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVzb3VyY2VFcnJvciBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDggKzI4NywxMCBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKQogeworICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBmdW5jdGlvbmFsaXR5
IGluIFJlc291cmNlSGFuZGxlTWFjLm1tIHRoYXQgZG9lcyBub3QgaGF2ZSBjb3JyZXNwb25kaW5n
IGZ1bmN0aW9uYWxpdHkgaGVyZS4KKwogICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwo
KTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigpOwogICAgIGQtPm1fcGFzcyA9IHVybC5wYXNz
KCk7CkBAIC0zMTYsMTUgKzMxOCwxNSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJl
cXVlc3QoUmVzCiAKICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAg
ICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNsaWVu
dCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cisg
ICAgICAgIGF1dG8gbmV3UmVxdWVzdCA9IGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiAKICAgICAgICAg
Ly8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBp
ZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgotICAgICAgICBpZiAoIXJlcXVlc3QuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkgewor
ICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNz
aW9uLmdldCgpKTsKIAotICAgICAgICAgICAgZC0+bV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7
CisgICAgICAgICAgICBkLT5tX2N1cnJlbnRSZXF1ZXN0ID0gbmV3UmVxdWVzdDsKICAgICAgICAg
fQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAkocmV2
aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmUKICAgICAgICAgQVNTRVJUKHJlZGlyZWN0UmVzcG9uc2UpOwogCiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gY3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNm
UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIG1faGFuZGxlLT53aWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CisgICAgICAgIG1f
aGFuZGxlLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25z
ZS5nZXQoKSk7CiAgICAgfSk7CiAKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFw
aG9yZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJ
KHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsMTUgKzkyLDE1IEBAIENGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGwKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoaGFuZGxl
PSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gY3Jl
YXRlUmVzb3VyY2VSZXF1ZXN0KGNmUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0g
ICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLmdl
dCgpKTsKKyAgICBhdXRvIG5ld1JlcXVlc3QgPSBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KFdU
Rk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwogCi0gICAgaWYgKHJlcXVl
c3QuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNmUmVxdWVzdCA9IHJlcXVlc3Qu
Y2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBhdXRvIG5ld0NGUmVxdWVzdCA9IG5l
d1JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIAotICAgIENGUmV0YWluKGNm
UmVxdWVzdCk7Ci0gICAgcmV0dXJuIGNmUmVxdWVzdDsKKyAgICBDRlJldGFpbihuZXdDRlJlcXVl
c3QpOworICAgIHJldHVybiBuZXdDRlJlcXVlc3Q7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRS
ZXNvdXJjCiAgICAgZGF0YS5zd2FwKGNsaWVudC5tdXRhYmxlRGF0YSgpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291cmNlUmVxdWVz
dCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIEFTU0VSVCgh
cmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7CiAKQEAgLTQ4OSwyMyArNDg5LDI0IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICB9CiAKICAgICBpZiAoZC0+
bV91c2VzQXN5bmNDYWxsYmFja3MpIHsKLSAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVz
dEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBjbGllbnQo
KS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZWRpcmVjdFJlc3BvbnNlKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLSAgICAgICAg
Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICAgICAgYXV0byBuZXdSZXF1ZXN0ID0gY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0
aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIAogICAg
ICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lh
bGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgICAgIGlmICghcmVxdWVz
dC5pc051bGwoKSkKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9z
dG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkK
KyAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vz
c2lvbi5nZXQoKSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKG5ld1JlcXVlc3QpOwogICAgIH0K
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKIHsKICAgICBBU1NF
UlQoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpOwogCiAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5v
dCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50
IG92ZXIgSVBDLgotICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKICAg
ICBpZiAoIW5ld1JlcXVlc3QuaXNOdWxsKCkpCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0U3RvcmFn
ZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CiAgICAgWyhpZClkZWxlZ2F0ZSgp
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Om5ld1JlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhU
VFBCb2R5KV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
bW0JKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTc3LDExICs3Nyw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmUK
ICAgICAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3
aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJlY3RSZXNwb25zZTpub24tSFRUUCIsIG1faGFuZGxlLCBj
b25uZWN0aW9uLCBbbmV3UmVxdWVzdCBkZXNjcmlwdGlvbl0pOyAKICNlbmRpZgogCi0gICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBuZXdSZXF1ZXN0OwotCi0gICAgbV9oYW5kbGUtPndpbGxT
ZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLQotICAgIHJldHVybiByZXF1
ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0dXJuIG1faGFuZGxlLT53
aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkubnNVUkxSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0JKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDkgKzEyMiw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsKLQotICAgICAgICBtX2hh
bmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAg
ICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OwogICAgIH0pOwogCiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJ
U1BBVENIX1RJTUVfRk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNp
b24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCwxOCArNDY0LDE3IEBAIHN0
YXRpYyBib29sIHNob3VsZFJlZGlyZWN0QXNHRVQoU291cE1lc3MKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorc3RhdGljIHZv
aWQgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIC8vIHdpbGxTZW5kUmVxdWVzdCBtaWdo
dCBjYW5jZWwgdGhlIGxvYWQuCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0KHJl
cXVlc3QpOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVy
bmFsKCk7Ci0gICAgaWYgKHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChuZXdSZXF1ZXN0LnVy
bCgpLCBkLT5tX3Jlc3BvbnNlLnVybCgpKSkKLSAgICAgICAgYXBwbHlBdXRoZW50aWNhdGlvblRv
UmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3QsIHRydWUpOworICAgIGlmIChwcm90b2NvbEhvc3RB
bmRQb3J0QXJlRXF1YWwocmVxdWVzdC51cmwoKSwgZC0+bV9yZXNwb25zZS51cmwoKSkpCisgICAg
ICAgIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoaGFuZGxlLCByZXF1ZXN0LCB0cnVlKTsK
IAotICAgIGlmICghY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKGhhbmRsZSwg
bmV3UmVxdWVzdCkpIHsKKyAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhh
bmRsZShoYW5kbGUsIHJlcXVlc3QpKSB7CiAgICAgICAgIGQtPmNsaWVudCgpLT5jYW5ub3RTaG93
VVJMKGhhbmRsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MzIsMTEgKzUzMSwxMiBA
QCBzdGF0aWMgdm9pZCBkb1JlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoCiAKICAgICBjbGVhbnVw
U291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlKTsKIAotICAgIGlmIChkLT5jbGllbnQoKS0+dXNl
c0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGQtPmNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RB
c3luYyhoYW5kbGUsIG5ld1JlcXVlc3QsIGQtPm1fcmVzcG9uc2UpOwotICAgIGVsc2UgeworICAg
IGlmIChkLT5jbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZUNvcHkgPSBkLT5tX3Jlc3BvbnNlOworICAgICAgICBkLT5jbGll
bnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmMoaGFuZGxlLCBXVEZNb3ZlKG5ld1JlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlQ29weSkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIGQtPmNsaWVudCgp
LT53aWxsU2VuZFJlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCBkLT5tX3Jlc3BvbnNlKTsKLSAg
ICAgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3QpOwor
ICAgICAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KGhhbmRsZSwgV1RGTW92ZShuZXdS
ZXF1ZXN0KSk7CiAgICAgfQogCiB9CkBAIC0xMzY3LDEwICsxMzY3LDEwIEBAIHN0YXRpYyB2b2lk
IHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW4KICAgICAgICAgZC0+bV9jYW5jZWxsYWJsZS5n
ZXQoKSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFJlc291cmNlSGFu
ZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIEFTU0VSVCghY2xpZW50KCkgfHwgY2xpZW50KCkt
PnVzZXNBc3luY0NhbGxiYWNrcygpKTsKLSAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0
KHRoaXMsIHJlcXVlc3QpOworICAgIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QodGhpcywg
V1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0NCkKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisy
MDE2LTA1LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmVkdWNlIFJlc291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRl
UGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25s
b2FkOjpQZW5kaW5nRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93
bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGlu
Z0Rvd25sb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrOjpmaXJzdFJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNhbmNl
bCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWREaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkV2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93
bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6Y3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y2xlYXJD
dXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpwZW5kaW5nRG93
bmxvYWRJRCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGVuZGlu
Z0Rvd25sb2FkQ2FuY2VsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6UGluZ0xvYWQpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp+U3Bl
Y3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2
ZUxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRldGFjaEZyb21Db3JlTG9hZGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisKIDIwMTYtMDUtMzEgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbCBvdXQgcjIwMTQ4MSwgcjIwMTUyMzogMC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2Rl
LWxvYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCB0
eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpCiAKIGNsYXNzIE5ldHdvcmtE
YXRhVGFza0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdv
cmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBmaXJzdFJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX2ZpcnN0UmVxdWVzdDsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBjdXJyZW50UmVxdWVzdCgpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpOwot
ICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9E
b3dubG9hZChEb3dubG9hZCYpOwogICAgIGJvb2wgYWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmlj
YXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAg
IApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBOZXR3
b3JrTG9hZDo6Y2FuY2VsKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lk
IE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpCit2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIG1fY3VycmVudFJlcXVlc3QudXBkYXRlRnJvbURlbGVnYXRl
UHJlc2VydmluZ09sZFByb3BlcnRpZXMobmV3UmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSkpOwpAQCAtMTI0LDggKzEyNCwxMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzCiAgICAgICAgICAgICByZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAobV9oYW5kbGUp
Ci0gICAgICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXF1
ZXN0KTsKKyAgICB9IGVsc2UgaWYgKG1faGFuZGxlKSB7CisgICAgICAgIFJlc291cmNlUmVxdWVz
dCBjdXJyZW50UmVxdWVzdENvcHkgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgICAgICBtX2hhbmRs
ZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShjdXJyZW50UmVxdWVzdENvcHkpKTsK
KyAgICB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChyZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMTU2LDE1ICsxNTgsMTUgQEAgTmV0d29ya0xvYWRDbGllbnQ6OlNo
b3VsZENvbnRpbnVlRGlkUmVjZQogICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9u
c2UocmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OnNoYXJlZFdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gV2Ugb25seSBleHBlY3Qg
dG8gZ2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJjZUhhbmRsZSBh
cyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNl
LmlzTnVsbCgpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBv
bGRSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBhdXRvIG9sZFJlcXVlc3QgPSBXVEZN
b3ZlKG1fY3VycmVudFJlcXVlc3QpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0Owot
ICAgIG1fY2xpZW50LndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qob2xkUmVxdWVzdCwgcmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgbV9jbGllbnQud2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGly
ZWN0UmVzcG9uc2UpKTsKIH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC0xOTcsMTEg
KzE5OSwxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxvYWQoUGVuCiAgICAg
bV90YXNrLT5zZXRQZW5kaW5nRG93bmxvYWQocGVuZGluZ0Rvd25sb2FkKTsKIH0KIAotdm9pZCBO
ZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7
CiAgICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7Ci0g
ICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSk7Cisg
ICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgc3RkOjpmdW5jdGlv
bjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRp
YWwmKT4gY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTQsMTAgKzMxNiwxMCBAQCB2b2lkIE5ldHdv
cmtMb2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlCiAgICAgbV9jbGllbnQuZGlkRmFpbExvYWRp
bmcoZXJyb3IpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtMb2Fk
Ojp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBzaGFy
ZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdDsgfQogICAgIHZvaWQgY2xlYXJDdXJyZW50
UmVxdWVzdCgpIHsgbV9jdXJyZW50UmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCgp
OyB9CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3dubG9hZElEKCkgeyByZXR1cm4gbV90YXNrLT5w
ZW5kaW5nRG93bmxvYWRJRCgpOyB9CiAgICAgCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50
Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTc2LDcgKzc2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgLy8g
UmVzb3VyY2VIYW5kbGVDbGllbnQKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSos
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICBO
ZXR3b3JrTG9hZENsaWVudCYgbV9jbGllbnQ7CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzIG1fcGFyYW1ldGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVk
aXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpID0gMDsKICAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
IHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxLDkgKzUwMSw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGkKICAgICBkb3dubG9hZE1hbmFnZXIoKS5j
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZG93bmxvYWRJRCwg
Y2FuQXV0aGVudGljYXRlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJlcXVl
c3QoZG93bmxvYWRJRCwgcmVxdWVzdCk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVX
aWxsU2VuZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2FkSUQgZG93bmxv
YWRJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSAgICB2b2lk
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNpZGVQ
ZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24s
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTW9kZWwodWlu
dDMyX3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWxMb2FkaQogICAgIGNsZWFudXAoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgKyttX3JlZGlyZWN0Q291bnQ7
CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZWRpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkLT5jbGVhckN1cnJlbnRSZXF1ZXN0KCk7
CiAgICAgICAgICAgICBvdmVycmlkZW5SZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAg
ICAgIH0KLSAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3Qob3ZlcnJpZGVuUmVxdWVzdCk7
CisgICAgICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUob3ZlcnJpZGVuUmVxdWVz
dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpKTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogICAgIE5FVFdPUktS
RVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJGb2xsb3dpbmcgcmVkaXJlY3Qgb2YgbmV0d29yayBy
ZXNvdXJjZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01h
aW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQiLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEKSwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKICNlbmRpZgogCiAgICAgaWYgKG1fbmV0d29y
a0xvYWQpCi0gICAgICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG5l
d1JlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVz
dChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAy
MDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAjaWYgVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgotICAgIHZvaWQg
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0KTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpOwogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBidWZmZXJlZERhdGEoKSB7IHJldHVybiBtX2J1ZmZlcmVkRGF0YS5nZXQoKTsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZTsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBv
dmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRl
OworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShy
ZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
CiBwcml2YXRlOgotICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisg
ICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEy
ICs4NywxMiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50CiAgICAg
ICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9w
ZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKICAgICBBU1NFUlQocGVuZGluZ0Rvd25s
b2FkKTsKICAgICBpZiAocGVuZGluZ0Rvd25sb2FkKQotICAgICAgICBwZW5kaW5nRG93bmxvYWQt
PmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBwZW5kaW5nRG93bmxv
YWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lk
IERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5l
dHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
IGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgIHN0ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNr
Piwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IGRhdGFUYXNrQmVjYW1lRG93bmxv
YWRUYXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAgdm9p
ZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJ
RCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVl
c3QoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9p
ZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24o
TmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBj
b250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmlu
ZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxv
d092ZXJ3cml0ZSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHJldmlzaW9u
IDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5k
aW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgUGVuZGlu
Z0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoY29uc3QgTgogICAgIG1fbmV0d29ya0xvYWQtPnNl
dFBlbmRpbmdEb3dubG9hZCgqdGhpcyk7CiB9CiAKLXZvaWQgUGVuZGluZ0Rvd25sb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBQZW5kaW5nRG93
bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxTZW5k
UmVxdWVzdChXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25z
ZSkpKTsKIH07CiAgICAgCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9pZCBQ
ZW5kaW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVXaWxs
U2VuZFJlcXVlc3QobmV3UmVxdWVzdCk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUGVuZGluZ0Rvd25s
b2FkOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgUGVuZGluZ0Rvd25sb2FkIDogcHVibGljIE5ldHdvcmtMbwogcHVibGljOgog
ICAgIFBlbmRpbmdEb3dubG9hZChjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmLCBEb3dubG9h
ZElEKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogCiBwcml2YXRl
OiAgICAKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZTogICAgCiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBv
dmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
ZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBvdmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsg
cmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKICAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6On5T
cGVjdWxhdGl2ZUxvYWQoKQogICAgIEFTU0VSVCghbV9uZXR3b3JrTG9hZCk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3
b3JrUHJvY2VzcykgU3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIGZvciAlcyBoaXQgYSByZWRpcmVj
dCwgYWJvcnRpbmcgdGhlIGxvYWQuIiwgcmVkaXJlY3RSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAvLyBXZSBkcm9wIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbnMg
aWYgdGhleSByZWRpcmVjdCBmb3Igbm93IGFzIHdlIHdvdWxkIG5lZWQgdG8gbm90aWZ5IFdlYkNv
cmUgb2Ygc3VjaCByZWRpcmVjdHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlIHsgfQogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQogICAg
IGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwog
ICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
ZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0J
KHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKAogICAgICAgICBtX2Ns
aWVudC0+ZGlkQmVjb21lRG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtE
YXRhVGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDcgfHwgcmVkaXJlY3RS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwOCkgewogICAgICAgICBBU1NFUlQobV9sYXN0
SFRUUE1ldGhvZCA9PSByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgIH0KICAgICAKICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihyZWRpcmVjdFJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
ICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgZWxz
ZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSwxOCArNzUsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGV0
YWNoRnJvbUNvcmVMbwogICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHBy
b3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiBwcm9wb3NlZFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQog
ewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QsIFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCB0aGlz
KTsKIAogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAg
IFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcHJvcG9zZWRSZXF1ZXN0OwotICAgIGlmICht
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1h
eWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBuZXdSZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0
KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHVwZGF0ZSBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIgY2xpZW50Q3JlZGVudGlhbFBvbGljeSBpbiBjYXNlIGxvYWRlciBw
b2xpY3kgaXMgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzPwotICAgIG1f
Y29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0
UmVzcG9uc2UsIFtwcm90ZWN0XShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CisgICAgbV9j
b3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRp
cmVjdFJlc3BvbnNlLCBbcHJvdGVjdF0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewogICAg
ICAgICBpZiAoIXByb3RlY3QtPm1fY29yZUxvYWRlcikKICAgICAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280221</attachid>
            <date>2016-06-01 00:43:13 -0700</date>
            <delta_ts>2016-06-01 09:18:38 -0700</delta_ts>
            <desc>Fix the soup build</desc>
            <filename>158251.diff</filename>
            <type>text/plain</type>
            <size>53055</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNjBkYmNhLi4xMDAyY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTYtMDYtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZWR1Y2UgUmVzb3VyY2VSZXF1ZXN0IGNvcHlpbmcgaW4gbG9hZGluZyBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgy
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoZXJlIHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhjZXB0IGZl
d2VyIHVubmVjZXNzYXJ5IGNvcGllcy4KKyAgICAgICAgQmVmb3JlLCB3ZSB3b3VsZCBwYXNzIGEg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhcm91bmQsIGFuZCBpZiB3ZSBuZWVkZWQgdG8gbW9kaWZ5
IGl0CisgICAgICAgIHdlIHdvdWxkIGNvcHkgdGhlIHdob2xlIHRoaW5nLCBtb2RpZnkgdGhlIGNv
cHksIGFuZCBwYXNzIHRoZSBjb3B5IGFsb25nLiAgVGhpcyBjYW4gYmUKKyAgICAgICAgYWNjb21w
bGlzaGVkIHdpdGggbW92ZSBzZW1hbnRpY3Mgd2l0aG91dCB0aGUgbm93LXVubmVjZXNzYXJ5IGNv
cHkuCisgICAgICAgIAorICAgICAgICBUaGUgYmlnZ2VzdCBjb25jZXB0dWFsIGNoYW5nZSBpcyB0
aGF0IHRoZSBzeW5jaHJvbm91cyBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0
CisgICAgICAgIHVzZWQgdG8gdGFrZSBhIG5vbi1jb25zdCBSZXNvdXJjZVJlcXVlc3QmIGFuZCBt
b2RpZnkgaXQsIGJ1dCBub3cgaXQgcmV0dXJucyBhIG1vZGlmaWVkCisgICAgICAgIFJlc291cmNl
UmVxdWVzdCBpbnN0ZWFkLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93VVJMRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoUmVzb3VyY2VIYW5k
bGVTdHJlYW1pbmdDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcik6CisgICAgICAgIChSZXNv
dXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFJl
c291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6bG9hZGluZ1N5bmNo
cm9ub3VzWEhSKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQ6On5TeW5jaHJvbm91c0xvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
eW5jaHJvbm91c0xvYWRlckNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUgY29ubmVjdGlvbjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9uU2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVj
dGlvbjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNob3VsZFJlZGlyZWN0QXNHRVQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGludWVBZnRl
cldpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisKIDIwMTYtMDUtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb2Rlcm5pemUgbGFtYmRhIGNhcHR1cmVzIGluIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCBiOGYyY2U4Li5lNTY2ZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTYxNiwxMSArNjE2LDEyIEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VMb2FkZXI6
OmNhbm5vdFNob3dVUkxFcnJvcigpCiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgp
LmNhbm5vdFNob3dVUkxFcnJvcihtX3JlcXVlc3QpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJl
cXVlc3QgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKQogewogICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
LT5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3Qp
OwogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OworICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1Nl
bnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmMzRmYmQuLmU4YThiYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xODMsNyArMTgzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2FkKCk7CiAKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNs
aWVudAotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSos
IFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGZmZGIwNzIuLmQwZTFjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIFJlc291cmNl
SGFuZGxlU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50LCBwdWJs
aWMgU3RyZWFtCiAjaWYgVVNFKFNPVVApCiAgICAgICAgIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1
ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVycmlkZTsK
ICNlbmRpZgotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBpbnQgZW5jb2RlZExlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xMDg1LDggKzEwODUsOSBAQCBjaGFy
KiBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNp
emVfdCByZXF1ZXN0ZWRTaXplLAogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVTdHJl
YW1pbmdDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VSZXF1ZXN0IFJlc291cmNl
SGFuZGxlU3RyZWFtaW5nQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CisgICAgcmV0
dXJuIFdURk1vdmUocmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDQ3MGVmNWYuLjdiYjg4MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTEwNSw3ICsx
MDUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5k
bGUoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVAp
CkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJDbGllbnQoKTsKIAogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoKS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYpOwogCiAgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYygpLgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCAz
MWQ2NDc1Li5lYzYxN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzksMTUgQEAgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkKIFJlc291cmNlSGFuZGxlQ2xpZW50
Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKQogewogfQorICAgIAorUmVzb3VyY2VSZXF1ZXN0IFJl
c291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCit7CisgICAgcmV0dXJu
IFdURk1vdmUocmVxdWVzdCk7Cit9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxT
ZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNl
Ki8pCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlJiYgLypyZWRpcmVjdFJlc3BvbnNlKi8pCiB7Ci0gICAgaGFuZGxlLT5jb250aW51ZVdp
bGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBkOWUyMWI2Li5iMzM4MmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oCkBAIC02OSw4ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKIAotICAgICAgICAvLyBSZXF1ZXN0
IG1heSBiZSBtb2RpZmllZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IC8qcmVkaXJlY3RSZXNwb25zZSovKSB7IH0KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2Vu
dCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KQEAgLTg4LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhSKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQg
cmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoKSB3
aGVuIHJlYWR5LgotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICAgICAgLy8gQ2xp
ZW50IHdpbGwgY2FsbCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KSB3aGVuIHJlYWR5LgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCmluZGV4IDk5NDY4MmYuLjgzZTc5ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuY3BwCkBAIC0zNiwxNiArMzYsMTYgQEAgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6On5TeW5jaHJvbm91c0xvYWRlckNsaWVudCgpCiB7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RS
ZXNwb25zZSovKQorUmVzb3VyY2VSZXF1ZXN0IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRv
IGJlIGZpeGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QgY29ycmVjdGx5IGV2ZW4gZm9yIGNyb3Nz
LWRvbWFpbiByZXF1ZXN0cy4KICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGhh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogCiAgICAgQVNTRVJUKG1fZXJy
b3IuaXNOdWxsKCkpOwogICAgIG1fZXJyb3IgPSBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsK
ICAgICBtX2lzRG9uZSA9IHRydWU7Ci0gICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwor
ICAgIHJldHVybiB7IH07CiB9CiAKIGJvb2wgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaApp
bmRleCBkNDQyZDA1Li44NzdmOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCkBAIC00NSw3ICs0NSw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VFcnJvciBwbGF0
Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSBvdmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVl
c3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwCmluZGV4IDkwNmU2NjkuLmExZDU4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApA
QCAtMjg3LDggKzI4NywxMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0K
IH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3Zv
aWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogeworICAgIC8v
IEZJWE1FOiBUaGVyZSBpcyBmdW5jdGlvbmFsaXR5IGluIFJlc291cmNlSGFuZGxlTWFjLm1tIHRo
YXQgZG9lcyBub3QgaGF2ZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKwogICAg
IGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNl
cigpOwogICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CkBAIC0zMTYsMTUgKzMxOCwxNSBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogCiAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKICAgICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpCi0gICAgICAg
IGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKTsKKyAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOwogICAgIGVsc2Ugewot
ICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOworICAgICAgICBhdXRvIG5ld1JlcXVlc3QgPSBjbGllbnQoKS0+d2lsbFNlbmRS
ZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkp
OwogCiAgICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24s
IGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICAgICAgaWYg
KCFyZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICByZXF1ZXN0LnNldFN0b3JhZ2VTZXNz
aW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgICAgICBpZiAoIW5ld1JlcXVlc3Qu
aXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+
bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CiAKLSAgICAgICAgICAgIGQtPm1fY3VycmVudFJlcXVl
c3QgPSByZXF1ZXN0OworICAgICAgICAgICAgZC0+bV9jdXJyZW50UmVxdWVzdCA9IG5ld1JlcXVl
c3Q7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cAppbmRleCAxOTliZjAxLi44ZjMzNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbgogICAgICAg
ICBBU1NFUlQocmVkaXJlY3RSZXNwb25zZSk7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QgPSBjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY2ZSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
LmdldCgpKTsKLSAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlLmdldCgpKTsKKyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChX
VEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKICAgICB9KTsKIAogICAg
IGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVW
RVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCmluZGV4IDg0ZGNhOTYuLmQ1YTRkZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5jcHAKQEAgLTkyLDE1ICs5MiwxNSBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVl
cwogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChoYW5kbGU9JXApICglcykiLCBt
X2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBjcmVhdGVSZXNvdXJjZVJl
cXVlc3QoY2ZSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKLSAgICBtX2hhbmRsZS0+
d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworICAgIGF1
dG8gbmV3UmVxdWVzdCA9IG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0
KSwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CiAKLSAgICBpZiAocmVxdWVzdC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgY2ZSZXF1ZXN0ID0gcmVxdWVzdC5jZlVSTFJlcXVlc3Qo
VXBkYXRlSFRUUEJvZHkpOworICAgIGF1dG8gbmV3Q0ZSZXF1ZXN0ID0gbmV3UmVxdWVzdC5jZlVS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogCi0gICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsKLSAg
ICByZXR1cm4gY2ZSZXF1ZXN0OworICAgIENGUmV0YWluKG5ld0NGUmVxdWVzdCk7CisgICAgcmV0
dXJuIG5ld0NGUmVxdWVzdDsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0KaW5kZXggMzY2YTk2OS4uY2EwNjUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTQ0MCw3ICs0
NDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgIGRhdGEuc3dhcChjbGllbnQubXV0
YWJsZURhdGEoKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkKIHsKICAgICBBU1NFUlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwogCkBA
IC00ODksMjMgKzQ4OSwyNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIH0KIAogICAg
IGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykgewotICAgICAgICBjbGllbnQoKS0+d2lsbFNl
bmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAg
IGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9IGVs
c2UgewogICAgICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwot
ICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOworICAgICAgICBhdXRvIG5ld1JlcXVlc3QgPSBjbGllbnQoKS0+d2lsbFNlbmRS
ZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkp
OwogCiAgICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24s
IGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICAgICAgaWYg
KCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lv
bihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgaWYgKCFuZXdSZXF1ZXN0Lmlz
TnVsbCgpKQorICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0
b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIG5ld1JlcXVlc3Q7CiAgICAgfQog
fQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogICAgIEFTU0VS
VChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcyk7CiAKICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90
IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQg
b3ZlciBJUEMuCi0gICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSByZXF1ZXN0OwogICAg
IGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdl
U2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKICAgICBbKGlkKWRlbGVnYXRlKCkg
Y29udGludWVXaWxsU2VuZFJlcXVlc3Q6bmV3UmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCmluZGV4
IDY3YjBlOTEuLmZmMTU0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZS5tbQpAQCAtNzcsMTEgKzc3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAg
ICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNl
bmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhUVFAiLCBtX2hhbmRsZSwgY29ubmVj
dGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dKTsgCiAjZW5kaWYKIAotICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsKLQotICAgIG1faGFuZGxlLT53aWxsU2VuZFJl
cXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0KLSAgICByZXR1cm4gcmVxdWVzdC5u
c1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBtX2hhbmRsZS0+d2lsbFNl
bmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpLm5zVVJMUmVxdWVzdChVcGRh
dGVIVFRQQm9keSk7CiB9CiAKIC0gKEJPT0wpY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXgg
OWRkNGE2YS4uMDJmMWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMTIyLDkgKzEyMiw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBuZXdSZXF1ZXN0OwotCi0gICAgICAg
IG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cisg
ICAgICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgfSk7CiAKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9y
ZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggZDRj
YzA3NC4uYTBlNDNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTQ2NCwxOCArNDY0LDE3
IEBAIHN0YXRpYyBib29sIHNob3VsZFJlZGlyZWN0QXNHRVQoU291cE1lc3NhZ2UqIG1lc3NhZ2Us
IFVSTCYgbmV3VVJMLCBib29sIGNyb3NzT3JpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0
aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3N0YXRpYyB2b2lkIGNvbnRpbnVl
QWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIHsKICAgICAvLyB3aWxsU2VuZFJlcXVlc3QgbWlnaHQgY2FuY2VsIHRo
ZSBsb2FkLgogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0KTsKICAg
ICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwotICAg
IGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobmV3UmVxdWVzdC51cmwoKSwgZC0+bV9y
ZXNwb25zZS51cmwoKSkpCi0gICAgICAgIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoaGFu
ZGxlLCBuZXdSZXF1ZXN0LCB0cnVlKTsKKyAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKHJlcXVlc3QudXJsKCksIGQtPm1fcmVzcG9uc2UudXJsKCkpKQorICAgICAgICBhcHBseUF1
dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KGhhbmRsZSwgcmVxdWVzdCwgdHJ1ZSk7CiAKLSAgICBpZiAo
IWNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZShoYW5kbGUsIG5ld1JlcXVlc3Qp
KSB7CisgICAgaWYgKCFjcmVhdGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoaGFuZGxl
LCByZXF1ZXN0KSkgewogICAgICAgICBkLT5jbGllbnQoKS0+Y2Fubm90U2hvd1VSTChoYW5kbGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMyLDExICs1MzEsMTIgQEAgc3RhdGljIHZv
aWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogCiAgICAgY2xlYW51cFNvdXBS
ZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZSk7CiAKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
Q29weSA9IGQtPm1fcmVzcG9uc2U7CiAgICAgaWYgKGQtPmNsaWVudCgpLT51c2VzQXN5bmNDYWxs
YmFja3MoKSkKLSAgICAgICAgZC0+Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKGhhbmRs
ZSwgbmV3UmVxdWVzdCwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGQtPmNsaWVudCgpLT53aWxs
U2VuZFJlcXVlc3RBc3luYyhoYW5kbGUsIFdURk1vdmUobmV3UmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2VDb3B5KSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGQtPmNsaWVudCgpLT53aWxsU2VuZFJl
cXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCBkLT5tX3Jlc3BvbnNlKTsKLSAgICAgICAgY29udGlu
dWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3QpOworICAgICAgICBhdXRv
IHJlcXVlc3QgPSBkLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KGhhbmRsZSwgV1RGTW92ZShu
ZXdSZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZUNvcHkpKTsKKyAgICAgICAgY29udGludWVBZnRl
cldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0KIAogfQpA
QCAtMTM2NywxMCArMTM2NywxMCBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCos
IEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgICAgIGQtPm1f
Y2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIWNsaWVudCgp
IHx8IGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7Ci0gICAgY29udGludWVBZnRlcldp
bGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0KTsKKyAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRS
ZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxl
Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhmNmQ0ZS4uZmY0
Y2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE2LTA2LTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJlc291
cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGlu
YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpm
aXJzdFJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkOjpzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZDo6c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y3VycmVudFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y2xlYXJDdXJyZW50UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpwZW5kaW5nRG93bmxvYWRJRCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
Ojpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAg
ICAoV2ViS2l0OjpQaW5nTG9hZDo6UGluZ0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRp
ZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6
OmRldGFjaEZyb21Db3JlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmg6CisKIDIwMTYtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjIwMTQ4MSwgcjIw
MTUyMzogMC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2RlLWxvYWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKaW5kZXggNGZlYjZlZi4uMWNhNjViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAg
LTg3LDEyICs4NywxMiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQgZAogICAgICAgICBwZW5kaW5n
RG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
YW5BdXRoZW50aWNhdGUpOwogfQogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogewogICAgIGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25s
b2Fkcy5nZXQoZG93bmxvYWRJRCk7CiAgICAgQVNTRVJUKHBlbmRpbmdEb3dubG9hZCk7CiAgICAg
aWYgKHBlbmRpbmdEb3dubG9hZCkKLSAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jb250aW51ZVdp
bGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jb250aW51
ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1h
bmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRh
c2smIG5ldHdvcmtEYXRhVGFzaywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCA0YTAwNzJhLi43ZDAzOGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIHN0ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiwgc3RkOjp1bmlx
dWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25s
b2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAgdm9pZCBjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5B
dXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAg
ICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFU
YXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBjb250aW51ZURlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlv
biwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAppbmRleCBlYmExMGNhLi42MGIyNzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIFBlbmRpbmdEb3dubG9hZDo6
UGVuZGluZ0Rvd25sb2FkKGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
RG93bmxvCiAgICAgbV9uZXR3b3JrTG9hZC0+c2V0UGVuZGluZ0Rvd25sb2FkKCp0aGlzKTsKIH0K
IAotdm9pZCBQZW5kaW5nRG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpXaWxsU2VuZFJl
cXVlc3QocmVkaXJlY3RSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSk7CisgICAgc2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVkaXJlY3RSZXF1
ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSkpOwogfTsKICAgICAKLXZvaWQgUGVuZGlu
Z0Rvd25sb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG5ld1JlcXVlc3QpCit2b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKIHsKLSAg
ICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0KTsKKyAg
ICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG5ld1JlcXVl
c3QpKTsKIH0KIAogdm9pZCBQZW5kaW5nRG93bmxvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCAxYjA3ZDNiLi4zYzExY2NjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFBlbmRpbmdEb3dubG9hZCA6
IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBw
dWJsaWM6CiAgICAgUGVuZGluZ0Rvd25sb2FkKGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYs
IERvd25sb2FkSUQpOwogCi0gICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSk7CiAK
IHByaXZhdGU6ICAgIApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZSB7IHJldHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CiAgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZSB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IDBhNzhhZGEu
LmI3ZjQ1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCkBAIC02OCw3ICs2OCw3IEBAIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFdl
YkNvcmU6OlBvbGljeUFjdGlvbik+IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7CiAKIGNsYXNz
IE5ldHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKQEAgLTEyNiw3ICsxMjYs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBmaXJzdFJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UmVxdWVzdDsgfQogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBjdXJyZW50UmVxdWVzdCgpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSgpOwotICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0
ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwogICAgIGJvb2wgYWxsb3dzU3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCmluZGV4IDU2MDg5YmYuLjNhYjBiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIE5ldHdvcmtM
b2FkOjpjYW5jZWwoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgTmV0
d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgbV9jdXJyZW50UmVxdWVzdC51cGRhdGVGcm9tRGVsZWdhdGVQcmVz
ZXJ2aW5nT2xkUHJvcGVydGllcyhuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhU
VFBCb2R5KSk7CkBAIC0xMjQsOCArMTI0LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxCiAg
ICAgICAgICAgICByZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAjZW5kaWYKICAgICAg
ICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5j
b250aW51ZVdpbGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0KTsKKyAgICB9IGVsc2UgaWYg
KG1faGFuZGxlKSB7CisgICAgICAgIFJlc291cmNlUmVxdWVzdCBjdXJyZW50UmVxdWVzdENvcHkg
PSBtX2N1cnJlbnRSZXF1ZXN0OworICAgICAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShjdXJyZW50UmVxdWVzdENvcHkpKTsKKyAgICB9CiAKICNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQogICAgIGlmIChyZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTU2
LDE1ICsxNTgsMTUgQEAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIE5ldHdvcmtMb2FkOjpzaGFyZWREaWRSZWNlaXYKICAgICByZXR1cm4gbV9jbGll
bnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6
c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5l
dHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAg
IC8vIFdlIG9ubHkgZXhwZWN0IHRvIGdldCB0aGUgd2lsbFNlbmRSZXF1ZXN0IGNhbGxiYWNrIGZy
b20gUmVzb3VyY2VIYW5kbGUgYXMgdGhlIHJlc3VsdCBvZiBhIHJlZGlyZWN0LgogICAgIEFTU0VS
VCghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAotICAgIGF1dG8gb2xkUmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3Q7CisgICAgYXV0
byBvbGRSZXF1ZXN0ID0gV1RGTW92ZShtX2N1cnJlbnRSZXF1ZXN0KTsKICAgICBtX2N1cnJlbnRS
ZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBtX2NsaWVudC53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KG9sZFJlcXVlc3QsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIG1fY2xpZW50Lndp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShvbGRSZXF1ZXN0KSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQpAQCAtMTk3LDExICsxOTksMTEgQEAgdm9pZCBOZXR3b3JrTG9hZDo6c2V0UGVuZGlu
Z0Rvd25sb2FkKFBlbmRpbmdEb3dubG9hZCYgcGVuZGluZ0Rvd25sb2FkKQogICAgIG1fdGFzay0+
c2V0UGVuZGluZ0Rvd25sb2FkKHBlbmRpbmdEb3dubG9hZCk7CiB9CiAKLXZvaWQgTmV0d29ya0xv
YWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKCFtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIG1f
cmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOwotICAgIHNoYXJl
ZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9uc2UpOworICAgIHNoYXJl
ZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZChB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJik+IGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMzE0LDEwICszMTYsMTAgQEAgdm9pZCBOZXR3b3JrTG9hZDo6
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKICAgICBtX2NsaWVudC5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBo
YW5kbGUgPT0gbV9oYW5kbGUpOwotICAgIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIH0K
IAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjY2FhYTFiLi4xMjNhNjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3Vy
cmVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRSZXF1ZXN0OyB9CiAgICAgdm9p
ZCBjbGVhckN1cnJlbnRSZXF1ZXN0KCkgeyBtX2N1cnJlbnRSZXF1ZXN0ID0gV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0KCk7IH0KIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpOwogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIERvd25sb2FkSUQgcGVuZGluZ0Rvd25sb2FkSUQoKSB7IHJl
dHVybiBtX3Rhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7IH0KICAgICAKICAgICAvLyBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQKLSAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwpAQCAtNzYs
NyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5ub3RTaG93VVJMKCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAotICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNl
bmREYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2ln
bmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTE3LDcgKzExNyw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKTsKIAogICAgIE5ldHdvcmtMb2FkQ2xpZW50JiBtX2NsaWVudDsKICAgICBjb25zdCBOZXR3
b3JrTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggOThmNWE0OC4uZmNkMDFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVu
dC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkgPSAwOwogICAgIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UgeyBObywgWWVzIH07CiAgICAgdmlydHVhbCBTaG91bGRDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGYwY2ZiNWEuLmI5ODM3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUwMSw5ICs1MDEsOSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93
bmxvYWRJRCBkbwogICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShkb3dubG9hZElELCBjYW5BdXRoZW50aWNhdGUpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElE
IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBkb3du
bG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3dubG9hZElELCByZXF1ZXN0
KTsKKyAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3dubG9h
ZElELCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGVuZGlu
Z0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYzI4MGY5Ni4uZGYyNDNk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERv
d25sb2FkSUQpOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5B
dXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAg
ICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2Fk
SUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKTsKICNlbmRpZgogICAg
IHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmZjYxZWRh
Li4zYTBjMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAgICAgY2xlYW51cCgpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICArK21fcmVkaXJlY3RDb3VudDsKIApAQCAt
NDI0LDcgKzQyNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxCiAgICAgICAgICAgICBtX25l
dHdvcmtMb2FkLT5jbGVhckN1cnJlbnRSZXF1ZXN0KCk7CiAgICAgICAgICAgICBvdmVycmlkZW5S
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgIH0KLSAgICAgICAgY29udGludWVX
aWxsU2VuZFJlcXVlc3Qob3ZlcnJpZGVuUmVxdWVzdCk7CisgICAgICAgIGNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KFdURk1vdmUob3ZlcnJpZGVuUmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKTsK
QEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcQogI2VuZGlmCiB9CiAK
LXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkK
IHsKICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiRm9sbG93aW5nIHJlZGly
ZWN0IG9mIG5ldHdvcmsgcmVzb3VyY2U6IGxvYWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFt
ZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkIiwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX3BhcmFtZXRlcnMud2ViUGFnZUlE
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCksIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKQEAgLTQ1Niw3ICs0NTYs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZQogI2VuZGlmCiAKICAgICBpZiAobV9uZXR3b3Jr
TG9hZCkKLSAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QobmV3
UmVxdWVzdCk7CisgICAgICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KFdURk1vdmUobmV3UmVxdWVzdCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCA5NmJjMmVlLi42MjEx
NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgotICAgIHZvaWQgY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1
ZXN0KTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QpOwogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZm
ZXJlZERhdGEoKSB7IHJldHVybiBtX2J1ZmZlcmVkRGF0YS5nZXQoKTsgfQogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZTsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlk
ZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOworICAg
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggYzQ1NjZhNS4u
ZDFkOTk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAg
ZGVsZXRlIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBh
MTEzMjI4Li4yNjk3MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVMb2FkKCkKICAg
ICBBU1NFUlQoIW1fbmV0d29ya0xvYWQpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6d2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFNwZWN1bGF0
aXZlIHJldmFsaWRhdGlvbiBmb3IgJXMgaGl0IGEgcmVkaXJlY3QsIGFib3J0aW5nIHRoZSBsb2Fk
LiIsIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
Ly8gV2UgZHJvcCBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb25zIGlmIHRoZXkgcmVkaXJlY3QgZm9y
IG5vdyBhcyB3ZSB3b3VsZCBuZWVkIHRvIG5vdGlmeSBXZWJDb3JlIG9mIHN1Y2ggcmVkaXJlY3Rz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBlY2EyNjVjLi5mMjlkN2Jj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNTYsNyArNTYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGUgeyB9CiAg
ICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3Qg
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgb3ZlcnJpZGUgeyB9CiAgICAgYm9vbCBpc1N5bmNo
cm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHdpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOworICAgIHZv
aWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNo
VGltZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDcxZWIzMDIuLmYyYzZj
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKCkKICAgICAgICAgbV9jbGllbnQtPmRpZEJl
Y29tZURvd25sb2FkKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2s6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChyZWRpcmVj
dFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA3IHx8IHJlZGlyZWN0UmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA9PSAzMDgpIHsKICAgICAgICAgQVNTRVJUKG1fbGFzdEhUVFBNZXRob2Qg
PT0gcmVxdWVzdC5odHRwTWV0aG9kKCkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlCiAgICAgfQogICAgIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9j
bGllbnQtPndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKHJlZGlyZWN0UmVzcG9uc2UsIHJlcXVl
c3QsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCks
IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCBlYjMyYWEyLi5hZWY0MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc1LDE4ICs3NSwxNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcigpCiAgICAgbV9jb3Jl
TG9hZGVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnIiwgcHJv
cG9zZWRSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVT
T1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dCwgV2ViUmVzb3VyY2VMb2FkZXIgPSAlcCIsIHRoaXMpOwogCiAgICAgUmVmUHRyPFdlYlJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVl
c3QgPSBwcm9wb3NlZFJlcXVlc3Q7Ci0gICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVj
dChtX2NvcmVMb2FkZXIuZ2V0KCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQorICAg
IGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBwcm9w
b3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgdG8gdXBkYXRlIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBjbGllbnRD
cmVkZW50aWFsUG9saWN5IGluIGNhc2UgbG9hZGVyIHBvbGljeSBpcyBEb05vdEFza0NsaWVudEZv
ckNyb3NzT3JpZ2luQ3JlZGVudGlhbHM/Ci0gICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVl
c3QoV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RdKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKKyAgICBtX2NvcmVMb2FkZXItPndpbGxTZW5kUmVxdWVz
dChXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0XShS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghcHJvdGVjdC0+bV9jb3Jl
TG9hZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDU2YWM4YjAuLjdm
N2FhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280242</attachid>
            <date>2016-06-01 09:18:42 -0700</date>
            <delta_ts>2016-06-01 11:16:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160601092001.patch</filename>
            <type>text/plain</type>
            <size>52626</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA2LTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQg
YmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMu
CisgICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
YXJvdW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBj
b3B5IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBh
bG9uZy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50
aWNzIHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAg
VGhlIGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2Ug
YSBub24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJl
dHVybnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpnZXRP
ckNyZWF0ZVJlYWRCdWZmZXIpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0Ns
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJl
c291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRpbmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNM
b2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNl
bmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VU
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE2LTA1LTMxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIGxhbWJk
YSBjYXB0dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTYsMTEgKzYxNiwxMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlTG9hZGVyOjpjYW5u
b3RTaG93CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhbm5vdFNob3dVUkxF
cnJvcihtX3JlcXVlc3QpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlm
IChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxs
YmFja0ZvclJlZGlyZWN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIHdpbGxTZW5k
UmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHJldHVybiBX
VEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIAogICAgIC8vIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0
cmVhbWluZ0NsaWVudCA6IHB1CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIGNoYXIqIGdldE9yQ3Jl
YXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBv
dmVycmlkZTsKICNlbmRpZgotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBpbnQgZW5jb2RlZExlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xMDg1LDggKzEwODUs
OSBAQCBjaGFyKiBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6Z2V0CiB9CiAjZW5kaWYK
IAotdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
CitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmJikKIHsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCkBAIC0yMDIsNyArMjAyLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogICAgIC8v
IENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1
ZXN0QXN5bmMoKS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwogCiAgICAgLy8gQ2FsbGVk
IGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYygpLgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCIKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDEwICszOSwxNSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3Vy
Y2VIYW5kbGVDbGllCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50
KCkKIHsKIH0KKyAgICAKK1Jlc291cmNlUmVxdWVzdCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmKQoreworICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOworfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKQordm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIC8qcmVkaXJlY3RSZXNw
b25zZSovKQogewotICAgIGhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7
CisgICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogCi0gICAgICAgIC8vIFJlcXVlc3QgbWF5IGJlIG1vZGlmaWVkLgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNl
Ki8pIHsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlc291cmNlUmVxdWVzdCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNl
SGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQpAQCAtODgsNyArODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNYSFIoKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCgpIHdoZW4gcmVhZHkuCi0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBjYWxsIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCiAgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTYgKzM2LDE2IEBAIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2EK
IHsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pCitSZXNvdXJjZVJlcXVlc3QgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVj
dCBjb3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgogICAgIGlmIChwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgcmVx
dWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVx
dWVzdCk7CiAKICAgICBBU1NFUlQobV9lcnJvci5pc051bGwoKSk7CiAgICAgbV9lcnJvciA9IHBs
YXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpOwogICAgIG1faXNEb25lID0gdHJ1ZTsKLSAgICByZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VI
YW5kbGUqKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVzb3VyY2VFcnJvciBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDggKzI4NywxMCBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291cmNlSGFuZGxlIFJlc291cmNlSGFuZGxlOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgLy8gRklYTUU6IFRoZXJlIGlzIGZ1bmN0aW9u
YWxpdHkgaW4gUmVzb3VyY2VIYW5kbGVNYWMubW0gdGhhdCBkb2VzIG5vdCBoYXZlIGNvcnJlc3Bv
bmRpbmcgZnVuY3Rpb25hbGl0eSBoZXJlLgorCiAgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0
LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNzID0gdXJs
LnBhc3MoKTsKQEAgLTMxNSwxOCArMzE3LDIwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxT
ZW5kUmVxdWVzdChSZXMKICAgICB9CiAKICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwotICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAg
Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwotICAgIGVsc2UgewotICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRo
aXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIGlmIChkLT5tX3VzZXNBc3luY0Nh
bGxiYWNrcykgeworICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorICAgIAorICAgIGF1dG8gbmV3UmVxdWVzdCA9IGNsaWVudCgpLT53
aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSk7CiAKLSAgICAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUg
c2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgotICAg
ICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0U3Rv
cmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgLy8gQ2xpZW50IGNh
bGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVz
dCBpcyBzZW50IG92ZXIgSVBDLgorICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkgeworICAg
ICAgICBuZXdSZXF1ZXN0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0
KCkpOwogCi0gICAgICAgICAgICBkLT5tX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICAg
ICAgfQorICAgICAgICBkLT5tX2N1cnJlbnRSZXF1ZXN0ID0gbmV3UmVxdWVzdDsKICAgICB9Cisg
ICAgcmV0dXJuIG5ld1JlcXVlc3Q7CiB9CiAKIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIENGVVJMUmVxdWVzdFJl
ZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKICAgICAgICAgQVNTRVJUKHJlZGlyZWN0UmVzcG9u
c2UpOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gY3JlYXRlUmVzb3VyY2VS
ZXF1ZXN0KGNmUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Ci0gICAgICAgIG1faGFu
ZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7Cisg
ICAgICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJl
Y3RSZXNwb25zZS5nZXQoKSk7CiAgICAgfSk7CiAKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2Fp
dChtX3NlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTUgKzkyLDE1IEBAIENGVVJMUmVxdWVzdFJlZiBT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGwKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVl
c3QoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0ID0gY3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNmUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5n
ZXQoKSk7Ci0gICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlLmdldCgpKTsKKyAgICBhdXRvIG5ld1JlcXVlc3QgPSBtX2hhbmRsZS0+d2lsbFNlbmRS
ZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwogCi0gICAg
aWYgKHJlcXVlc3QuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmIChuZXdSZXF1
ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNmUmVxdWVzdCA9
IHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBhdXRvIG5ld0NGUmVx
dWVzdCA9IG5ld1JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIAotICAgIENG
UmV0YWluKGNmUmVxdWVzdCk7Ci0gICAgcmV0dXJuIGNmUmVxdWVzdDsKKyAgICBDRlJldGFpbihu
ZXdDRlJlcXVlc3QpOworICAgIHJldHVybiBuZXdDRlJlcXVlc3Q7CiB9CiAKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjAxNTI0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0
Zm9ybUxvYWRSZXNvdXJjCiAgICAgZGF0YS5zd2FwKGNsaWVudC5tdXRhYmxlRGF0YSgpKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291
cmNlUmVxdWVzdCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAg
IEFTU0VSVCghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7CiAKQEAgLTQ4OSwyMyArNDg5LDI0
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICB9CiAKICAg
ICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpIHsKLSAgICAgICAgY2xpZW50KCktPndpbGxT
ZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
Ci0gICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSk7Ci0KLSAgICAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0
aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgot
ICAgICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXF1ZXN0LnNldFN0
b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgICAgICBjbGllbnQo
KS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZWRpcmVjdFJlc3BvbnNlKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQorCisgICAgUmVm
PFJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKyAgICBhdXRvIG5ld1JlcXVl
c3QgPSBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOworCisgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBw
cmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92
ZXIgSVBDLgorICAgIGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkKKyAgICAgICAgbmV3UmVxdWVz
dC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICByZXR1
cm4gbmV3UmVxdWVzdDsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBSZXNvdXJjZUhh
bmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dCkKIHsKICAgICBBU1NFUlQoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpOwogCiAgICAgLy8gQ2xp
ZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUg
cmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgotICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0
ID0gcmVxdWVzdDsKICAgICBpZiAoIW5ld1JlcXVlc3QuaXNOdWxsKCkpCiAgICAgICAgIG5ld1Jl
cXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CiAgICAg
WyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Om5ld1JlcXVlc3QubnNVUkxS
ZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUubW0JKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc3LDExICs3Nyw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmUKICAgICAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJlY3RSZXNwb25zZTpub24tSFRU
UCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3UmVxdWVzdCBkZXNjcmlwdGlvbl0pOyAKICNl
bmRpZgogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBuZXdSZXF1ZXN0OwotCi0gICAg
bV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLQot
ICAgIHJldHVybiByZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0
dXJuIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSkubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoQk9PTCljb25uZWN0aW9u
U2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDkgKzEyMiw3IEBAIC0gKE5TVVJM
UmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmUKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsK
LQotICAgICAgICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOworICAgICAgICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwogICAgIH0pOwogCiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQo
bV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCwx
OCArNDY0LDE3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlZGlyZWN0QXNHRVQoU291cE1lc3MKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQorc3RhdGljIHZvaWQgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIC8vIHdpbGxT
ZW5kUmVxdWVzdCBtaWdodCBjYW5jZWwgdGhlIGxvYWQuCiAgICAgaWYgKGhhbmRsZS0+Y2FuY2Vs
bGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVz
dCBuZXdSZXF1ZXN0KHJlcXVlc3QpOwogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7Ci0gICAgaWYgKHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChuZXdSZXF1ZXN0LnVybCgpLCBkLT5tX3Jlc3BvbnNlLnVybCgpKSkKLSAgICAgICAgYXBwbHlB
dXRoZW50aWNhdGlvblRvUmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3QsIHRydWUpOworICAgIGlm
IChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwocmVxdWVzdC51cmwoKSwgZC0+bV9yZXNwb25z
ZS51cmwoKSkpCisgICAgICAgIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoaGFuZGxlLCBy
ZXF1ZXN0LCB0cnVlKTsKIAotICAgIGlmICghY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9y
SGFuZGxlKGhhbmRsZSwgbmV3UmVxdWVzdCkpIHsKKyAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1ZXN0
QW5kTWVzc2FnZUZvckhhbmRsZShoYW5kbGUsIHJlcXVlc3QpKSB7CiAgICAgICAgIGQtPmNsaWVu
dCgpLT5jYW5ub3RTaG93VVJMKGhhbmRsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01
MzIsMTEgKzUzMSwxMiBAQCBzdGF0aWMgdm9pZCBkb1JlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBo
CiAKICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlKTsKIAorICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2VDb3B5ID0gZC0+bV9yZXNwb25zZTsKICAgICBpZiAoZC0+Y2xp
ZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQotICAgICAgICBkLT5jbGllbnQoKS0+d2lsbFNl
bmRSZXF1ZXN0QXN5bmMoaGFuZGxlLCBuZXdSZXF1ZXN0LCBkLT5tX3Jlc3BvbnNlKTsKKyAgICAg
ICAgZC0+Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKGhhbmRsZSwgV1RGTW92ZShuZXdS
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZUNvcHkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgZC0+
Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3QsIGQtPm1fcmVzcG9u
c2UpOwotICAgICAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KGhhbmRsZSwgbmV3UmVx
dWVzdCk7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IGQtPmNsaWVudCgpLT53aWxsU2VuZFJlcXVl
c3QoaGFuZGxlLCBXVEZNb3ZlKG5ld1JlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlQ29weSkpOwor
ICAgICAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KGhhbmRsZSwgV1RGTW92ZShyZXF1
ZXN0KSk7CiAgICAgfQogCiB9CkBAIC0xMzY3LDEwICsxMzY3LDEwIEBAIHN0YXRpYyB2b2lkIHJl
YWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW4KICAgICAgICAgZC0+bV9jYW5jZWxsYWJsZS5nZXQo
KSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQogewogICAgIEFTU0VSVCghY2xpZW50KCkgfHwgY2xpZW50KCktPnVz
ZXNBc3luY0NhbGxiYWNrcygpKTsKLSAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHRo
aXMsIHJlcXVlc3QpOworICAgIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QodGhpcywgV1RG
TW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0NCkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE2
LTA2LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVkdWNlIFJlc291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2Fk
OjpQZW5kaW5nRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxv
YWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rv
d25sb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpmaXJzdFJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNhbmNlbCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
Y3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y2xlYXJDdXJy
ZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpwZW5kaW5nRG93bmxv
YWRJRCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGVuZGluZ0Rv
d25sb2FkQ2FuY2VsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6UGluZ0xvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp+U3BlY3Vs
YXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxv
YWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRldGFjaEZyb21Db3JlTG9hZGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisKIDIwMTYtMDUtMzEgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bCBvdXQgcjIwMTQ4MSwgcjIwMTUyMzogMC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2RlLWxv
YWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCB0eXBl
ZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpCiAKIGNsYXNzIE5ldHdvcmtEYXRh
VGFza0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtT
ZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBmaXJzdFJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX2ZpcnN0UmVxdWVzdDsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBjdXJyZW50UmVxdWVzdCgpOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpOwotICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3du
bG9hZChEb3dubG9hZCYpOwogICAgIGJvb2wgYWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRl
Rm9ySG9zdChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
cmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6Y2FuY2VsKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG5ld1JlcXVlc3QpCit2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIG1fY3VycmVudFJlcXVlc3QudXBkYXRlRnJvbURlbGVnYXRlUHJl
c2VydmluZ09sZFByb3BlcnRpZXMobmV3UmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVI
VFRQQm9keSkpOwpAQCAtMTI0LDggKzEyNCwxMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51
ZVdpbGxTZW5kUmVxdWVzCiAgICAgICAgICAgICByZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAobV9oYW5kbGUpCi0g
ICAgICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0
KTsKKyAgICB9IGVsc2UgaWYgKG1faGFuZGxlKSB7CisgICAgICAgIFJlc291cmNlUmVxdWVzdCBj
dXJyZW50UmVxdWVzdENvcHkgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgICAgICBtX2hhbmRsZS0+
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShjdXJyZW50UmVxdWVzdENvcHkpKTsKKyAg
ICB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChyZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMTU2LDE1ICsxNTgsMTUgQEAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3Vs
ZENvbnRpbnVlRGlkUmVjZQogICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gV2Ugb25seSBleHBlY3QgdG8g
Z2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJjZUhhbmRsZSBhcyB0
aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBvbGRS
ZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBhdXRvIG9sZFJlcXVlc3QgPSBXVEZNb3Zl
KG1fY3VycmVudFJlcXVlc3QpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0OwotICAg
IG1fY2xpZW50LndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qob2xkUmVxdWVzdCwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CisgICAgbV9jbGllbnQud2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpKTsKIH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC0xOTcsMTEgKzE5
OSwxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxvYWQoUGVuCiAgICAgbV90
YXNrLT5zZXRQZW5kaW5nRG93bmxvYWQocGVuZGluZ0Rvd25sb2FkKTsKIH0KIAotdm9pZCBOZXR3
b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7Ci0gICAg
c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSk7CisgICAg
c2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgc3RkOjpmdW5jdGlvbjx2
b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwm
KT4gY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTQsMTAgKzMxNiwxMCBAQCB2b2lkIE5ldHdvcmtM
b2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlCiAgICAgbV9jbGllbnQuZGlkRmFpbExvYWRpbmco
ZXJyb3IpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtMb2FkOjp3
aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBzaGFyZWRX
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAg
IHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdDsgfQogICAgIHZvaWQgY2xlYXJDdXJyZW50UmVx
dWVzdCgpIHsgbV9jdXJyZW50UmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCgpOyB9
CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3dubG9hZElEKCkgeyByZXR1cm4gbV90YXNrLT5wZW5k
aW5nRG93bmxvYWRJRCgpOyB9CiAgICAgCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50Ci0g
ICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VO
ZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgLy8gUmVz
b3VyY2VIYW5kbGVDbGllbnQKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKSBvdmVycmlkZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKKyAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICBOZXR3
b3JrTG9hZENsaWVudCYgbV9jbGllbnQ7CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJz
IG1fcGFyYW1ldGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJl
Y3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
ID0gMDsKICAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHsg
Tm8sIFllcyB9OwogICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ug
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxLDkgKzUwMSw5IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGkKICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZG93bmxvYWRJRCwgY2Fu
QXV0aGVudGljYXRlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxTZW5kUmVx
dWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJlcXVlc3Qo
ZG93bmxvYWRJRCwgcmVxdWVzdCk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxs
U2VuZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2FkSUQgZG93bmxvYWRJ
RCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSAgICB2b2lkIGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5k
aW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9v
bCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTW9kZWwodWludDMy
X3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZh
aWxMb2FkaQogICAgIGNsZWFudXAoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgKyttX3JlZGlyZWN0Q291bnQ7CiAK
QEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkLT5jbGVhckN1cnJlbnRSZXF1ZXN0KCk7CiAg
ICAgICAgICAgICBvdmVycmlkZW5SZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAg
IH0KLSAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3Qob3ZlcnJpZGVuUmVxdWVzdCk7Cisg
ICAgICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUob3ZlcnJpZGVuUmVxdWVzdCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpKTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
bmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogICAgIE5FVFdPUktSRVNP
VVJDRUxPQURFUl9MT0dfQUxXQVlTKCJGb2xsb3dpbmcgcmVkaXJlY3Qgb2YgbmV0d29yayByZXNv
dXJjZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEKSwgaXNNYWluUmVzb3VyY2Uo
KSwgaXNTeW5jaHJvbm91cygpKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKICNlbmRpZgogCiAgICAgaWYgKG1fbmV0d29ya0xv
YWQpCi0gICAgICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG5ld1Jl
cXVlc3QpOworICAgICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChX
VEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDE1
MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgotICAgIHZvaWQgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdS
ZXF1ZXN0KTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpOwogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBi
dWZmZXJlZERhdGEoKSB7IHJldHVybiBtX2J1ZmZlcmVkRGF0YS5nZXQoKTsgfQogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNwb25zZTsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVy
cmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lk
IHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZp
c2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBw
cml2YXRlOgotICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEyICs4
NywxMiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50CiAgICAgICAg
IHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51
ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5k
aW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKICAgICBBU1NFUlQocGVuZGluZ0Rvd25sb2Fk
KTsKICAgICBpZiAocGVuZGluZ0Rvd25sb2FkKQotICAgICAgICBwZW5kaW5nRG93bmxvYWQtPmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBwZW5kaW5nRG93bmxvYWQt
PmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIERv
d25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdv
cmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNv
bXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjAxNTI0
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIHN0ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiwg
c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IGRhdGFUYXNrQmVjYW1lRG93bmxvYWRU
YXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAgdm9pZCBj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwg
Ym9vbCBjYW5BdXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3Qo
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0
d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBjb250
aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBk
ZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxvd092
ZXJ3cml0ZSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHJldmlzaW9uIDIw
MTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgUGVuZGluZ0Rv
d25sb2FkOjpQZW5kaW5nRG93bmxvYWQoY29uc3QgTgogICAgIG1fbmV0d29ya0xvYWQtPnNldFBl
bmRpbmdEb3dubG9hZCgqdGhpcyk7CiB9CiAKLXZvaWQgUGVuZGluZ0Rvd25sb2FkOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBQZW5kaW5nRG93bmxv
YWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
RG93bmxvYWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkp
KTsKIH07CiAgICAgCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9pZCBQZW5k
aW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QobmV3UmVxdWVzdCk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUGVuZGluZ0Rvd25sb2Fk
OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgUGVuZGluZ0Rvd25sb2FkIDogcHVibGljIE5ldHdvcmtMbwogcHVibGljOgogICAg
IFBlbmRpbmdEb3dubG9hZChjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmLCBEb3dubG9hZElE
KTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogCiBwcml2YXRlOiAg
ICAKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZTogICAgCiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVy
cmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGly
ZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0
dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVj
dWxhdGl2ZUxvYWQoKQogICAgIEFTU0VSVCghbV9uZXR3b3JrTG9hZCk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVz
dCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
CiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3Jr
UHJvY2VzcykgU3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIGZvciAlcyBoaXQgYSByZWRpcmVjdCwg
YWJvcnRpbmcgdGhlIGxvYWQuIiwgcmVkaXJlY3RSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAvLyBXZSBkcm9wIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbnMgaWYg
dGhleSByZWRpcmVjdCBmb3Igbm93IGFzIHdlIHdvdWxkIG5lZWQgdG8gbm90aWZ5IFdlYkNvcmUg
b2Ygc3VjaCByZWRpcmVjdHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFz
eW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQogICAgIGJv
b2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAg
IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91
YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHJl
dmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKAogICAgICAgICBtX2NsaWVu
dC0+ZGlkQmVjb21lRG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRh
VGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDcgfHwgcmVkaXJlY3RSZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwOCkgewogICAgICAgICBBU1NFUlQobV9sYXN0SFRU
UE1ldGhvZCA9PSByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgIH0KICAgICAKICAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihyZWRpcmVjdFJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAg
IG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlZGlyZWN0UmVz
cG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgZWxzZSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NSwxOCArNzUsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGV0YWNo
RnJvbUNvcmVMbwogICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bv
c2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBw
cm9wb3NlZFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewog
ICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QsIFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCB0aGlzKTsK
IAogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIFJl
c291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcHJvcG9zZWRSZXF1ZXN0OwotICAgIGlmIChtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJl
TG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBuZXdSZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSkKKyAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1f
Y29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHVwZGF0ZSBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIgY2xpZW50Q3JlZGVudGlhbFBvbGljeSBpbiBjYXNlIGxvYWRlciBwb2xp
Y3kgaXMgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzPwotICAgIG1fY29y
ZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVz
cG9uc2UsIFtwcm90ZWN0XShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CisgICAgbV9jb3Jl
TG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVj
dFJlc3BvbnNlLCBbcHJvdGVjdF0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewogICAgICAg
ICBpZiAoIXByb3RlY3QtPm1fY29yZUxvYWRlcikKICAgICAgICAgICAgIHJldHVybjsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280249</attachid>
            <date>2016-06-01 11:16:22 -0700</date>
            <delta_ts>2016-06-02 20:24:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160601111742.patch</filename>
            <type>text/plain</type>
            <size>52627</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA2LTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQg
YmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMu
CisgICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
YXJvdW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBj
b3B5IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBh
bG9uZy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50
aWNzIHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAg
VGhlIGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2Ug
YSBub24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJl
dHVybnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpnZXRP
ckNyZWF0ZVJlYWRCdWZmZXIpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0Ns
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJl
c291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRpbmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNM
b2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNl
bmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VU
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE2LTA1LTMxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIGxhbWJk
YSBjYXB0dXJlcyBpbiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTYsMTEgKzYxNiwxMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlTG9hZGVyOjpjYW5u
b3RTaG93CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhbm5vdFNob3dVUkxF
cnJvcihtX3JlcXVlc3QpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlm
IChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxs
YmFja0ZvclJlZGlyZWN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIHdpbGxTZW5k
UmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHJldHVybiBX
VEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShS
ZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIAogICAgIC8vIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZVN0
cmVhbWluZ0NsaWVudCA6IHB1CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIGNoYXIqIGdldE9yQ3Jl
YXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBv
dmVycmlkZTsKICNlbmRpZgotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBpbnQgZW5jb2RlZExlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xMDg1LDggKzEwODUs
OSBAQCBjaGFyKiBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6Z2V0CiB9CiAjZW5kaWYK
IAotdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
CitSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmJikKIHsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCkBAIC0yMDIsNyArMjAyLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogICAgIC8v
IENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1
ZXN0QXN5bmMoKS4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwogCiAgICAgLy8gQ2FsbGVk
IGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYygpLgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCIKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM4LDEwICszOSwxNSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3Vy
Y2VIYW5kbGVDbGllCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50
KCkKIHsKIH0KKyAgICAKK1Jlc291cmNlUmVxdWVzdCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmKQoreworICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOworfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKQordm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIC8qcmVkaXJlY3RSZXNw
b25zZSovKQogewotICAgIGhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCk7
CisgICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJj
ZUhhbmRsZUNsaWVudCgpOwogCi0gICAgICAgIC8vIFJlcXVlc3QgbWF5IGJlIG1vZGlmaWVkLgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNl
Ki8pIHsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlc291cmNlUmVxdWVzdCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNl
SGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQpAQCAtODgsNyArODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBsb2FkaW5nU3luY2hyb25vdXNYSFIoKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCgpIHdoZW4gcmVhZHkuCi0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwg
UmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBjYWxsIFJlc291
cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCiAgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTYgKzM2LDE2IEBAIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2EK
IHsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pCitSZXNvdXJjZVJlcXVlc3QgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVj
dCBjb3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgogICAgIGlmIChwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgcmVx
dWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVx
dWVzdCk7CiAKICAgICBBU1NFUlQobV9lcnJvci5pc051bGwoKSk7CiAgICAgbV9lcnJvciA9IHBs
YXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpOwogICAgIG1faXNEb25lID0gdHJ1ZTsKLSAgICByZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogYm9vbCBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VI
YW5kbGUqKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVzb3VyY2VFcnJvciBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSBv
dmVycmlkZTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDggKzI4NywxMCBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291cmNlUmVxdWVzdCBSZXNvdXJjZUhhbmRsZTo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKQogeworICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBmdW5jdGlv
bmFsaXR5IGluIFJlc291cmNlSGFuZGxlTWFjLm1tIHRoYXQgZG9lcyBub3QgaGF2ZSBjb3JyZXNw
b25kaW5nIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKwogICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVz
dC51cmwoKTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigpOwogICAgIGQtPm1fcGFzcyA9IHVy
bC5wYXNzKCk7CkBAIC0zMTUsMTggKzMxNywyMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxs
U2VuZFJlcXVlc3QoUmVzCiAgICAgfQogCiAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKLSAgICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpCi0gICAgICAg
IGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0
aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBpZiAoZC0+bV91c2VzQXN5bmND
YWxsYmFja3MpIHsKKyAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMs
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKyAgICAKKyAgICBhdXRvIG5ld1JlcXVlc3QgPSBjbGllbnQoKS0+
d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RS
ZXNwb25zZSkpOwogCi0gICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhl
IHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAg
ICAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICByZXF1ZXN0LnNldFN0
b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgIC8vIENsaWVudCBj
YWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVl
c3QgaXMgc2VudCBvdmVyIElQQy4KKyAgICBpZiAoIW5ld1JlcXVlc3QuaXNOdWxsKCkpIHsKKyAg
ICAgICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdl
dCgpKTsKIAotICAgICAgICAgICAgZC0+bV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAg
ICAgIH0KKyAgICAgICAgZC0+bV9jdXJyZW50UmVxdWVzdCA9IG5ld1JlcXVlc3Q7CiAgICAgfQor
ICAgIHJldHVybiBuZXdSZXF1ZXN0OwogfQogCiBib29sIFJlc291cmNlSGFuZGxlOjpzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBDRlVSTFJlcXVlc3RS
ZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3Bv
bnNlKTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGNyZWF0ZVJlc291cmNl
UmVxdWVzdChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBtX2hh
bmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwor
ICAgICAgICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UuZ2V0KCkpOwogICAgIH0pOwogCiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dh
aXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuY3BwCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5MiwxNSBAQCBDRlVSTFJlcXVlc3RSZWYg
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsCiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1
ZXN0KGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCA9IGNyZWF0ZVJlc291cmNlUmVxdWVzdChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Uu
Z2V0KCkpOwotICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZS5nZXQoKSk7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9oYW5kbGUtPndpbGxTZW5k
UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKIAotICAg
IGlmIChyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobmV3UmVx
dWVzdC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjZlJlcXVlc3Qg
PSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisgICAgYXV0byBuZXdDRlJl
cXVlc3QgPSBuZXdSZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiAKLSAgICBD
RlJldGFpbihjZlJlcXVlc3QpOwotICAgIHJldHVybiBjZlJlcXVlc3Q7CisgICAgQ0ZSZXRhaW4o
bmV3Q0ZSZXF1ZXN0KTsKKyAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0OwogfQogCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIwMTUyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxh
dGZvcm1Mb2FkUmVzb3VyYwogICAgIGRhdGEuc3dhcChjbGllbnQubXV0YWJsZURhdGEoKSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNv
dXJjZVJlcXVlc3QgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAg
ICBBU1NFUlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwogCkBAIC00ODksMjMgKzQ4OSwy
NCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgfQogCiAg
ICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKSB7Ci0gICAgICAgIGNsaWVudCgpLT53aWxs
U2VuZFJlcXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwotICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwotCi0gICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUg
dGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4K
LSAgICAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVxdWVzdC5zZXRT
dG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgY2xpZW50
KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVkaXJlY3RSZXNwb25zZSkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIFJl
ZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgYXV0byBuZXdSZXF1
ZXN0ID0gY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKKworICAgIC8vIENsaWVudCBjYWxsIG1heSBub3Qg
cHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBv
dmVyIElQQy4KKyAgICBpZiAoIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIG5ld1JlcXVl
c3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgcmV0
dXJuIG5ld1JlcXVlc3Q7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVl
c3QpCiB7CiAgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKTsKIAogICAgIC8vIENs
aWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhl
IHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVz
dCA9IHJlcXVlc3Q7CiAgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKQogICAgICAgICBuZXdS
ZXF1ZXN0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwogICAg
IFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpuZXdSZXF1ZXN0Lm5zVVJM
UmVxdWVzdChVcGRhdGVIVFRQQm9keSldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsNyBAQCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0
aW9uOihOU1VSTENvbm5lCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRl
IGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhU
VFAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dKTsgCiAj
ZW5kaWYKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsKLQotICAg
IG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0K
LSAgICByZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOworICAgIHJl
dHVybiBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpLm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKEJPT0wpY29ubmVjdGlv
blNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5ICsxMjIsNyBAQCAtIChOU1VS
TFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7
Ci0KLSAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKTsKKyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKTsKICAgICB9KTsKIAogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0
KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjQs
MTggKzQ2NCwxNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3N0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICAvLyB3aWxs
U2VuZFJlcXVlc3QgbWlnaHQgY2FuY2VsIHRoZSBsb2FkLgogICAgIGlmIChoYW5kbGUtPmNhbmNl
bGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXNvdXJjZVJlcXVl
c3QgbmV3UmVxdWVzdChyZXF1ZXN0KTsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0g
aGFuZGxlLT5nZXRJbnRlcm5hbCgpOwotICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwobmV3UmVxdWVzdC51cmwoKSwgZC0+bV9yZXNwb25zZS51cmwoKSkpCi0gICAgICAgIGFwcGx5
QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCB0cnVlKTsKKyAgICBp
ZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJlcXVlc3QudXJsKCksIGQtPm1fcmVzcG9u
c2UudXJsKCkpKQorICAgICAgICBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KGhhbmRsZSwg
cmVxdWVzdCwgdHJ1ZSk7CiAKLSAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZv
ckhhbmRsZShoYW5kbGUsIG5ld1JlcXVlc3QpKSB7CisgICAgaWYgKCFjcmVhdGVTb3VwUmVxdWVz
dEFuZE1lc3NhZ2VGb3JIYW5kbGUoaGFuZGxlLCByZXF1ZXN0KSkgewogICAgICAgICBkLT5jbGll
bnQoKS0+Y2Fubm90U2hvd1VSTChoYW5kbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NTMyLDExICs1MzEsMTIgQEAgc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSog
aAogCiAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZSk7CiAKKyAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlQ29weSA9IGQtPm1fcmVzcG9uc2U7CiAgICAgaWYgKGQtPmNs
aWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAgICAgICAgZC0+Y2xpZW50KCktPndpbGxT
ZW5kUmVxdWVzdEFzeW5jKGhhbmRsZSwgbmV3UmVxdWVzdCwgZC0+bV9yZXNwb25zZSk7CisgICAg
ICAgIGQtPmNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyhoYW5kbGUsIFdURk1vdmUobmV3
UmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2VDb3B5KSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGQt
PmNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCBkLT5tX3Jlc3Bv
bnNlKTsKLSAgICAgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIG5ld1Jl
cXVlc3QpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBkLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1
ZXN0KGhhbmRsZSwgV1RGTW92ZShuZXdSZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZUNvcHkpKTsK
KyAgICAgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIFdURk1vdmUocmVx
dWVzdCkpOwogICAgIH0KIAogfQpAQCAtMTM2NywxMCArMTM2NywxMCBAQCBzdGF0aWMgdm9pZCBy
ZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luCiAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0
KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQordm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIWNsaWVudCgpIHx8IGNsaWVudCgpLT51
c2VzQXN5bmNDYWxsYmFja3MoKSk7Ci0gICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdCh0
aGlzLCByZXF1ZXN0KTsKKyAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdU
Rk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE1NDQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2MyBAQAorMjAx
Ni0wNi0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlZHVjZSBSZXNvdXJjZVJlcXVlc3QgY29weWluZyBpbiBsb2FkaW5nIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI1MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZVdpbGxTZW5k
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBl
bmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9h
ZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25s
b2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdE
b3dubG9hZDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6Zmlyc3RSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5jZWwp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25s
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNsZWFyQ3Vy
cmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cGVuZGluZ0Rvd25s
b2FkSUQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdE
b3dubG9hZENhbmNlbGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6flNwZWN1
bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDE2LTA1LTMxICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGwgb3V0IHIyMDE0ODEsIHIyMDE1MjM6IDAuMyUgcmVncmVzc2lvbiBpbiBPY3RhbmUgY29kZS1s
b2FkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UG9saQogCiBjbGFzcyBOZXR3b3JrRGF0
YVRhc2tDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3Jr
U2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgZmlyc3RSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdFJlcXVlc3Q7IH0KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgY3VycmVudFJlcXVlc3QoKTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAg
ICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlcik7CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93
bmxvYWQoRG93bmxvYWQmKTsKICAgICBib29sIGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgTmV0d29y
a0xvYWQ6OmNhbmNlbCgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBO
ZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKIHsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBtX2N1cnJlbnRSZXF1ZXN0LnVwZGF0ZUZyb21EZWxlZ2F0ZVBy
ZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKG5ld1JlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpKTsKQEAgLTEyNCw4ICsxMjQsMTAgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y29udGlu
dWVXaWxsU2VuZFJlcXVlcwogICAgICAgICAgICAgcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcih7
IH0pOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKG1faGFuZGxlKQot
ICAgICAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QobV9jdXJyZW50UmVxdWVz
dCk7CisgICAgfSBlbHNlIGlmIChtX2hhbmRsZSkgeworICAgICAgICBSZXNvdXJjZVJlcXVlc3Qg
Y3VycmVudFJlcXVlc3RDb3B5ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICAgICAgbV9oYW5kbGUt
PmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUoY3VycmVudFJlcXVlc3RDb3B5KSk7Cisg
ICAgfQogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAocmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcikKQEAgLTE1NiwxNSArMTU4LDE1IEBAIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91
bGRDb250aW51ZURpZFJlY2UKICAgICByZXR1cm4gbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6c2hhcmVkV2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIC8vIFdlIG9ubHkgZXhwZWN0IHRv
IGdldCB0aGUgd2lsbFNlbmRSZXF1ZXN0IGNhbGxiYWNrIGZyb20gUmVzb3VyY2VIYW5kbGUgYXMg
dGhlIHJlc3VsdCBvZiBhIHJlZGlyZWN0LgogICAgIEFTU0VSVCghcmVkaXJlY3RSZXNwb25zZS5p
c051bGwoKSk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gb2xk
UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3Q7CisgICAgYXV0byBvbGRSZXF1ZXN0ID0gV1RGTW92
ZShtX2N1cnJlbnRSZXF1ZXN0KTsKICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKLSAg
ICBtX2NsaWVudC53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KG9sZFJlcXVlc3QsIHJlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgIG1fY2xpZW50LndpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV1RGTW92ZShvbGRSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVj
dFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpAQCAtMTk3LDExICsx
OTksMTEgQEAgdm9pZCBOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25sb2FkKFBlbgogICAgIG1f
dGFzay0+c2V0UGVuZGluZ0Rvd25sb2FkKHBlbmRpbmdEb3dubG9hZCk7CiB9CiAKLXZvaWQgTmV0
d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjp3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwog
ICAgIG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOwotICAg
IHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9uc2UpOworICAg
IHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFs
Jik+IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzE0LDEwICszMTYsMTAgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZQogICAgIG1fY2xpZW50LmRpZEZhaWxMb2FkaW5n
KGVycm9yKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBOZXR3b3JrTG9hZDo6
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgc2hhcmVk
V2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAg
ICBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSkpOwogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudFJlcXVlc3Q7IH0KICAgICB2b2lkIGNsZWFyQ3VycmVudFJl
cXVlc3QoKSB7IG1fY3VycmVudFJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKTsg
fQogCi0gICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCk7CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6
CiAgICAgRG93bmxvYWRJRCBwZW5kaW5nRG93bmxvYWRJRCgpIHsgcmV0dXJuIG1fdGFzay0+cGVu
ZGluZ0Rvd25sb2FkSUQoKTsgfQogICAgIAogICAgIC8vIE5ldHdvcmtEYXRhVGFza0NsaWVudAot
ICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
Q2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
TmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBvdmVycmlkZTsKICNlbmRpZgogICAgIC8vIFJl
c291cmNlSGFuZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwotICAgIHZvaWQgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogCiAgICAgTmV0
d29ya0xvYWRDbGllbnQmIG1fY2xpZW50OwogICAgIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyBtX3BhcmFtZXRlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGly
ZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSA9IDA7CiAgICAgZW51bSBjbGFzcyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB7
IE5vLCBZZXMgfTsKICAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMSw5ICs1MDEsOSBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGRvd25sb2FkSUQsIGNh
bkF1dGhlbnRpY2F0ZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KGRvd25sb2FkSUQsIHJlcXVlc3QpOworICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KGRvd25sb2FkSUQsIFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEIGRvd25sb2Fk
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShEb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSk7Ci0gICAgdm9pZCBj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVu
ZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJv
b2wgYWxsb3dPdmVyd3JpdGUpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQz
Ml90KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
YWlsTG9hZGkKICAgICBjbGVhbnVwKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgICsrbV9yZWRpcmVjdENvdW50Owog
CkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y2xlYXJDdXJyZW50UmVxdWVzdCgpOwog
ICAgICAgICAgICAgb3ZlcnJpZGVuUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KG92ZXJyaWRlblJlcXVlc3QpOwor
ICAgICAgICBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG92ZXJyaWRlblJlcXVlc3Qp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSk7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKIHsKICAgICBORVRXT1JLUkVT
T1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiRm9sbG93aW5nIHJlZGlyZWN0IG9mIG5ldHdvcmsgcmVz
b3VyY2U6IGxvYWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihtX3BhcmFtZXRlcnMud2ViUGFnZUlEKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCksIGlzTWFpblJlc291cmNl
KCksIGlzU3luY2hyb25vdXMoKSk7CiAKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsCiAjZW5kaWYKIAogICAgIGlmIChtX25ldHdvcmtM
b2FkKQotICAgICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChuZXdS
ZXF1ZXN0KTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
V1RGTW92ZShuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAx
NTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7CiAjZW5kaWYKLSAgICB2b2lkIGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCk7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KTsKIAogICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciog
YnVmZmVyZWREYXRhKCkgeyByZXR1cm4gbV9idWZmZXJlZERhdGEuZ2V0KCk7IH0KICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2U7IH0KQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkocmV2
aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
cHJpdmF0ZToKLSAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NywxMiAr
ODcsMTIgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlQ2FuQXV0aGVudAogICAgICAg
ICBwZW5kaW5nRG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShjYW5BdXRoZW50aWNhdGUpOwogfQogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVu
ZGluZ0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7CiAgICAgQVNTRVJUKHBlbmRpbmdEb3dubG9h
ZCk7CiAgICAgaWYgKHBlbmRpbmdEb3dubG9hZCkKLSAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5j
b250aW51ZVdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgcGVuZGluZ0Rvd25sb2Fk
LT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBE
b3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3
b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzaywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBj
b21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDIwMTUy
NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAjaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKICAgICBzdGQ6OnBhaXI8UmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4s
IHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRG93bmxvYWQ+PiBkYXRhVGFza0JlY2FtZURvd25sb2Fk
VGFzayhEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYpOwogICAgIHZvaWQg
Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQs
IGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQg
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5l
dHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgY29u
dGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcg
ZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCShyZXZpc2lvbiAy
MDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIFBlbmRpbmdE
b3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKGNvbnN0IE4KICAgICBtX25ldHdvcmtMb2FkLT5zZXRQ
ZW5kaW5nRG93bmxvYWQoKnRoaXMpOwogfQogCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6d2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgUGVuZGluZ0Rvd25s
b2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpXaWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
KSk7CiB9OwogICAgIAotdm9pZCBQZW5kaW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgUGVu
ZGluZ0Rvd25sb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0KQogewotICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KG5ld1JlcXVlc3QpOworICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KFdURk1vdmUobmV3UmVxdWVzdCkpOwogfQogCiB2b2lkIFBlbmRpbmdEb3dubG9h
ZDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQpJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIFBlbmRpbmdEb3dubG9hZCA6IHB1YmxpYyBOZXR3b3JrTG8KIHB1YmxpYzoKICAg
ICBQZW5kaW5nRG93bmxvYWQoY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiwgRG93bmxvYWRJ
RCk7CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRlKTsKIAogcHJpdmF0ZTog
ICAgCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6ICAgIAogICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRp
cmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
b3ZlcnJpZGU7CiAgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJl
dHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CiAgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZSB7IH07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgU3BlY3VsYXRpdmVMb2FkOjp+U3Bl
Y3VsYXRpdmVMb2FkKCkKICAgICBBU1NFUlQoIW1fbmV0d29ya0xvYWQpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KQogewogICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29y
a1Byb2Nlc3MpIFNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBmb3IgJXMgaGl0IGEgcmVkaXJlY3Qs
IGFib3J0aW5nIHRoZSBsb2FkLiIsIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgLy8gV2UgZHJvcCBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb25zIGlm
IHRoZXkgcmVkaXJlY3QgZm9yIG5vdyBhcyB3ZSB3b3VsZCBuZWVkIHRvIG5vdGlmeSBXZWJDb3Jl
IG9mIHN1Y2ggcmVkaXJlY3RzLgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgJKHJldmlzaW9uIDIwMTUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVy
cmlkZSB7IH0KICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VB
c3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZSB7IH0KICAgICBi
b29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAg
ICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRv
dWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShy
ZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCgKICAgICAgICAgbV9jbGll
bnQtPmRpZEJlY29tZURvd25sb2FkKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjp3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0
YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChyZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA3IHx8IHJlZGlyZWN0UmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDgpIHsKICAgICAgICAgQVNTRVJUKG1fbGFzdEhU
VFBNZXRob2QgPT0gcmVxdWVzdC5odHRwTWV0aG9kKCkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrOjp3aWxsUGVyZm9ybUhUVFBSZWQKICAgICB9CiAgICAgCiAgICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24ocmVkaXJlY3RSZXNwb25zZSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIpOworICAgICAg
ICBtX2NsaWVudC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGVsc2Ug
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNTI0KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsMTggKzc1LDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRldGFj
aEZyb21Db3JlTG8KICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcm9w
b3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cHJvcG9zZWRSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0LCBXZWJSZXNvdXJjZUxvYWRlciA9ICVwIiwgdGhpcyk7
CiAKICAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAKLSAgICBS
ZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IHByb3Bvc2VkUmVxdWVzdDsKLSAgICBpZiAobV9j
b3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXli
ZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgbmV3UmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSkpCisgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCht
X2NvcmVMb2FkZXIuZ2V0KCksIHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byB1cGRhdGUgTmV0d29y
a1Jlc291cmNlTG9hZGVyIGNsaWVudENyZWRlbnRpYWxQb2xpY3kgaW4gY2FzZSBsb2FkZXIgcG9s
aWN5IGlzIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscz8KLSAgICBtX2Nv
cmVMb2FkZXItPndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJl
c3BvbnNlLCBbcHJvdGVjdF0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgeworICAgIG1fY29y
ZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJl
Y3RSZXNwb25zZSwgW3Byb3RlY3RdKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAg
ICAgaWYgKCFwcm90ZWN0LT5tX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDE1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyAr
NzUsNyBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280420</attachid>
            <date>2016-06-02 20:25:05 -0700</date>
            <delta_ts>2016-06-02 23:29:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160602202629.patch</filename>
            <type>text/plain</type>
            <size>53528</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA2LTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQgYmUg
bm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMuCisg
ICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYXJv
dW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBjb3B5
IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBhbG9u
Zy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50aWNz
IHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAgVGhl
IGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2UgYSBu
b24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJldHVy
bnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291
cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRpbmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6Ondp
bGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRS
ZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGly
ZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VUKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE2LTA2LTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAKICAgICAgICAgW2lPU10g
UERGRG9jdW1lbnRJbWFnZSBzaG91bGQgbm90IGNyZWF0ZSBhIGNhY2hlZCBpbWFnZSBsYXJnZXIg
dGhhbiA0TSBwaXhlbHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDExICs2MDcsMTIgQEAgUmVzb3VyY2VF
cnJvciBSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvdwogICAgIHJldHVybiBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IobV9yZXF1ZXN0KTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQor
UmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCh0aGlzLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gV1RGTW92
ZShyZXF1ZXN0KTsKICAgICB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChyZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTYzMikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODMsNyArMTgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2Fk
KCk7CiAKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAotICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24g
MjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdQogI2lmIFVTRShTT1VQ
KQogICAgICAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNp
emUsIHNpemVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIFJlc291cmNlUmVxdWVzdCB3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VS
ZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWdu
ZWQsIGludCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgaW50IGVuY29kZWRMZW5ndGgpIG92
ZXJyaWRlOwpAQCAtMTA4NSw4ICsxMDg1LDkgQEAgY2hhciogUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQ6OmdldAogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlSGFuZGxl
U3RyZWFtaW5nQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CisgICAgcmV0dXJuIFdU
Rk1vdmUocmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlc291cmNl
SGFuZGxlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLSAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShT
T1VQKQpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyQ2xpZW50KCk7CiAKICAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKCkuCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmKTsKIAogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoKS4KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzksMTUgQEAgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZQogUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpCiB7CiB9CisgICAgCitSZXNvdXJjZVJlcXVlc3Qg
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJikKK3sKKyAgICByZXR1
cm4gV1RGTW92ZShyZXF1ZXN0KTsKK30KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9u
c2UqLykKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UmJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykKIHsKLSAgICBoYW5kbGUtPmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgIGhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMjAxNjMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKICAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKIAotICAgICAgICAvLyBS
ZXF1ZXN0IG1heSBiZSBtb2RpZmllZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSB7IH0KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5
dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KQEAgLTg4LDcgKzg3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhS
KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVw
ZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QoKSB3aGVuIHJlYWR5LgotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICAgICAg
Ly8gQ2xpZW50IHdpbGwgY2FsbCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKSB3aGVuIHJlYWR5LgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjAxNjMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE2ICszNiwxNiBAQCBTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6flN5bmNocm9ub3VzTG9hCiB7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25z
ZSovKQorUmVzb3VyY2VSZXF1ZXN0IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZp
eGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QgY29ycmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFp
biByZXF1ZXN0cy4KICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGhhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogCiAgICAgQVNTRVJUKG1fZXJyb3IuaXNO
dWxsKCkpOwogICAgIG1fZXJyb3IgPSBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKICAgICBt
X2lzRG9uZSA9IHRydWU7Ci0gICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOworICAgIHJl
dHVybiB7IH07CiB9CiAKIGJvb2wgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlRXJyb3IgcGxhdGZvcm1C
YWRSZXNwb25zZUVycm9yKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiAvKnJlZGlyZWN0UmVzcG9uc2UqLykgb3ZlcnJpZGU7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
Nyw3ICsyODcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0KIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291cmNl
UmVxdWVzdCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGNv
bnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigp
OwpAQCAtMzE1LDE4ICszMTUsMjAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KFJlcwogICAgIH0KIAogICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7Ci0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBjbGllbnQo
KS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tz
KSB7CisgICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisgICAgCisgICAgYXV0byBuZXdSZXF1ZXN0ID0gY2xpZW50KCktPndpbGxTZW5k
UmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
KTsKIAotICAgICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9u
LCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgICAgIGlm
ICghcmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vz
c2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAvLyBDbGllbnQgY2FsbCBtYXkg
bm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNl
bnQgb3ZlciBJUEMuCisgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKSB7CisgICAgICAgIG5l
d1JlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CiAK
LSAgICAgICAgICAgIGQtPm1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0OwotICAgICAgICB9Cisg
ICAgICAgIGQtPm1fY3VycmVudFJlcXVlc3QgPSBuZXdSZXF1ZXN0OwogICAgIH0KKyAgICByZXR1
cm4gbmV3UmVxdWVzdDsKIH0KIAogYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoKQpAQCAtNjUwLDEyICs2NTIsMTEgQEAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBSZXNvdXJjZUhhbmRsZTo6YwogICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OwogfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdDsKLSAgICBpZiAoIXJlcXVlc3RSZXN1bHQuaXNO
dWxsKCkpCi0gICAgICAgIHJlcXVlc3RSZXN1bHQuc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSk7Ci0gICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3RSZXN1bHQuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5
KSk7CisgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXF1ZXN0LnNldFN0b3Jh
Z2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgIGQtPm1fY29ubmVjdGlv
bkRlbGVnYXRlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LmNmVVJMUmVxdWVzdChV
cGRhdGVIVFRQQm9keSkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJ
KHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3BvbnNlKTsK
IAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGNyZWF0ZVJlc291cmNlUmVxdWVz
dChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBtX2hhbmRsZS0+
d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworICAgICAg
ICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVz
cG9uc2UuZ2V0KCkpOwogICAgIH0pOwogCiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9z
ZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
Y3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5MiwxNSBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsCiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KGhh
bmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9
IGNyZWF0ZVJlc291cmNlUmVxdWVzdChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkp
OwotICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZS5nZXQoKSk7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKIAotICAgIGlmIChy
ZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobmV3UmVxdWVzdC5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjZlJlcXVlc3QgPSByZXF1
ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisgICAgYXV0byBuZXdDRlJlcXVlc3Qg
PSBuZXdSZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiAKLSAgICBDRlJldGFp
bihjZlJlcXVlc3QpOwotICAgIHJldHVybiBjZlJlcXVlc3Q7CisgICAgQ0ZSZXRhaW4obmV3Q0ZS
ZXF1ZXN0KTsKKyAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0OwogfQogCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1M
b2FkUmVzb3VyYwogICAgIGRhdGEuc3dhcChjbGllbnQubXV0YWJsZURhdGEoKSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJl
cXVlc3QgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBBU1NF
UlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwogCkBAIC00ODksMjMgKzQ4OSwyNCBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgfQogCiAgICAgaWYg
KGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKSB7Ci0gICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJl
cXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAg
ICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwotCi0gICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNl
c3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICAg
ICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdl
U2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIFJlZjxSZXNv
dXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0g
Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVzcG9uc2UpKTsKKworICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2Vy
dmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQ
Qy4KKyAgICBpZiAoIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIG5ld1JlcXVlc3Quc2V0
U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgcmV0dXJuIG5l
d1JlcXVlc3Q7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7
CiAgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKTsKIAogICAgIC8vIENsaWVudCBj
YWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVl
c3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IHJl
cXVlc3Q7CiAgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKQogICAgICAgICBuZXdSZXF1ZXN0
LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwogICAgIFsoaWQp
ZGVsZWdhdGUoKSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVz
dChVcGRhdGVIVFRQQm9keSldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03NywxMSArNzcsNyBAQCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihO
U1VSTENvbm5lCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5l
Y3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhUVFAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dKTsgCiAjZW5kaWYK
IAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsKLQotICAgIG1faGFu
ZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0KLSAgICBy
ZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBt
X2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpLm5z
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKEJPT0wpY29ubmVjdGlvblNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5ICsxMjIsNyBAQCAtIChOU1VSTFJlcXVl
c3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7Ci0KLSAg
ICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKICAgICB9KTsKIAogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2Vt
YXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsMTggKzQ2
NCwxNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3N0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICAvLyB3aWxsU2VuZFJl
cXVlc3QgbWlnaHQgY2FuY2VsIHRoZSBsb2FkLgogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9y
Q2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3
UmVxdWVzdChyZXF1ZXN0KTsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxl
LT5nZXRJbnRlcm5hbCgpOwotICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobmV3
UmVxdWVzdC51cmwoKSwgZC0+bV9yZXNwb25zZS51cmwoKSkpCi0gICAgICAgIGFwcGx5QXV0aGVu
dGljYXRpb25Ub1JlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCB0cnVlKTsKKyAgICBpZiAocHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJlcXVlc3QudXJsKCksIGQtPm1fcmVzcG9uc2UudXJs
KCkpKQorICAgICAgICBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KGhhbmRsZSwgcmVxdWVz
dCwgdHJ1ZSk7CiAKLSAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRs
ZShoYW5kbGUsIG5ld1JlcXVlc3QpKSB7CisgICAgaWYgKCFjcmVhdGVTb3VwUmVxdWVzdEFuZE1l
c3NhZ2VGb3JIYW5kbGUoaGFuZGxlLCByZXF1ZXN0KSkgewogICAgICAgICBkLT5jbGllbnQoKS0+
Y2Fubm90U2hvd1VSTChoYW5kbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMyLDEx
ICs1MzEsMTIgQEAgc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaAogCiAg
ICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZSk7CiAKKyAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlQ29weSA9IGQtPm1fcmVzcG9uc2U7CiAgICAgaWYgKGQtPmNsaWVudCgp
LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAgICAgICAgZC0+Y2xpZW50KCktPndpbGxTZW5kUmVx
dWVzdEFzeW5jKGhhbmRsZSwgbmV3UmVxdWVzdCwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGQt
PmNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyhoYW5kbGUsIFdURk1vdmUobmV3UmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2VDb3B5KSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGQtPmNsaWVu
dCgpLT53aWxsU2VuZFJlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCBkLT5tX3Jlc3BvbnNlKTsK
LSAgICAgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3Qp
OworICAgICAgICBhdXRvIHJlcXVlc3QgPSBkLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KGhh
bmRsZSwgV1RGTW92ZShuZXdSZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZUNvcHkpKTsKKyAgICAg
ICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIFdURk1vdmUocmVxdWVzdCkp
OwogICAgIH0KIAogfQpAQCAtMTM2NywxMCArMTM2NywxMCBAQCBzdGF0aWMgdm9pZCByZWFkQ2Fs
bGJhY2soR09iamVjdCosIEdBc3luCiAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJl
YWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIWNsaWVudCgpIHx8IGNsaWVudCgpLT51c2VzQXN5
bmNDYWxsYmFja3MoKSk7Ci0gICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdCh0aGlzLCBy
ZXF1ZXN0KTsKKyAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUo
cmVxdWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2MyBAQAorMjAxNi0wNi0w
MiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlZHVjZSBSZXNvdXJjZVJlcXVlc3QgY29weWluZyBpbiBsb2FkaW5nIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGlu
Z0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFzazo6Zmlyc3RSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5jZWwpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmN1cnJlbnRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNsZWFyQ3VycmVudFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cGVuZGluZ0Rvd25sb2FkSUQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENh
bmNlbGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDE2LTA2LTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViUHJvY2Vzczo6cmVnaXN0
ZXJXaXRoU3RhdGVEdW1wZXIoKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw3IEBAIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGkKIAog
Y2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwpAQCAtMTI2LDcg
KzEyNiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZp
cnN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0KCk7CiAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCk7Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRi
b3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgYm9vbCBhbGxvd3NTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUs
NyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjYW5jZWwoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2Vs
KCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jdXJyZW50UmVxdWVzdC51cGRh
dGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhuZXdSZXF1ZXN0Lm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CkBAIC0xMjgsOCArMTI4LDEwIEBAIHZvaWQgTmV0
d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXMKICAgICAgICAgICAgIHJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKICNlbmRpZgogICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNl
IGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KG1fY3VycmVudFJlcXVlc3QpOworICAgIH0gZWxzZSBpZiAobV9oYW5kbGUpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50UmVxdWVzdENvcHkgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgICAgICBtX2hh
bmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShjdXJyZW50UmVxdWVzdENvcHkp
KTsKKyAgICB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChyZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTYwLDE1ICsxNjIsMTUgQEAgTmV0d29ya0xvYWRDbGllbnQ6
OlNob3VsZENvbnRpbnVlRGlkUmVjZQogICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OnNoYXJl
ZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gV2Ugb25seSBleHBl
Y3QgdG8gZ2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJjZUhhbmRs
ZSBhcyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3Bv
bnNlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0
byBvbGRSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBhdXRvIG9sZFJlcXVlc3QgPSBX
VEZNb3ZlKG1fY3VycmVudFJlcXVlc3QpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0
OwotICAgIG1fY2xpZW50LndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qob2xkUmVxdWVzdCwgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgbV9jbGllbnQud2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
ZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC0yMDEs
MTEgKzIwMywxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxvYWQoUGVuCiAg
ICAgbV90YXNrLT5zZXRQZW5kaW5nRG93bmxvYWQocGVuZGluZ0Rvd25sb2FkKTsKIH0KIAotdm9p
ZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7
Ci0gICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSk7
CisgICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgc3RkOjpmdW5j
dGlvbjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IENyZWRl
bnRpYWwmKT4gY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTgsMTAgKzMyMCwxMCBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlCiAgICAgbV9jbGllbnQuZGlkRmFpbExv
YWRpbmcoZXJyb3IpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3lu
YyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBz
aGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OworICAgIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdDsgfQogICAgIHZvaWQgY2xlYXJDdXJy
ZW50UmVxdWVzdCgpIHsgbV9jdXJyZW50UmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCgpOyB9CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3dubG9hZElEKCkgeyByZXR1cm4gbV90YXNr
LT5wZW5kaW5nRG93bmxvYWRJRCgpOyB9CiAgICAgCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xp
ZW50Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAg
Ly8gUmVzb3VyY2VIYW5kbGVDbGllbnQKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKICAg
ICBOZXR3b3JrTG9hZENsaWVudCYgbV9jbGllbnQ7CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpID0gMDsKICAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg2LDkgKzQ4Niw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGkKICAgICBkb3dubG9hZE1hbmFnZXIo
KS5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZG93bmxvYWRJ
RCwgY2FuQXV0aGVudGljYXRlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJl
cXVlc3QoZG93bmxvYWRJRCwgcmVxdWVzdCk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2FkSUQgZG93
bmxvYWRJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSAgICB2
b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNp
ZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRp
b24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTW9kZWwo
dWludDMyX3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxMb2FkaQogICAgIGNsZWFudXAoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgKyttX3JlZGlyZWN0Q291
bnQ7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZWRpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkLT5jbGVhckN1cnJlbnRSZXF1ZXN0
KCk7CiAgICAgICAgICAgICBvdmVycmlkZW5SZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAg
ICAgICAgIH0KLSAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3Qob3ZlcnJpZGVuUmVxdWVz
dCk7CisgICAgICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUob3ZlcnJpZGVuUmVx
dWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNlbmRBYm9ydGluZ09uRmFpbHVy
ZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogICAgIE5FVFdP
UktSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJGb2xsb3dpbmcgcmVkaXJlY3Qgb2YgbmV0d29y
ayByZXNvdXJjZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQiLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEKSwgaXNNYWluUmVz
b3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKICNlbmRpZgogCiAgICAgaWYgKG1fbmV0
d29ya0xvYWQpCi0gICAgICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KG5ld1JlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lv
biAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgotICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBuZXdSZXF1ZXN0KTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpOwogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiBidWZmZXJlZERhdGEoKSB7IHJldHVybiBtX2J1ZmZlcmVkRGF0YS5nZXQoKTsgfQogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiBwcml2YXRlOgotICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDEyICs4NywxMiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50CiAg
ICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2Vy
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0g
bV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKICAgICBBU1NFUlQocGVuZGluZ0Rv
d25sb2FkKTsKICAgICBpZiAocGVuZGluZ0Rvd25sb2FkKQotICAgICAgICBwZW5kaW5nRG93bmxv
YWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBwZW5kaW5nRG93
bmxvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24g
MjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHN0ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFU
YXNrPiwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IGRhdGFUYXNrQmVjYW1lRG93
bmxvYWRUYXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAg
dm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxv
YWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJl
cXVlc3QoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0
cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHJldmlz
aW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgUGVu
ZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoY29uc3QgTgogICAgIG1fbmV0d29ya0xvYWQt
PnNldFBlbmRpbmdEb3dubG9hZCgqdGhpcyk7CiB9CiAKLXZvaWQgUGVuZGluZ0Rvd25sb2FkOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBQZW5kaW5n
RG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxT
ZW5kUmVxdWVzdChXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSkpKTsKIH07CiAgICAgCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9p
ZCBQZW5kaW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUGVuZGluZ0Rv
d25sb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3Qg
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgUGVuZGluZ0Rvd25sb2FkIDogcHVibGljIE5ldHdvcmtMbwogcHVibGlj
OgogICAgIFBlbmRpbmdEb3dubG9hZChjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmLCBEb3du
bG9hZElEKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogCiBwcml2
YXRlOiAgICAKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZTogICAgCiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKICAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6
On5TcGVjdWxhdGl2ZUxvYWQoKQogICAgIEFTU0VSVCghbV9uZXR3b3JrTG9hZCk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihO
ZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIGZvciAlcyBoaXQgYSByZWRp
cmVjdCwgYWJvcnRpbmcgdGhlIGxvYWQuIiwgcmVkaXJlY3RSZXNwb25zZS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBXZSBkcm9wIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlv
bnMgaWYgdGhleSByZWRpcmVjdCBmb3Igbm93IGFzIHdlIHdvdWxkIG5lZWQgdG8gbm90aWZ5IFdl
YkNvcmUgb2Ygc3VjaCByZWRpcmVjdHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQog
ICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRl
OwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0JKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKAogICAgICAgICBt
X2NsaWVudC0+ZGlkQmVjb21lRG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtEYXRhVGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDcgfHwgcmVkaXJl
Y3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwOCkgewogICAgICAgICBBU1NFUlQobV9s
YXN0SFRUUE1ldGhvZCA9PSByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CkBAIC0yMzIsNyArMjMyLDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgIH0KICAgICAK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihyZWRpcmVjdFJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlZGly
ZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NSwyMiArNzUsMjEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGV0YWNoRnJvbUNvcmVMbwogICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QsIFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCB0
aGlzKTsKIAotICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAg
ICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVz
b3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBwcm9wb3NlZFJlcXVlc3Q7Ci0gICAgaWYgKG1fY29y
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVM
b2FkRmFsbGJhY2tGb3JSZWRpcmVjdChtX2NvcmVMb2FkZXIuZ2V0KCksIG5ld1JlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpKQorICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9j
b3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAg
ICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdXBkYXRlIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciBjbGllbnRDcmVkZW50aWFsUG9saWN5IGluIGNhc2UgbG9hZGVyIHBvbGlj
eSBpcyBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHM/Ci0gICAgbV9jb3Jl
TG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNw
b25zZSwgW3Byb3RlY3RdKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKLSAgICAgICAgaWYg
KCFwcm90ZWN0LT5tX2NvcmVMb2FkZXIpCisgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVl
c3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
IHsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX2NvcmVMb2FkZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgcHJvdGVjdC0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpDb250aW51ZVdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0KSk7CisgICAgICAgIHBy
b3RlY3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q29udGlu
dWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHJp
dmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3Zl
cnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
OworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0
X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280427</attachid>
            <date>2016-06-02 23:29:44 -0700</date>
            <delta_ts>2016-06-04 22:31:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160602233110.patch</filename>
            <type>text/plain</type>
            <size>53506</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA2LTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQgYmUg
bm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMuCisg
ICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYXJv
dW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBjb3B5
IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBhbG9u
Zy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50aWNz
IHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAgVGhl
IGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2UgYSBu
b24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJldHVy
bnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291
cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRpbmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6Ondp
bGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRS
ZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGly
ZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VUKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE2LTA2LTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAKICAgICAgICAgW2lPU10g
UERGRG9jdW1lbnRJbWFnZSBzaG91bGQgbm90IGNyZWF0ZSBhIGNhY2hlZCBpbWFnZSBsYXJnZXIg
dGhhbiA0TSBwaXhlbHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDExICs2MDcsMTIgQEAgUmVzb3VyY2VF
cnJvciBSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvdwogICAgIHJldHVybiBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IobV9yZXF1ZXN0KTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQor
UmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCh0aGlzLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gV1RGTW92
ZShyZXF1ZXN0KTsKICAgICB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChyZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTYzMikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODMsNyArMTgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2Fk
KCk7CiAKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAotICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24g
MjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdQogI2lmIFVTRShTT1VQ
KQogICAgICAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNp
emUsIHNpemVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIFJlc291cmNlUmVxdWVzdCB3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VS
ZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWdu
ZWQsIGludCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgaW50IGVuY29kZWRMZW5ndGgpIG92
ZXJyaWRlOwpAQCAtMTA4NSw4ICsxMDg1LDkgQEAgY2hhciogUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQ6OmdldAogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlSGFuZGxl
U3RyZWFtaW5nQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CisgICAgcmV0dXJuIFdU
Rk1vdmUocmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlc291cmNl
SGFuZGxlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLSAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShT
T1VQKQpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyQ2xpZW50KCk7CiAKICAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKCkuCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmKTsKIAogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoKS4KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzksMTUgQEAgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZQogUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpCiB7CiB9CisgICAgCitSZXNvdXJjZVJlcXVlc3Qg
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJikKK3sKKyAgICByZXR1
cm4gV1RGTW92ZShyZXF1ZXN0KTsKK30KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9u
c2UqLykKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UmJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykKIHsKLSAgICBoYW5kbGUtPmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgIGhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMjAxNjMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKICAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKIAotICAgICAgICAvLyBS
ZXF1ZXN0IG1heSBiZSBtb2RpZmllZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSB7IH0KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5
dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KQEAgLTg4LDcgKzg3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhS
KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVw
ZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QoKSB3aGVuIHJlYWR5LgotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICAgICAg
Ly8gQ2xpZW50IHdpbGwgY2FsbCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKSB3aGVuIHJlYWR5LgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjAxNjMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE2ICszNiwxNiBAQCBTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6flN5bmNocm9ub3VzTG9hCiB7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25z
ZSovKQorUmVzb3VyY2VSZXF1ZXN0IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZp
eGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QgY29ycmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFp
biByZXF1ZXN0cy4KICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGhhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogCiAgICAgQVNTRVJUKG1fZXJyb3IuaXNO
dWxsKCkpOwogICAgIG1fZXJyb3IgPSBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKICAgICBt
X2lzRG9uZSA9IHRydWU7Ci0gICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOworICAgIHJl
dHVybiB7IH07CiB9CiAKIGJvb2wgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlRXJyb3IgcGxhdGZvcm1C
YWRSZXNwb25zZUVycm9yKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiAvKnJlZGlyZWN0UmVzcG9uc2UqLykgb3ZlcnJpZGU7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
Nyw3ICsyODcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0KIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291cmNl
UmVxdWVzdCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGNv
bnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigp
OwpAQCAtMzE1LDE4ICszMTUsMjAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KFJlcwogICAgIH0KIAogICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7Ci0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBjbGllbnQo
KS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tz
KSB7CisgICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisgICAgCisgICAgYXV0byBuZXdSZXF1ZXN0ID0gY2xpZW50KCktPndpbGxTZW5k
UmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
KTsKIAotICAgICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9u
LCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgICAgIGlm
ICghcmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vz
c2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAvLyBDbGllbnQgY2FsbCBtYXkg
bm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNl
bnQgb3ZlciBJUEMuCisgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKSB7CisgICAgICAgIG5l
d1JlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CiAK
LSAgICAgICAgICAgIGQtPm1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0OwotICAgICAgICB9Cisg
ICAgICAgIGQtPm1fY3VycmVudFJlcXVlc3QgPSBuZXdSZXF1ZXN0OwogICAgIH0KKyAgICByZXR1
cm4gbmV3UmVxdWVzdDsKIH0KIAogYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoKQpAQCAtNjUwLDEyICs2NTIsMTEgQEAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBSZXNvdXJjZUhhbmRsZTo6YwogICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OwogfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdDsKLSAgICBpZiAoIXJlcXVlc3RSZXN1bHQuaXNO
dWxsKCkpCi0gICAgICAgIHJlcXVlc3RSZXN1bHQuc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSk7Ci0gICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3RSZXN1bHQuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5
KSk7CisgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXF1ZXN0LnNldFN0b3Jh
Z2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgIGQtPm1fY29ubmVjdGlv
bkRlbGVnYXRlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LmNmVVJMUmVxdWVzdChV
cGRhdGVIVFRQQm9keSkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJ
KHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3BvbnNlKTsK
IAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGNyZWF0ZVJlc291cmNlUmVxdWVz
dChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBtX2hhbmRsZS0+
d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworICAgICAg
ICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVz
cG9uc2UuZ2V0KCkpOwogICAgIH0pOwogCiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9z
ZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
Y3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5MiwxNSBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsCiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KGhh
bmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9
IGNyZWF0ZVJlc291cmNlUmVxdWVzdChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkp
OwotICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZS5nZXQoKSk7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKIAotICAgIGlmIChy
ZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobmV3UmVxdWVzdC5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjZlJlcXVlc3QgPSByZXF1
ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisgICAgYXV0byBuZXdDRlJlcXVlc3Qg
PSBuZXdSZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiAKLSAgICBDRlJldGFp
bihjZlJlcXVlc3QpOwotICAgIHJldHVybiBjZlJlcXVlc3Q7CisgICAgQ0ZSZXRhaW4obmV3Q0ZS
ZXF1ZXN0KTsKKyAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0OwogfQogCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1M
b2FkUmVzb3VyYwogICAgIGRhdGEuc3dhcChjbGllbnQubXV0YWJsZURhdGEoKSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJl
cXVlc3QgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBBU1NF
UlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwogCkBAIC00ODksMjMgKzQ4OSwyNCBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgfQogCiAgICAgaWYg
KGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKSB7Ci0gICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJl
cXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAg
ICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwotCi0gICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNl
c3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICAg
ICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdl
U2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIFJlZjxSZXNv
dXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0g
Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVzcG9uc2UpKTsKKworICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2Vy
dmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQ
Qy4KKyAgICBpZiAoIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIG5ld1JlcXVlc3Quc2V0
U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgcmV0dXJuIG5l
d1JlcXVlc3Q7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7
CiAgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKTsKIAogICAgIC8vIENsaWVudCBj
YWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVl
c3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IHJl
cXVlc3Q7CiAgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKQogICAgICAgICBuZXdSZXF1ZXN0
LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwogICAgIFsoaWQp
ZGVsZWdhdGUoKSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVz
dChVcGRhdGVIVFRQQm9keSldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03NywxMSArNzcsNyBAQCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihO
U1VSTENvbm5lCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5l
Y3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhUVFAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dKTsgCiAjZW5kaWYK
IAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsKLQotICAgIG1faGFu
ZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0KLSAgICBy
ZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBt
X2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpLm5z
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKEJPT0wpY29ubmVjdGlvblNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5ICsxMjIsNyBAQCAtIChOU1VSTFJlcXVl
c3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7Ci0KLSAg
ICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKICAgICB9KTsKIAogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2Vt
YXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsMTggKzQ2
NCwxNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3N0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICAvLyB3aWxsU2VuZFJl
cXVlc3QgbWlnaHQgY2FuY2VsIHRoZSBsb2FkLgogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9y
Q2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3
UmVxdWVzdChyZXF1ZXN0KTsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxl
LT5nZXRJbnRlcm5hbCgpOwotICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobmV3
UmVxdWVzdC51cmwoKSwgZC0+bV9yZXNwb25zZS51cmwoKSkpCi0gICAgICAgIGFwcGx5QXV0aGVu
dGljYXRpb25Ub1JlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCB0cnVlKTsKKyAgICBpZiAocHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJlcXVlc3QudXJsKCksIGQtPm1fcmVzcG9uc2UudXJs
KCkpKQorICAgICAgICBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KGhhbmRsZSwgcmVxdWVz
dCwgdHJ1ZSk7CiAKLSAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRs
ZShoYW5kbGUsIG5ld1JlcXVlc3QpKSB7CisgICAgaWYgKCFjcmVhdGVTb3VwUmVxdWVzdEFuZE1l
c3NhZ2VGb3JIYW5kbGUoaGFuZGxlLCByZXF1ZXN0KSkgewogICAgICAgICBkLT5jbGllbnQoKS0+
Y2Fubm90U2hvd1VSTChoYW5kbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMyLDEx
ICs1MzEsMTIgQEAgc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaAogCiAg
ICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZSk7CiAKKyAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlQ29weSA9IGQtPm1fcmVzcG9uc2U7CiAgICAgaWYgKGQtPmNsaWVudCgp
LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAgICAgICAgZC0+Y2xpZW50KCktPndpbGxTZW5kUmVx
dWVzdEFzeW5jKGhhbmRsZSwgbmV3UmVxdWVzdCwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGQt
PmNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyhoYW5kbGUsIFdURk1vdmUobmV3UmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2VDb3B5KSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGQtPmNsaWVu
dCgpLT53aWxsU2VuZFJlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCBkLT5tX3Jlc3BvbnNlKTsK
LSAgICAgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3Qp
OworICAgICAgICBhdXRvIHJlcXVlc3QgPSBkLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KGhh
bmRsZSwgV1RGTW92ZShuZXdSZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZUNvcHkpKTsKKyAgICAg
ICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIFdURk1vdmUocmVxdWVzdCkp
OwogICAgIH0KIAogfQpAQCAtMTM2NywxMCArMTM2NywxMCBAQCBzdGF0aWMgdm9pZCByZWFkQ2Fs
bGJhY2soR09iamVjdCosIEdBc3luCiAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJl
YWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIWNsaWVudCgpIHx8IGNsaWVudCgpLT51c2VzQXN5
bmNDYWxsYmFja3MoKSk7Ci0gICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdCh0aGlzLCBy
ZXF1ZXN0KTsKKyAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUo
cmVxdWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2MyBAQAorMjAxNi0wNi0w
MiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlZHVjZSBSZXNvdXJjZVJlcXVlc3QgY29weWluZyBpbiBsb2FkaW5nIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGlu
Z0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFzazo6Zmlyc3RSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5jZWwpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmN1cnJlbnRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNsZWFyQ3VycmVudFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cGVuZGluZ0Rvd25sb2FkSUQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENh
bmNlbGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDE2LTA2LTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViUHJvY2Vzczo6cmVnaXN0
ZXJXaXRoU3RhdGVEdW1wZXIoKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw3IEBAIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGkKIAog
Y2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwpAQCAtMTI2LDcg
KzEyNiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZp
cnN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0KCk7CiAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCk7Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRi
b3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgYm9vbCBhbGxvd3NTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUs
NyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjYW5jZWwoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2Vs
KCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jdXJyZW50UmVxdWVzdC51cGRh
dGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhuZXdSZXF1ZXN0Lm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CkBAIC0xMjgsOCArMTI4LDEwIEBAIHZvaWQgTmV0
d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXMKICAgICAgICAgICAgIHJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKICNlbmRpZgogICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNl
IGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KG1fY3VycmVudFJlcXVlc3QpOworICAgIH0gZWxzZSBpZiAobV9oYW5kbGUpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50UmVxdWVzdENvcHkgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgICAgICBtX2hh
bmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShjdXJyZW50UmVxdWVzdENvcHkp
KTsKKyAgICB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChyZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTYwLDE1ICsxNjIsMTUgQEAgTmV0d29ya0xvYWRDbGllbnQ6
OlNob3VsZENvbnRpbnVlRGlkUmVjZQogICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OnNoYXJl
ZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gV2Ugb25seSBleHBl
Y3QgdG8gZ2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJjZUhhbmRs
ZSBhcyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3Bv
bnNlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0
byBvbGRSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBhdXRvIG9sZFJlcXVlc3QgPSBX
VEZNb3ZlKG1fY3VycmVudFJlcXVlc3QpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0
OwotICAgIG1fY2xpZW50LndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qob2xkUmVxdWVzdCwgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgbV9jbGllbnQud2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
ZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC0yMDEs
MTEgKzIwMywxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxvYWQoUGVuCiAg
ICAgbV90YXNrLT5zZXRQZW5kaW5nRG93bmxvYWQocGVuZGluZ0Rvd25sb2FkKTsKIH0KIAotdm9p
ZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7
Ci0gICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSk7
CisgICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgc3RkOjpmdW5j
dGlvbjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IENyZWRl
bnRpYWwmKT4gY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTgsMTAgKzMyMCwxMCBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlCiAgICAgbV9jbGllbnQuZGlkRmFpbExv
YWRpbmcoZXJyb3IpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3lu
YyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBz
aGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OworICAgIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdDsgfQogICAgIHZvaWQgY2xlYXJDdXJy
ZW50UmVxdWVzdCgpIHsgbV9jdXJyZW50UmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCgpOyB9CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3dubG9hZElEKCkgeyByZXR1cm4gbV90YXNr
LT5wZW5kaW5nRG93bmxvYWRJRCgpOyB9CiAgICAgCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xp
ZW50Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAg
Ly8gUmVzb3VyY2VIYW5kbGVDbGllbnQKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKICAg
ICBOZXR3b3JrTG9hZENsaWVudCYgbV9jbGllbnQ7CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpID0gMDsKICAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg2LDkgKzQ4Niw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGkKICAgICBkb3dubG9hZE1hbmFnZXIo
KS5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZG93bmxvYWRJ
RCwgY2FuQXV0aGVudGljYXRlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJl
cXVlc3QoZG93bmxvYWRJRCwgcmVxdWVzdCk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2FkSUQgZG93
bmxvYWRJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSAgICB2
b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNp
ZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRp
b24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTW9kZWwo
dWludDMyX3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxMb2FkaQogICAgIGNsZWFudXAoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgKyttX3JlZGlyZWN0Q291
bnQ7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZWRpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkLT5jbGVhckN1cnJlbnRSZXF1ZXN0
KCk7CiAgICAgICAgICAgICBvdmVycmlkZW5SZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAg
ICAgICAgIH0KLSAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3Qob3ZlcnJpZGVuUmVxdWVz
dCk7CisgICAgICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUob3ZlcnJpZGVuUmVx
dWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNlbmRBYm9ydGluZ09uRmFpbHVy
ZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogICAgIE5FVFdP
UktSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJGb2xsb3dpbmcgcmVkaXJlY3Qgb2YgbmV0d29y
ayByZXNvdXJjZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQiLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEKSwgaXNNYWluUmVz
b3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKICNlbmRpZgogCiAgICAgaWYgKG1fbmV0
d29ya0xvYWQpCi0gICAgICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KG5ld1JlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lv
biAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgotICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBuZXdSZXF1ZXN0KTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpOwogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiBidWZmZXJlZERhdGEoKSB7IHJldHVybiBtX2J1ZmZlcmVkRGF0YS5nZXQoKTsgfQogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiBwcml2YXRlOgotICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDEyICs4NywxMiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50CiAg
ICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2Vy
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0g
bV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKICAgICBBU1NFUlQocGVuZGluZ0Rv
d25sb2FkKTsKICAgICBpZiAocGVuZGluZ0Rvd25sb2FkKQotICAgICAgICBwZW5kaW5nRG93bmxv
YWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBwZW5kaW5nRG93
bmxvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24g
MjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHN0ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFU
YXNrPiwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IGRhdGFUYXNrQmVjYW1lRG93
bmxvYWRUYXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAg
dm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxv
YWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJl
cXVlc3QoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0
cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHJldmlz
aW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgUGVu
ZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoY29uc3QgTgogICAgIG1fbmV0d29ya0xvYWQt
PnNldFBlbmRpbmdEb3dubG9hZCgqdGhpcyk7CiB9CiAKLXZvaWQgUGVuZGluZ0Rvd25sb2FkOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBQZW5kaW5n
RG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxT
ZW5kUmVxdWVzdChXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSkpKTsKIH07CiAgICAgCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9p
ZCBQZW5kaW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUGVuZGluZ0Rv
d25sb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3Qg
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgUGVuZGluZ0Rvd25sb2FkIDogcHVibGljIE5ldHdvcmtMbwogcHVibGlj
OgogICAgIFBlbmRpbmdEb3dubG9hZChjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmLCBEb3du
bG9hZElEKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogCiBwcml2
YXRlOiAgICAKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZTogICAgCiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKICAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6
On5TcGVjdWxhdGl2ZUxvYWQoKQogICAgIEFTU0VSVCghbV9uZXR3b3JrTG9hZCk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihO
ZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIGZvciAlcyBoaXQgYSByZWRp
cmVjdCwgYWJvcnRpbmcgdGhlIGxvYWQuIiwgcmVkaXJlY3RSZXNwb25zZS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBXZSBkcm9wIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlv
bnMgaWYgdGhleSByZWRpcmVjdCBmb3Igbm93IGFzIHdlIHdvdWxkIG5lZWQgdG8gbm90aWZ5IFdl
YkNvcmUgb2Ygc3VjaCByZWRpcmVjdHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQog
ICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRl
OwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0JKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKAogICAgICAgICBt
X2NsaWVudC0+ZGlkQmVjb21lRG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtEYXRhVGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDcgfHwgcmVkaXJl
Y3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwOCkgewogICAgICAgICBBU1NFUlQobV9s
YXN0SFRUUE1ldGhvZCA9PSByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CkBAIC0yMzIsNyArMjMyLDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgIH0KICAgICAK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihyZWRpcmVjdFJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlZGly
ZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NSwyMiArNzUsMjEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGV0YWNoRnJvbUNvcmVMbwogICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QsIFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCB0
aGlzKTsKIAotICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAg
ICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAg
UmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBwcm9wb3NlZFJlcXVlc3Q7Ci0gICAgaWYgKG1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5
YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdChtX2NvcmVMb2FkZXIuZ2V0KCksIG5ld1JlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpKQorICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3Qo
bV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQog
ICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdXBkYXRlIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciBjbGllbnRDcmVkZW50aWFsUG9saWN5IGluIGNhc2UgbG9hZGVyIHBv
bGljeSBpcyBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHM/Ci0gICAgbV9j
b3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RS
ZXNwb25zZSwgW3Byb3RlY3RdKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKLSAgICAgICAg
aWYgKCFwcm90ZWN0LT5tX2NvcmVMb2FkZXIpCisgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbcHJvdGVj
dGVkVGhpc10oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgeworICAgICAgICBpZiAoIXByb3Rl
Y3RlZFRoaXMtPm1fY29yZUxvYWRlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBw
cm90ZWN0LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KHJlcXVlc3QpKTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZVdpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0KSk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDE2MzIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVj
dGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKICAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280544</attachid>
            <date>2016-06-04 22:31:45 -0700</date>
            <delta_ts>2016-06-06 01:23:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158251-20160604223326.patch</filename>
            <type>text/plain</type>
            <size>53505</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA2LTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVxdWVzdCBjb3B5aW5nIGluIGxvYWRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGVyZSBzaG91bGQgYmUg
bm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBmZXdlciB1bm5lY2Vzc2FyeSBjb3BpZXMuCisg
ICAgICAgIEJlZm9yZSwgd2Ugd291bGQgcGFzcyBhIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYXJv
dW5kLCBhbmQgaWYgd2UgbmVlZGVkIHRvIG1vZGlmeSBpdAorICAgICAgICB3ZSB3b3VsZCBjb3B5
IHRoZSB3aG9sZSB0aGluZywgbW9kaWZ5IHRoZSBjb3B5LCBhbmQgcGFzcyB0aGUgY29weSBhbG9u
Zy4gIFRoaXMgY2FuIGJlCisgICAgICAgIGFjY29tcGxpc2hlZCB3aXRoIG1vdmUgc2VtYW50aWNz
IHdpdGhvdXQgdGhlIG5vdy11bm5lY2Vzc2FyeSBjb3B5LgorICAgICAgICAKKyAgICAgICAgVGhl
IGJpZ2dlc3QgY29uY2VwdHVhbCBjaGFuZ2UgaXMgdGhhdCB0aGUgc3luY2hyb25vdXMgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdAorICAgICAgICB1c2VkIHRvIHRha2UgYSBu
b24tY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhbmQgbW9kaWZ5IGl0LCBidXQgbm93IGl0IHJldHVy
bnMgYSBtb2RpZmllZAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291
cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmxvYWRpbmdTeW5jaHJvbm91c1hIUik6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp+U3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6Ondp
bGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRS
ZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOl0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGly
ZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdEFzR0VUKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorCiAyMDE2LTA2LTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAKICAgICAgICAgW2lPU10g
UERGRG9jdW1lbnRJbWFnZSBzaG91bGQgbm90IGNyZWF0ZSBhIGNhY2hlZCBpbWFnZSBsYXJnZXIg
dGhhbiA0TSBwaXhlbHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDExICs2MDcsMTIgQEAgUmVzb3VyY2VF
cnJvciBSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvdwogICAgIHJldHVybiBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IobV9yZXF1ZXN0KTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQor
UmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCh0aGlzLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gV1RGTW92
ZShyZXF1ZXN0KTsKICAgICB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChyZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTYzMikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODMsNyArMTgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2Fk
KCk7CiAKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAotICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24g
MjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdQogI2lmIFVTRShTT1VQ
KQogICAgICAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNp
emUsIHNpemVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgICAgIFJlc291cmNlUmVxdWVzdCB3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VS
ZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWdu
ZWQsIGludCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgaW50IGVuY29kZWRMZW5ndGgpIG92
ZXJyaWRlOwpAQCAtMTA4NSw4ICsxMDg1LDkgQEAgY2hhciogUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQ6OmdldAogfQogI2VuZGlmCiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlSGFuZGxl
U3RyZWFtaW5nQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYpCiB7CisgICAgcmV0dXJuIFdU
Rk1vdmUocmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlc291cmNl
SGFuZGxlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKLSAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShT
T1VQKQpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyQ2xpZW50KCk7CiAKICAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKCkuCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmKTsKIAogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoKS4KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMCArMzksMTUgQEAgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZQogUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpCiB7CiB9CisgICAgCitSZXNvdXJjZVJlcXVlc3Qg
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJikKK3sKKyAgICByZXR1
cm4gV1RGTW92ZShyZXF1ZXN0KTsKK30KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9u
c2UqLykKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UmJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykKIHsKLSAgICBoYW5kbGUtPmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgIGhhbmRsZS0+Y29udGludWVXaWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMjAxNjMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKICAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDbGllbnQoKTsKIAotICAgICAgICAvLyBS
ZXF1ZXN0IG1heSBiZSBtb2RpZmllZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKSB7IH0KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5
dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KQEAgLTg4LDcgKzg3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhS
KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVw
ZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QoKSB3aGVuIHJlYWR5LgotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICAgICAg
Ly8gQ2xpZW50IHdpbGwgY2FsbCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKSB3aGVuIHJlYWR5LgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjAxNjMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE2ICszNiwxNiBAQCBTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6flN5bmNocm9ub3VzTG9hCiB7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25z
ZSovKQorUmVzb3VyY2VSZXF1ZXN0IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZp
eGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QgY29ycmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFp
biByZXF1ZXN0cy4KICAgICBpZiAocHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGhhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogCiAgICAgQVNTRVJUKG1fZXJyb3IuaXNO
dWxsKCkpOwogICAgIG1fZXJyb3IgPSBwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKTsKICAgICBt
X2lzRG9uZSA9IHRydWU7Ci0gICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOworICAgIHJl
dHVybiB7IH07CiB9CiAKIGJvb2wgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlRXJyb3IgcGxhdGZvcm1C
YWRSZXNwb25zZUVycm9yKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiAvKnJlZGlyZWN0UmVzcG9uc2UqLykgb3ZlcnJpZGU7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
Nyw3ICsyODcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIH0KIH0KIAot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK1Jlc291cmNl
UmVxdWVzdCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGNv
bnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBkLT5tX3VzZXIgPSB1cmwudXNlcigp
OwpAQCAtMzE1LDE4ICszMTUsMjAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KFJlcwogICAgIH0KIAogICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7Ci0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBjbGllbnQo
KS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tz
KSB7CisgICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisgICAgCisgICAgYXV0byBuZXdSZXF1ZXN0ID0gY2xpZW50KCktPndpbGxTZW5k
UmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
KTsKIAotICAgICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9u
LCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCi0gICAgICAgIGlm
ICghcmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vz
c2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAvLyBDbGllbnQgY2FsbCBtYXkg
bm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNl
bnQgb3ZlciBJUEMuCisgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKSB7CisgICAgICAgIG5l
d1JlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CiAK
LSAgICAgICAgICAgIGQtPm1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0OwotICAgICAgICB9Cisg
ICAgICAgIGQtPm1fY3VycmVudFJlcXVlc3QgPSBuZXdSZXF1ZXN0OwogICAgIH0KKyAgICByZXR1
cm4gbmV3UmVxdWVzdDsKIH0KIAogYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoKQpAQCAtNjUwLDEyICs2NTIsMTEgQEAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBSZXNvdXJjZUhhbmRsZTo6YwogICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OwogfQog
Ci12b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdDsKLSAgICBpZiAoIXJlcXVlc3RSZXN1bHQuaXNO
dWxsKCkpCi0gICAgICAgIHJlcXVlc3RSZXN1bHQuc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSk7Ci0gICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3RSZXN1bHQuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5
KSk7CisgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXF1ZXN0LnNldFN0b3Jh
Z2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgIGQtPm1fY29ubmVjdGlv
bkRlbGVnYXRlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LmNmVVJMUmVxdWVzdChV
cGRhdGVIVFRQQm9keSkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJ
KHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3BvbnNlKTsK
IAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGNyZWF0ZVJlc291cmNlUmVxdWVz
dChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwotICAgICAgICBtX2hhbmRsZS0+
d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworICAgICAg
ICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVz
cG9uc2UuZ2V0KCkpOwogICAgIH0pOwogCiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9z
ZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
Y3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDE1ICs5MiwxNSBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsCiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KGhh
bmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9
IGNyZWF0ZVJlc291cmNlUmVxdWVzdChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkp
OwotICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZS5nZXQoKSk7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVz
dChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKIAotICAgIGlmIChy
ZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobmV3UmVxdWVzdC5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjZlJlcXVlc3QgPSByZXF1
ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisgICAgYXV0byBuZXdDRlJlcXVlc3Qg
PSBuZXdSZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiAKLSAgICBDRlJldGFp
bihjZlJlcXVlc3QpOwotICAgIHJldHVybiBjZlJlcXVlc3Q7CisgICAgQ0ZSZXRhaW4obmV3Q0ZS
ZXF1ZXN0KTsKKyAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0OwogfQogCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1M
b2FkUmVzb3VyYwogICAgIGRhdGEuc3dhcChjbGllbnQubXV0YWJsZURhdGEoKSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCitSZXNvdXJjZVJl
cXVlc3QgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBBU1NF
UlQoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwogCkBAIC00ODksMjMgKzQ4OSwyNCBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgfQogCiAgICAgaWYg
KGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKSB7Ci0gICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJl
cXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAg
ICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwotCi0gICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNl
c3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICAg
ICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdl
U2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSkpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIFJlZjxSZXNv
dXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0g
Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVzcG9uc2UpKTsKKworICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2Vy
dmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQ
Qy4KKyAgICBpZiAoIW5ld1JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIG5ld1JlcXVlc3Quc2V0
U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgcmV0dXJuIG5l
d1JlcXVlc3Q7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7
CiAgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKTsKIAogICAgIC8vIENsaWVudCBj
YWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJlcXVl
c3QgaXMgc2VudCBvdmVyIElQQy4KLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IHJl
cXVlc3Q7CiAgICAgaWYgKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKQogICAgICAgICBuZXdSZXF1ZXN0
LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwogICAgIFsoaWQp
ZGVsZWdhdGUoKSBjb250aW51ZVdpbGxTZW5kUmVxdWVzdDpuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVz
dChVcGRhdGVIVFRQQm9keSldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03NywxMSArNzcsNyBAQCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihO
U1VSTENvbm5lCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5l
Y3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhUVFAiLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dKTsgCiAjZW5kaWYK
IAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbmV3UmVxdWVzdDsKLQotICAgIG1faGFu
ZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0KLSAgICBy
ZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBt
X2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpLm5z
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKEJPT0wpY29ubmVjdGlvblNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw5ICsxMjIsNyBAQCAtIChOU1VSTFJlcXVl
c3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG5ld1JlcXVlc3Q7Ci0KLSAg
ICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICAgICAgbV9oYW5kbGUtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKICAgICB9KTsKIAogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2Vt
YXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsMTggKzQ2
NCwxNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3N0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICAvLyB3aWxsU2VuZFJl
cXVlc3QgbWlnaHQgY2FuY2VsIHRoZSBsb2FkLgogICAgIGlmIChoYW5kbGUtPmNhbmNlbGxlZE9y
Q2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgbmV3
UmVxdWVzdChyZXF1ZXN0KTsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxl
LT5nZXRJbnRlcm5hbCgpOwotICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobmV3
UmVxdWVzdC51cmwoKSwgZC0+bV9yZXNwb25zZS51cmwoKSkpCi0gICAgICAgIGFwcGx5QXV0aGVu
dGljYXRpb25Ub1JlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCB0cnVlKTsKKyAgICBpZiAocHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJlcXVlc3QudXJsKCksIGQtPm1fcmVzcG9uc2UudXJs
KCkpKQorICAgICAgICBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KGhhbmRsZSwgcmVxdWVz
dCwgdHJ1ZSk7CiAKLSAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRs
ZShoYW5kbGUsIG5ld1JlcXVlc3QpKSB7CisgICAgaWYgKCFjcmVhdGVTb3VwUmVxdWVzdEFuZE1l
c3NhZ2VGb3JIYW5kbGUoaGFuZGxlLCByZXF1ZXN0KSkgewogICAgICAgICBkLT5jbGllbnQoKS0+
Y2Fubm90U2hvd1VSTChoYW5kbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMyLDEx
ICs1MzEsMTIgQEAgc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaAogCiAg
ICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZSk7CiAKKyAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlQ29weSA9IGQtPm1fcmVzcG9uc2U7CiAgICAgaWYgKGQtPmNsaWVudCgp
LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAgICAgICAgZC0+Y2xpZW50KCktPndpbGxTZW5kUmVx
dWVzdEFzeW5jKGhhbmRsZSwgbmV3UmVxdWVzdCwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGQt
PmNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3luYyhoYW5kbGUsIFdURk1vdmUobmV3UmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2VDb3B5KSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGQtPmNsaWVu
dCgpLT53aWxsU2VuZFJlcXVlc3QoaGFuZGxlLCBuZXdSZXF1ZXN0LCBkLT5tX3Jlc3BvbnNlKTsK
LSAgICAgICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIG5ld1JlcXVlc3Qp
OworICAgICAgICBhdXRvIHJlcXVlc3QgPSBkLT5jbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KGhh
bmRsZSwgV1RGTW92ZShuZXdSZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZUNvcHkpKTsKKyAgICAg
ICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChoYW5kbGUsIFdURk1vdmUocmVxdWVzdCkp
OwogICAgIH0KIAogfQpAQCAtMTM2NywxMCArMTM2NywxMCBAQCBzdGF0aWMgdm9pZCByZWFkQ2Fs
bGJhY2soR09iamVjdCosIEdBc3luCiAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJl
YWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIWNsaWVudCgpIHx8IGNsaWVudCgpLT51c2VzQXN5
bmNDYWxsYmFja3MoKSk7Ci0gICAgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdCh0aGlzLCBy
ZXF1ZXN0KTsKKyAgICBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUo
cmVxdWVzdCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2MyBAQAorMjAxNi0wNi0w
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlZHVjZSBSZXNvdXJjZVJlcXVlc3QgY29weWluZyBpbiBsb2FkaW5nIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGlu
Z0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFzazo6Zmlyc3RSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5jZWwpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmN1cnJlbnRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNsZWFyQ3VycmVudFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cGVuZGluZ0Rvd25sb2FkSUQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENh
bmNlbGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OlBpbmdMb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrOjpkaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDE2LTA2LTAyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViUHJvY2Vzczo6cmVnaXN0
ZXJXaXRoU3RhdGVEdW1wZXIoKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw3IEBAIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGkKIAog
Y2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwpAQCAtMTI2LDcg
KzEyNiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGZp
cnN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RSZXF1ZXN0OyB9CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0KCk7CiAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCk7Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRi
b3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CiAgICAgYm9vbCBhbGxvd3NTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUs
NyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjYW5jZWwoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2Vs
KCk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9jdXJyZW50UmVxdWVzdC51cGRh
dGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhuZXdSZXF1ZXN0Lm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CkBAIC0xMjgsOCArMTI4LDEwIEBAIHZvaWQgTmV0
d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXMKICAgICAgICAgICAgIHJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKICNlbmRpZgogICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNl
IGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KG1fY3VycmVudFJlcXVlc3QpOworICAgIH0gZWxzZSBpZiAobV9oYW5kbGUpIHsKKyAgICAgICAg
YXV0byBjdXJyZW50UmVxdWVzdENvcHkgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgICAgICBtX2hh
bmRsZS0+Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShjdXJyZW50UmVxdWVzdENvcHkp
KTsKKyAgICB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChyZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTYwLDE1ICsxNjIsMTUgQEAgTmV0d29ya0xvYWRDbGllbnQ6
OlNob3VsZENvbnRpbnVlRGlkUmVjZQogICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OnNoYXJl
ZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gV2Ugb25seSBleHBl
Y3QgdG8gZ2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJjZUhhbmRs
ZSBhcyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3Bv
bnNlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0
byBvbGRSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBhdXRvIG9sZFJlcXVlc3QgPSBX
VEZNb3ZlKG1fY3VycmVudFJlcXVlc3QpOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0
OwotICAgIG1fY2xpZW50LndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qob2xkUmVxdWVzdCwgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgbV9jbGllbnQud2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
ZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC0yMDEs
MTEgKzIwMywxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXRQZW5kaW5nRG93bmxvYWQoUGVuCiAg
ICAgbV90YXNrLT5zZXRQZW5kaW5nRG93bmxvYWQocGVuZGluZ0Rvd25sb2FkKTsKIH0KIAotdm9p
ZCBOZXR3b3JrTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7
Ci0gICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSk7
CisgICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgc3RkOjpmdW5j
dGlvbjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IENyZWRl
bnRpYWwmKT4gY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTgsMTAgKzMyMCwxMCBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlCiAgICAgbV9jbGllbnQuZGlkRmFpbExv
YWRpbmcoZXJyb3IpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3lu
YyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBz
aGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OworICAgIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVxdWVzdDsgfQogICAgIHZvaWQgY2xlYXJDdXJy
ZW50UmVxdWVzdCgpIHsgbV9jdXJyZW50UmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCgpOyB9CiAKLSAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3dubG9hZElEKCkgeyByZXR1cm4gbV90YXNr
LT5wZW5kaW5nRG93bmxvYWRJRCgpOyB9CiAgICAgCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xp
ZW50Ci0gICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2Fubm90U2hvd1VSTCgpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAg
Ly8gUmVzb3VyY2VIYW5kbGVDbGllbnQKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKICAg
ICBOZXR3b3JrTG9hZENsaWVudCYgbV9jbGllbnQ7CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpID0gMDsKICAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgTm8sIFllcyB9OwogICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg2LDkgKzQ4Niw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGkKICAgICBkb3dubG9hZE1hbmFnZXIo
KS5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZG93bmxvYWRJ
RCwgY2FuQXV0aGVudGljYXRlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJl
cXVlc3QoZG93bmxvYWRJRCwgcmVxdWVzdCk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBlbmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2FkSUQgZG93
bmxvYWRJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSAgICB2
b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNp
ZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRp
b24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTW9kZWwo
dWludDMyX3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxMb2FkaQogICAgIGNsZWFudXAoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgKyttX3JlZGlyZWN0Q291
bnQ7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZWRpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkLT5jbGVhckN1cnJlbnRSZXF1ZXN0
KCk7CiAgICAgICAgICAgICBvdmVycmlkZW5SZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAg
ICAgICAgIH0KLSAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3Qob3ZlcnJpZGVuUmVxdWVz
dCk7CisgICAgICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUob3ZlcnJpZGVuUmVx
dWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNlbmRBYm9ydGluZ09uRmFpbHVy
ZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogICAgIE5FVFdP
UktSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJGb2xsb3dpbmcgcmVkaXJlY3Qgb2YgbmV0d29y
ayByZXNvdXJjZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQiLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEKSwgaXNNYWluUmVz
b3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKICNlbmRpZgogCiAgICAgaWYgKG1fbmV0
d29ya0xvYWQpCi0gICAgICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KG5ld1JlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZVdpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lv
biAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgotICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBuZXdSZXF1ZXN0KTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpOwogCiAgICAgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiBidWZmZXJlZERhdGEoKSB7IHJldHVybiBtX2J1ZmZlcmVkRGF0YS5nZXQoKTsgfQogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIFNob3VsZENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiBwcml2YXRlOgotICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CisgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDEyICs4NywxMiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50CiAg
ICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2Vy
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0g
bV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKICAgICBBU1NFUlQocGVuZGluZ0Rv
d25sb2FkKTsKICAgICBpZiAocGVuZGluZ0Rvd25sb2FkKQotICAgICAgICBwZW5kaW5nRG93bmxv
YWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBwZW5kaW5nRG93
bmxvYWQtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24g
MjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHN0ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFU
YXNrPiwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IGRhdGFUYXNrQmVjYW1lRG93
bmxvYWRUYXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAg
dm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxv
YWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJl
cXVlc3QoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0
cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHJldmlz
aW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgUGVu
ZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoY29uc3QgTgogICAgIG1fbmV0d29ya0xvYWQt
PnNldFBlbmRpbmdEb3dubG9hZCgqdGhpcyk7CiB9CiAKLXZvaWQgUGVuZGluZ0Rvd25sb2FkOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBQZW5kaW5n
RG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxT
ZW5kUmVxdWVzdChXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSkpKTsKIH07CiAgICAgCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQordm9p
ZCBQZW5kaW5nRG93bmxvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUGVuZGluZ0Rv
d25sb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3Qg
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCShyZXZpc2lvbiAyMDE2MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgUGVuZGluZ0Rvd25sb2FkIDogcHVibGljIE5ldHdvcmtMbwogcHVibGlj
OgogICAgIFBlbmRpbmdEb3dubG9hZChjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmLCBEb3du
bG9hZElEKTsKIAotICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogCiBwcml2
YXRlOiAgICAKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZTogICAgCiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKICAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkocmV2aXNpb24gMjAxNjMyKQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6
On5TcGVjdWxhdGl2ZUxvYWQoKQogICAgIEFTU0VSVCghbV9uZXR3b3JrTG9hZCk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihO
ZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIGZvciAlcyBoaXQgYSByZWRp
cmVjdCwgYWJvcnRpbmcgdGhlIGxvYWQuIiwgcmVkaXJlY3RSZXNwb25zZS51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBXZSBkcm9wIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlv
bnMgaWYgdGhleSByZWRpcmVjdCBmb3Igbm93IGFzIHdlIHdvdWxkIG5lZWQgdG8gbm90aWZ5IFdl
YkNvcmUgb2Ygc3VjaCByZWRpcmVjdHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAkocmV2aXNpb24gMjAxNjMyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQog
ICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRl
OwogICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0JKHJldmlzaW9uIDIwMTYzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZEJlY29tZURvd25sb2FkKAogICAgICAgICBt
X2NsaWVudC0+ZGlkQmVjb21lRG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtEYXRhVGFzazo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDcgfHwgcmVkaXJl
Y3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwOCkgewogICAgICAgICBBU1NFUlQobV9s
YXN0SFRUUE1ldGhvZCA9PSByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CkBAIC0yMzIsNyArMjMyLDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OndpbGxQZXJmb3JtSFRUUFJlZAogICAgIH0KICAgICAK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihyZWRpcmVjdFJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlZGly
ZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE2MzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NSwyMiArNzUsMjEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGV0YWNoRnJvbUNvcmVMbwogICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QsIFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCB0
aGlzKTsKIAotICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAg
ICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBS
ZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IHByb3Bvc2VkUmVxdWVzdDsKLSAgICBpZiAobV9j
b3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXli
ZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgbmV3UmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSkpCisgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCht
X2NvcmVMb2FkZXIuZ2V0KCksIHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byB1cGRhdGUgTmV0d29y
a1Jlc291cmNlTG9hZGVyIGNsaWVudENyZWRlbnRpYWxQb2xpY3kgaW4gY2FzZSBsb2FkZXIgcG9s
aWN5IGlzIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscz8KLSAgICBtX2Nv
cmVMb2FkZXItPndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJl
c3BvbnNlLCBbcHJvdGVjdF0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewotICAgICAgICBp
ZiAoIXByb3RlY3QtPm1fY29yZUxvYWRlcikKKyAgICBtX2NvcmVMb2FkZXItPndpbGxTZW5kUmVx
dWVzdChXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0
ZWRUaGlzXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CisgICAgICAgIGlmICghcHJvdGVj
dGVkVGhpcy0+bV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHBy
b3RlY3QtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q29udGludWVXaWxs
U2VuZFJlcXVlc3QocmVxdWVzdCkpOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVl
c3QpKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTYzMikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>