<?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>175723</bug_id>
          
          <creation_ts>2017-08-18 10:18:07 -0700</creation_ts>
          <short_desc>[Beacon] Improve error reporting</short_desc>
          <delta_ts>2017-08-18 17:28:04 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175443</dependson>
          <blocked>147885</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340129</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 10:18:07 -0700</bug_when>
    <thetext>Improve error reporting for beacon loads. Right now we only report synchronous errors, not asynchronous ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340212</commentid>
    <comment_count>1</comment_count>
      <attachid>318535</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 13:32:16 -0700</bug_when>
    <thetext>Created attachment 318535
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340226</commentid>
    <comment_count>2</comment_count>
      <attachid>318538</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 14:07:09 -0700</bug_when>
    <thetext>Created attachment 318538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340227</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-18 14:07:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/33969686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340234</commentid>
    <comment_count>4</comment_count>
      <attachid>318541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 14:24:51 -0700</bug_when>
    <thetext>Created attachment 318541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340260</commentid>
    <comment_count>5</comment_count>
      <attachid>318549</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 15:08:12 -0700</bug_when>
    <thetext>Created attachment 318549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340272</commentid>
    <comment_count>6</comment_count>
      <attachid>318549</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-08-18 15:40:07 -0700</bug_when>
    <thetext>Comment on attachment 318549
Patch

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

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:49
&gt; +    auto inflightBeacons = WTFMove(m_inflightBeacons);
&gt; +    for (auto&amp; beacon : inflightBeacons)
&gt; +        beacon-&gt;removeClient(*this);

Is there really some risk of reentry here? If not, it seems unnecessary to move m_inflightBeacons into a local variable.

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:54
&gt; +    NavigatorBeacon* supplement = static_cast&lt;NavigatorBeacon*&gt;(Supplement&lt;Navigator&gt;::from(navigator, supplementName()));

Please consider auto* here.

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:74
&gt; +    bool wasRemoved = m_inflightBeacons.removeFirst(&amp;resource);

If the operations we need are append and removeFirst, then normally we would want to use a Deque, not a Vector.

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:92
&gt; +    String description = error.localizedDescription();

Strange to use a &quot;localized&quot; description and then append hard-coded English text to it.

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:95
&gt; +            messageMiddle = ASCIILiteral(&quot; due to access control checks.&quot;);

Why does this even compile? We are assigning to a const char*. Or we can have the local variable be of type ASCIILiteral, which I think would be better.

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:100
&gt; +    document-&gt;addConsoleMessage(MessageSource::Network, MessageLevel::Error, makeString(&quot;Beacon API cannot load &quot;, error.failingURL().string(), messageMiddle, description));

We could do ASCIILiteral(messageMiddle) here.

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.h:51
&gt; +    static NavigatorBeacon* from(Navigator*);

Can this take a reference instead of a pointer?

&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.h:56
&gt; +    // CachedRawResourceClient
&gt; +    void notifyFinished(CachedResource&amp;) final;
&gt; +    void logError(const ResourceError&amp;);

Seems unnecessary to comment which class we are overriding here. But especially strange to label this paragraph with the class name, but only one of the two functions here is an override.

&gt; Source/WebCore/platform/network/PingHandle.h:48
&gt; +        , m_timeoutTimer(*this, &amp;PingHandle::timeoutTimerFired)

Consider using the lambda form of Timer instead of this one? I think we should use it in all new code, and only use the pointer-to-member-function one in legacy code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340282</commentid>
    <comment_count>7</comment_count>
      <attachid>318549</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 16:04:09 -0700</bug_when>
    <thetext>Comment on attachment 318549
Patch

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

&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:49
&gt;&gt; +        beacon-&gt;removeClient(*this);
&gt; 
&gt; Is there really some risk of reentry here? If not, it seems unnecessary to move m_inflightBeacons into a local variable.

I don&apos;t think this is an issue currently. I&apos;ll get rid of the local.

&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:54
&gt;&gt; +    NavigatorBeacon* supplement = static_cast&lt;NavigatorBeacon*&gt;(Supplement&lt;Navigator&gt;::from(navigator, supplementName()));
&gt; 
&gt; Please consider auto* here.

Ok.

&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:74
&gt;&gt; +    bool wasRemoved = m_inflightBeacons.removeFirst(&amp;resource);
&gt; 
&gt; If the operations we need are append and removeFirst, then normally we would want to use a Deque, not a Vector.

I think you may be confused by what removeFirst() does here. It removes the first match in the vector, not the first item in the vector.

&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:95
&gt;&gt; +            messageMiddle = ASCIILiteral(&quot; due to access control checks.&quot;);
&gt; 
&gt; Why does this even compile? We are assigning to a const char*. Or we can have the local variable be of type ASCIILiteral, which I think would be better.

Oops. I guess it works because of the &quot;operator const char*() { return m_characters; }&quot; operator on ASCIILiteral. Will fix.

&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:100
&gt;&gt; +    document-&gt;addConsoleMessage(MessageSource::Network, MessageLevel::Error, makeString(&quot;Beacon API cannot load &quot;, error.failingURL().string(), messageMiddle, description));
&gt; 
&gt; We could do ASCIILiteral(messageMiddle) here.

Ok.

&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.h:51
&gt;&gt; +    static NavigatorBeacon* from(Navigator*);
&gt; 
&gt; Can this take a reference instead of a pointer?

Ok.

&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.h:56
&gt;&gt; +    void logError(const ResourceError&amp;);
&gt; 
&gt; Seems unnecessary to comment which class we are overriding here. But especially strange to label this paragraph with the class name, but only one of the two functions here is an override.

Ok.

&gt;&gt; Source/WebCore/platform/network/PingHandle.h:48
&gt;&gt; +        , m_timeoutTimer(*this, &amp;PingHandle::timeoutTimerFired)
&gt; 
&gt; Consider using the lambda form of Timer instead of this one? I think we should use it in all new code, and only use the pointer-to-member-function one in legacy code.

This is not new code but I can take a look. Do you mean that we now prefer to inline the body of the timeoutTimerFired() method inside the init list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340283</commentid>
    <comment_count>8</comment_count>
      <attachid>318549</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 16:07:35 -0700</bug_when>
    <thetext>Comment on attachment 318549
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:74
&gt;&gt;&gt; +    bool wasRemoved = m_inflightBeacons.removeFirst(&amp;resource);
&gt;&gt; 
&gt;&gt; If the operations we need are append and removeFirst, then normally we would want to use a Deque, not a Vector.
&gt; 
&gt; I think you may be confused by what removeFirst() does here. It removes the first match in the vector, not the first item in the vector.

Technically, this could be a HashSet. It seemed a little overkill at first but I guess a page could send a lot of beacons. Please let me know if you&apos;d prefer a HashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340310</commentid>
    <comment_count>9</comment_count>
      <attachid>318556</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 16:42:01 -0700</bug_when>
    <thetext>Created attachment 318556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340311</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 16:43:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 318549 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318549&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/beacon/NavigatorBeacon.cpp:74
&gt; &gt;&gt;&gt; +    bool wasRemoved = m_inflightBeacons.removeFirst(&amp;resource);
&gt; &gt;&gt; 
&gt; &gt;&gt; If the operations we need are append and removeFirst, then normally we would want to use a Deque, not a Vector.
&gt; &gt; 
&gt; &gt; I think you may be confused by what removeFirst() does here. It removes the first match in the vector, not the first item in the vector.
&gt; 
&gt; Technically, this could be a HashSet. It seemed a little overkill at first
&gt; but I guess a page could send a lot of beacons. Please let me know if you&apos;d
&gt; prefer a HashSet.

It seems we don&apos;t currently have the right traits to have a HashSet of CachedResourceHandles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340335</commentid>
    <comment_count>11</comment_count>
      <attachid>318556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-18 17:28:02 -0700</bug_when>
    <thetext>Comment on attachment 318556
Patch

Clearing flags on attachment: 318556

Committed r220946: &lt;http://trac.webkit.org/changeset/220946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340336</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-18 17:28:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318535</attachid>
            <date>2017-08-18 13:32:16 -0700</date>
            <delta_ts>2017-08-18 14:07:07 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175723_beacon_error_reporting_wip.patch</filename>
            <type>text/plain</type>
            <size>29842</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJy
b3ItbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVh
Y29uLWFzeW5jLWVycm9yLWxvZ2dpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi44MjAwOGQ5N2YzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IEJlYWNvbiBBUEkgY2Fubm90
IGxvYWQgaHR0cDovL2ludmFsaWQubG9jYWxob3N0Ly4gQSBzZXJ2ZXIgd2l0aCB0aGUgc3BlY2lm
aWVkIGhvc3RuYW1lIGNvdWxkIG5vdCBiZSBmb3VuZC4KKworUEFTUyBTaG91bGQgbG9nIGFuIGVy
cm9yIG1lc3NhZ2UgaW4gdGhlIGNvbnNvbGUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMyNzZjZmU1MDgxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1s
b2dnaW5nLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGFzeW5jX3Rlc3QoZnVuY3Rpb24odCkgewor
ICAgICAgICBsZXQgaW52YWxpZEhvc3QgPSAiaHR0cDovL2ludmFsaWQubG9jYWxob3N0IjsKKyAg
ICAgICAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24oaW52YWxpZEhvc3QsICd0ZXN0
JyksICJzZW5kQmVhY29uIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0sIDUwMCk7Cisg
ICAgfSwgIlNob3VsZCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY29uc29sZSIpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCAxZmExZjQxMjY3MS4uMDQ3ZTQ1M2UxNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29u
LmNwcApAQCAtMjYsMTYgKzI2LDgwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
TmF2aWdhdG9yQmVhY29uLmgiCiAKKyNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGZXRjaEJvZHkuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRXhjZXB0aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpz
ZW5kQmVhY29uKE5hdmlnYXRvciYsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1
cmwsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmIGJvZHkpCitOYXZpZ2F0b3JCZWFj
b246Ok5hdmlnYXRvckJlYWNvbihOYXZpZ2F0b3ImIG5hdmlnYXRvcikKKyAgICA6IG1fbmF2aWdh
dG9yKG5hdmlnYXRvcikKK3sKK30KKworTmF2aWdhdG9yQmVhY29uOjp+TmF2aWdhdG9yQmVhY29u
KCkKK3sKKyAgICBhdXRvIGluZmxpZ2h0QmVhY29ucyA9IFdURk1vdmUobV9pbmZsaWdodEJlYWNv
bnMpOworICAgIGZvciAoYXV0byYgYmVhY29uIDogaW5mbGlnaHRCZWFjb25zKQorICAgICAgICBi
ZWFjb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7Cit9CisKK05hdmlnYXRvckJlYWNvbiogTmF2aWdh
dG9yQmVhY29uOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQoreworICAgIE5hdmlnYXRvckJl
YWNvbiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNvbio+KFN1cHBsZW1l
bnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKKyAgICBp
ZiAoIXN1cHBsZW1lbnQpIHsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KCpuYXZpZ2F0b3IpOworICAgICAgICBzdXBwbGVtZW50
ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKKyAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVy
biBzdXBwbGVtZW50OworfQorCitjb25zdCBjaGFyKiBOYXZpZ2F0b3JCZWFjb246OnN1cHBsZW1l
bnROYW1lKCkKK3sKKyAgICByZXR1cm4gIk5hdmlnYXRvckJlYWNvbiI7Cit9CisKK3ZvaWQgTmF2
aWdhdG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7
CisgICAgaWYgKCFyZXNvdXJjZS5yZXNvdXJjZUVycm9yKCkuaXNOdWxsKCkpCisgICAgICAgIGxv
Z0Vycm9yKHJlc291cmNlLnJlc291cmNlRXJyb3IoKSk7CisKKyAgICByZXNvdXJjZS5yZW1vdmVD
bGllbnQoKnRoaXMpOworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1faW5mbGlnaHRCZWFjb25zLnJl
bW92ZUZpcnN0KCZyZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNS
ZW1vdmVkKTsKK30KKwordm9pZCBOYXZpZ2F0b3JCZWFjb246OmxvZ0Vycm9yKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQoreworICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkpOworCisgICAg
YXV0byogZnJhbWUgPSBtX25hdmlnYXRvci5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciogbWVz
c2FnZU1pZGRsZSA9ICIuICI7CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKTsKKyAgICBpZiAoZGVzY3JpcHRpb24uaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChlcnJvci5pc0FjY2Vzc0NvbnRyb2woKSkKKyAgICAgICAgICAgIG1lc3NhZ2VNaWRk
bGUgPSBBU0NJSUxpdGVyYWwoIiBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLiIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtZXNzYWdlTWlkZGxlID0gIi4iOworICAgIH0KKworICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJCZWFjb24gQVBJIGNhbm5vdCBsb2FkICIsIGVy
cm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgbWVzc2FnZU1pZGRsZSwgZGVzY3JpcHRpb24pKTsK
K30KKworRXhjZXB0aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVhY29uKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5
OjpJbml0PiYmIGJvZHkpCiB7CiAgICAgVVJMIHBhcnNlZFVybCA9IGRvY3VtZW50LmNvbXBsZXRl
VVJMKHVybCk7CiAKQEAgLTczLDEyICsxMzcsMjEgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gTmF2aWdh
dG9yQmVhY29uOjpzZW5kQmVhY29uKE5hdmlnYXRvciYsIERvY3VtZW50JiBkb2N1bWVudCwgY28K
ICAgICAgICAgICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29y
czsKICAgICAgICAgfQogICAgIH0KKwogICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBkb2N1bWVu
dC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RCZWFjb25SZXNvdXJjZSh7IFdURk1vdmUo
cmVxdWVzdCksIG9wdGlvbnMgfSk7Ci0gICAgaWYgKGNhY2hlZFJlc291cmNlKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlKSB7CisgICAgICAgIGRvY3VtZW50
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGNhY2hlZFJlc291cmNlLmVycm9yKCkubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2luZmxpZ2h0QmVhY29ucy5hcHBl
bmQoY2FjaGVkUmVzb3VyY2UudmFsdWUoKS5nZXQoKSk7CisgICAgY2FjaGVkUmVzb3VyY2UudmFs
dWUoKS0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIGRvY3Vt
ZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGNhY2hlZFJlc291cmNlLmVycm9yKCkubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7
Ci0gICAgcmV0dXJuIGZhbHNlOworRXhjZXB0aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpz
ZW5kQmVhY29uKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiBib2R5KQorewor
ICAgIHJldHVybiBOYXZpZ2F0b3JCZWFjb246OmZyb20oJm5hdmlnYXRvciktPnNlbmRCZWFjb24o
ZG9jdW1lbnQsIHVybCwgV1RGTW92ZShib2R5KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmgKaW5kZXggNmZkZjg5ZGQ1YWUuLmUz
N2Y5YWU3ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZp
Z2F0b3JCZWFjb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uaApAQCAtMjUsMTggKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5Lmgi
CisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBOYXZpZ2F0b3I7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCi1jbGFz
cyBOYXZpZ2F0b3JCZWFjb24geworY2xhc3MgTmF2aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGlj
IFN1cHBsZW1lbnQ8TmF2aWdhdG9yPiwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7
CiBwdWJsaWM6CisgICAgZXhwbGljaXQgTmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYpOworICAg
IH5OYXZpZ2F0b3JCZWFjb24oKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJl
YWNvbihOYXZpZ2F0b3ImLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlv
bmFsPEZldGNoQm9keTo6SW5pdD4mJik7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0aW9uT3I8Ym9v
bD4gc2VuZEJlYWNvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFs
PEZldGNoQm9keTo6SW5pdD4mJik7CisKKyAgICBzdGF0aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9t
KE5hdmlnYXRvciopOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwor
CisgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBsb2dFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJik7CisKKyAgICBOYXZpZ2F0b3ImIG1fbmF2aWdhdG9yOworICAgIFZlY3RvcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IG1faW5mbGlnaHRCZWFjb25zOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiNjQyOTM0
NzVjZC4uNzM2ODEzNzA2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5o
CkBAIC02NCw3ICs2NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRp
bmdSZXF1ZXN0cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3Rz
KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRl
eHQqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3kqLCBjb25zdCBGZXRjaE9wdGlvbnMmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlciA9IHsgfSkgPSAwOworICAgIHVzaW5nIFBpbmdMb2FkQ29tcGxl
dGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VFcnJvciYmKT47CisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBj
b25zdCBGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0pID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEEx
OjpEaWdlc3QmIGJvZHlLZXksIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0
aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggODI5Y2Q5YmU1NjEuLjU1MTM1
NDNhNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTI3NCw4ICsyNzQsMTMgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNo
ZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgICAgICBhdXRv
KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudCAmJiAhZG9jdW1lbnQtPnNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpID8gZG9jdW1lbnQtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKICAgICAgICAgICAgIEFTU0VSVChtX29yaWdpbmFs
UmVxdWVzdEhlYWRlcnMpOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+c3RhcnRQaW5nTG9hZChmcmFtZS5sb2FkZXIoKS5u
ZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCAqbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCAq
bV9vcmlnaW4sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9vcHRpb25zLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgICAgICBmaW5p
c2hMb2FkaW5nKG51bGxwdHIpOworICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPnN0YXJ0UGluZ0xvYWQoZnJhbWUubG9hZGVyKCkubmV0d29ya2luZ0Nv
bnRleHQoKSwgcmVxdWVzdCwgKm1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgKm1fb3JpZ2luLCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIG1fb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoUmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hM
b2FkaW5nKG51bGxwdHIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBzZXRSZXNvdXJjZUVycm9yKFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy0+ZXJyb3IoTG9hZEVycm9yKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTNhMGYz
OTllYjkuLjBhNjc4Y2NmODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5Niw5ICsyOTYsOSBAQCBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cgogICAgIHJldHVybiBjYXN0Q2FjaGVkUmVzb3VyY2VUbzxDYWNoZWRS
YXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSwg
V1RGTW92ZShyZXF1ZXN0KSkpOwogfQogCi1SZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEJlYWNv
blJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCitSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdEJlYWNvblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiB7Ci0gICAgcmV0dXJuIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6QmVh
Y29uLCBXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88
Q2FjaGVkUmF3UmVzb3VyY2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6QmVhY29u
LCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9CiAKIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
TWFpblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDRj
Y2M4ODY0Nzk3Li5kMzI4OGNhYmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
ICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250Pj4gcmVx
dWVzdEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGJvb2wgaXNTVkcpOwogICAgIFJlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IHJlcXVl
c3RNZWRpYShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgUmVzb3VyY2VFcnJvck9yPENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdEljb24oQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYpOwotICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlcXVlc3RCZWFjb25SZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdEJlYWNvblJlc291cmNlKENhY2hlZFJlc291cmNlUmVx
dWVzdCYmKTsKICAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+PiByZXF1ZXN0UmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4+IHJlcXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogICAg
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4+
IHJlcXVlc3RTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCmluZGV4IGZiMjEwYTRiMDc1Li4x
MGEyN2RjZTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
aW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFu
ZGxlLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBObywKICAgICB9OwogICAg
IAotICAgIFBpbmdIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UsIFVzZXNBc3luY0NhbGxiYWNrcyB1c2VBc3luY0NhbGxiYWNrcywgYm9vbCBzaG91bGRG
b2xsb3dSZWRpcmVjdHMsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIFBpbmdIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UsIFVzZXNBc3luY0NhbGxiYWNrcyB1c2VBc3luY0NhbGxiYWNrcywgYm9vbCBzaG91bGRG
b2xsb3dSZWRpcmVjdHMsIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZUVycm9yJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0hh
bmRsZTo6dGltZW91dFRpbWVyRmlyZWQpCiAgICAgICAgICwgbV9zaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKICAgICAgICAgLCBtX3Nob3VsZEZv
bGxvd1JlZGlyZWN0cyhzaG91bGRGb2xsb3dSZWRpcmVjdHMpCkBAIC04MSw3ICs4MSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB+UGluZ0hhbmRsZSgpCiAgICAgewogICAgICAgICBpZiAobV9j
b21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAogICAgICAgICBpZiAobV9oYW5k
bGUpIHsKICAgICAgICAgICAgIEFTU0VSVChtX2hhbmRsZS0+Y2xpZW50KCkgPT0gdGhpcyk7CkBA
IC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlOwogICAgIGJvb2wgbV9zaG91bGRGb2xsb3dSZWRpcmVjdHM7CiAgICAgVXNlc0FzeW5j
Q2FsbGJhY2tzIG1fdXNlc0FzeW5jQ2FsbGJhY2tzOwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgp
PiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZUVy
cm9yJiYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBhY2RjYzQzOGY2OS4uOGI2YTQwZGIy
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yNDUsMTggKzI0NSwxOCBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyhOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmIGxvYQogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gY29u
dGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUobG9hZFBhcmFtZXRlcnMuc2Vz
c2lvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0KTsKIAogICAgIC8vIFBpbmdIYW5kbGUgbWFuYWdlcyBpdHMgb3duIGxpZmV0aW1lLCBk
ZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBoYXMgYmVlbiBmdWxmaWxsZWQuCi0gICAg
bmV3IFBpbmdIYW5kbGUoY29udGV4dC5nZXQoKSwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCwgbG9h
ZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzLCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6OlllcywgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkRm9sbG93UmVkaXJlY3RzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcl0gewotICAgICAgICBk
aWRGaW5pc2hQaW5nTG9hZChpZGVudGlmaWVyKTsKKyAgICBuZXcgUGluZ0hhbmRsZShjb250ZXh0
LmdldCgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBsb2FkUGFyYW1ldGVycy5hbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIFBpbmdIYW5kbGU6OlVzZXNB
c3luY0NhbGxiYWNrczo6WWVzLCBsb2FkUGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBsb2Fk
UGFyYW1ldGVycy5pZGVudGlmaWVyXSAoUmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CisgICAgICAg
IGRpZEZpbmlzaFBpbmdMb2FkKGlkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKICNlbmRpZgog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9h
ZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIGlmICghbV9jb25uZWN0aW9uLT5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEaWRGaW5pc2hQaW5nTG9hZChwaW5nTG9h
ZElkZW50aWZpZXIpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6RGlkRmluaXNoUGluZ0xvYWQocGluZ0xvYWRJZGVudGlmaWVy
LCBlcnJvciksIDApOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNTI0Y2Q4ZDg5NWUuLjJkZDFmODFkNTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwor
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtNjEs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyBy
ZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CiAKICAgICB2b2lkIGRpZENsZWFudXBSZXNvdXJj
ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXImKTsKLSAgICB2b2lkIGRpZEZpbmlzaFBpbmdM
b2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hQaW5n
TG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIAogICAgIGJvb2wgY2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxl
ZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDgy
OWIyNzk3ZmM1Li4yMTJjN2E2NTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oPgpAQCAtNjYsOCArNjcsNiBAQCBQaW5nTG9hZDo6
UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBIVFRQ
SGVhZGVyTWFwJiYgbwogCiBQaW5nTG9hZDo6flBpbmdMb2FkKCkKIHsKLSAgICBtX2Nvbm5lY3Rp
b24tPmRpZEZpbmlzaFBpbmdMb2FkKG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKLQogICAgIGlm
IChtX3JlZGlyZWN0SGFuZGxlcikKICAgICAgICAgbV9yZWRpcmVjdEhhbmRsZXIoeyB9KTsKIApA
QCAtNzgsNiArNzcsMTIgQEAgUGluZ0xvYWQ6On5QaW5nTG9hZCgpCiAgICAgfQogfQogCit2b2lk
IFBpbmdMb2FkOjpkaWRGaW5pc2goY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAg
bV9jb25uZWN0aW9uLT5kaWRGaW5pc2hQaW5nTG9hZChtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
ZXJyb3IpOworICAgIGRlbGV0ZSB0aGlzOworfQorCiB2b2lkIFBpbmdMb2FkOjpsb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInN0YXJ0TmV0d29ya0xvYWQiKTsKQEAgLTk3LDYgKzEwMiw4IEBAIFNlY3VyaXR5T3JpZ2lu
JiBQaW5nTG9hZDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogCiB2b2lkIFBpbmdMb2FkOjp3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdCA9IHJl
cXVlc3Q7CisKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbiAtIHNob3VsZEZvbGxvd1JlZGlyZWN0cz8gJWQiLCBtX3BhcmFtZXRlcnMuc2hvdWxk
Rm9sbG93UmVkaXJlY3RzKTsKICAgICBpZiAoIW1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRp
cmVjdHMpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTE0OSwxNCArMTU2
LDE0IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkUmVjZWl2ZUNoYWxsZW5nZSIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgeyB9KTsKLSAgICBkZWxldGUg
dGhpczsKKyAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50
UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9u
IiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiB9CiAKIHZvaWQgUGlu
Z0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZU5ldHdv
cmtTZXNzaW9uIC0gaHR0cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwot
ICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZpbmlzaCgpOwogfQogCiB2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQpAQCAtMTcxLDcgKzE3OCw4IEBAIHZv
aWQgUGluZ0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZENvbXBsZXRlIik7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRDb21wbGV0ZVdpdGhFcnJvciwgZXJyb3JfY29kZTogJWQiLCBlcnJvci5lcnJvckNvZGUoKSk7
Ci0gICAgZGVsZXRlIHRoaXM7CisKKyAgICBkaWRGaW5pc2goZXJyb3IpOwogfQogCiB2b2lkIFBp
bmdMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpAQCAtMTgxLDE5ICsxODksMjcgQEAgdm9pZCBQaW5nTG9h
ZDo6ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFQKIHZvaWQgUGluZ0xvYWQ6Ondhc0Jsb2NrZWQoKQogewogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndhc0Jsb2NrZWQiKTsKLSAgICBkZWxldGUgdGhpczsKKyAgICBkaWRG
aW5pc2goYmxvY2tlZEVycm9yKGN1cnJlbnRSZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBQaW5nTG9h
ZDo6Y2Fubm90U2hvd1VSTCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2Fubm90
U2hvd1VSTCIpOwotICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZpbmlzaChjYW5ub3RTaG93VVJM
RXJyb3IoY3VycmVudFJlcXVlc3QoKSkpOwogfQogCiB2b2lkIFBpbmdMb2FkOjp0aW1lb3V0VGlt
ZXJGaXJlZCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRpbWVyRmly
ZWQiKTsKLSAgICBkZWxldGUgdGhpczsKKyAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0
cmluZygpLCAwLCBjdXJyZW50UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkxvYWQgdGlt
ZWQgb3V0IiksIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7Cit9CisKK2NvbnN0IFJl
c291cmNlUmVxdWVzdCYgUGluZ0xvYWQ6OmN1cnJlbnRSZXF1ZXN0KCkgY29uc3QKK3sKKyAgICBp
ZiAobV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0KQorICAgICAgICByZXR1cm4gKm1fbGFzdFJlZGly
ZWN0aW9uUmVxdWVzdDsKKworICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdDsKIH0KIAog
Ym9vbCBQaW5nTG9hZDo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpIGNvbnN0CkBA
IC0yNjIsNyArMjc4LDcgQEAgdm9pZCBQaW5nTG9hZDo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVx
dWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWUKICAgICAgICAgaWYgKHJl
c3VsdCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6U3VjY2VzcykKICAg
ICAgICAgICAgIHByZWZsaWdodFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0IHsgY29yc1ByZWZsaWdo
dENoZWNrZXItPm9yaWdpbmFsUmVxdWVzdCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBkZWxldGUgdGhpczsKKyAgICAgICAgICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nKCksIDAsIGNvcnNQcmVmbGlnaHRDaGVja2VyLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwg
QVNDSUlMaXRlcmFsKCJDT1JTIHByZWZsaWdodCBmYWlsZWQiKSwgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICB9KTsKICAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2Vy
LT5zdGFydFByZWZsaWdodCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCmluZGV4IDQ1N2VmNmNlNGZjLi5jZjZhYTEwYWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0d29y
a0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtNjgsNiArNjksOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
CiAKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsK
KworICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBj
b25zdDsKKyAgICB2b2lkIGRpZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9
IHsgfSk7CiAgICAgCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0
ZXJzOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJz
OyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpAQCAtODAsNiArODQsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciBtX3JlZGlyZWN0SGFuZGxlcjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX2xhc3RSZWRp
cmVjdGlvblJlcXVlc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0
MmEyZGIyMGU1NS4uOTYyNGUyOTY0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
MTM1LDkgKzEzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRXcml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0SWRlCiAgICAgICAgIGhhbmRsZXIo
ZmlsZW5hbWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlz
aFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZp
ZXIsIFJlc291cmNlRXJyb3ImJiBlcnJvcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJMb2FkZXJTdHJhdGVneSgpLmRpZEZpbmlzaFBpbmdMb2FkKHBpbmdMb2FkSWRlbnRpZmll
cik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5kaWRG
aW5pc2hQaW5nTG9hZChwaW5nTG9hZElkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKTsKIH0KIAog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4
IDA5Y2QwNWI5Y2U5Li5jNTM0NGVhNjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTcz
LDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKLSAgICB2b2lkIGRpZEZpbmlzaFBp
bmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hQ
aW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImJik7CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIC8vIE1lc3NhZ2Ug
aGFuZGxlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXgg
YjY3NGY3ZWI0OTEuLjgzZWYyZTYyMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCkBAIC0yNyw1ICsyNyw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIERpZFdyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5n
PiBmaWxlbmFtZXMpCi0gICAgRGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVu
dGlmaWVyKQorICAgIERpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA2OWZi
OTFjODJiOC4uZTk3ZmNiZDdmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTM1Myw3ICszNTMsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQogCiAgICAgYXV0
byBwaW5nTG9hZENvbXBsZXRpb25IYW5kbGVycyA9IFdURk1vdmUobV9waW5nTG9hZENvbXBsZXRp
b25IYW5kbGVycyk7CiAgICAgZm9yIChhdXRvJiBwaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyIDog
cGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnMudmFsdWVzKCkpCi0gICAgICAgIHBpbmdMb2FkQ29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcihpbnRl
cm5hbEVycm9yKFVSTCgpKSk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBv
bGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKQEAgLTM5NiwxMyArMzk2
LDEzIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBpbmdMb2FkSWRlbnRpZmllcigpCiAgICAg
cmV0dXJuICsraWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQ
aW5nTG9hZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgQ29udGVudFNlY3VyaXR5UG9s
aWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBD
b250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGNhbGwgdG8gY3JlYXRlUGluZ0hh
bmRsZSBtaWdodCBiZSBtYWRlIGR1cmluZyBpbml0aWFsIGVtcHR5IERvY3VtZW50IGNyZWF0aW9u
IGJlZm9yZSBhIE5ldHdvcmtpbmdDb250ZXh0IGV4aXN0cy4KICAgICAvLyBJdCBpcyBub3QgY2xl
YXIgdGhhdCB3ZSBzaG91bGQgc2VuZCBwaW5nIGxvYWRzIGR1cmluZyB0aGF0IHByb2Nlc3MgYW55
d2F5cy4KICAgICBpZiAoIW5ldHdvcmtpbmdDb250ZXh0KSB7CiAgICAgICAgIGlmIChjb21wbGV0
aW9uSGFuZGxlcikKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDI5LDEwICs0MjksMTAgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6c3RhcnRQaW5nTG9hZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRl
eHQsIFJlc28KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6TG9hZFBpbmcoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMpLCAwKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUGluZ0xvYWQo
dWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlk
RmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVycm9y
JiYgZXJyb3IpCiB7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX3BpbmdMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzLnRha2UocGluZ0xvYWRJZGVudGlmaWVyKSkKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJv
cikpOwogfQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdG9yZURlcml2ZWREYXRhVG9DYWNo
ZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApp
bmRleCAyN2ZlYTA0ZjNiNC4uMmY0NGY4ZGI4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTksOCArNTksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7CiAgICAg
dm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRQaW5n
TG9hZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMs
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeSosIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcik7CisgICAgdm9pZCBz
dGFydFBpbmdMb2FkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0
SGVhZGVycywgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
JiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlz
aFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6
RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRp
dGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAKQEAgLTg1LDcgKzg1LDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFJlZlB0cjxXZWJSZXNv
dXJjZUxvYWRlcj4+IG1fd2ViUmVzb3VyY2VMb2FkZXJzOwogICAgIEhhc2hNYXA8dW5zaWduZWQg
bG9uZywgV2ViVVJMU2NoZW1lVGFza1Byb3h5Kj4gbV91cmxTY2hlbWVUYXNrczsKLSAgICBIYXNo
TWFwPHVuc2lnbmVkIGxvbmcsIFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9waW5nTG9hZENvbXBs
ZXRpb25IYW5kbGVyczsKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFBpbmdMb2FkQ29tcGxl
dGlvbkhhbmRsZXI+IG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAzYTc1MmY1
OGM0Ni4uZGJlOWQzZDY3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM2
Myw3ICszNjMsNyBAQCBib29sIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0
aW9uOjpsaW1pdFJlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaQogICAgIHJldHVybiBtX3JlcXVl
c3RzTG9hZGluZy5zaXplKCkgPj0gKHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpLmlzU2VyaWFs
TG9hZGluZ0VuYWJsZWQoKSA/IDEgOiBtX21heFJlcXVlc3RzSW5GbGlnaHQpOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c3RhcnRQaW5nTG9hZChOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5KiwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBGZXRjaE9w
dGlvbnMmIG9wdGlvbnMsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICAvLyBQaW5nSGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVs
ZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgogICAgIG5l
dyBQaW5nSGFuZGxlKG5ldHdvcmtpbmdDb250ZXh0LCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRp
YWxzICE9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIFBpbmdIYW5kbGU6OlVzZXNB
c3luY0NhbGxiYWNrczo6Tm8sIG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRp
cmVjdDo6Rm9sbG93LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAppbmRleCAzNzAxYmMzM2I3MC4uZjgxNjYyN2VhNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5k
UGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7CiAgICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMo
KSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXAmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAg
dm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeSosIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3JlRGVyaXZlZERhdGFUb0NhY2hl
KGNvbnN0IFNIQTE6OkRpZ2VzdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsIHsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318538</attachid>
            <date>2017-08-18 14:07:09 -0700</date>
            <delta_ts>2017-08-18 14:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175723-20170818140709.patch</filename>
            <type>text/plain</type>
            <size>40111</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2YTZiNGQwODI1OTU0
N2MwOTBjODVmYzVmNzVlODlkZGEyNDQ3Mi4uZDg2MmI0NTQ4Yzg3ZjUyMjExYzkyMjkwZjY4Mjkz
YzMzNzAzMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE3LTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW0JlYWNvbl0gSW1wcm92ZSBl
cnJvciByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhhdmUgUGluZyBsb2FkcyBzdWNoIGFzIGJlYWNvbnMgcmVwb3J0IGVycm9ycyB2aWEg
dGhlaXIgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBUaGUgQmVhY29uIEFQSSBpcyB1c2lu
ZyB0aGlzIGVycm9yIHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZSB3aGVuIGJlYWNvbiBsb2Fkcwor
ICAgICAgICBmYWlsLCBwcm92aWRlZCB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIGFsaXZlLgorCisg
ICAgICAgIFRlc3Q6IGh0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpOYXZpZ2F0b3JCZWFjb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjp+TmF2aWdhdG9yQmVhY29uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JCZWFjb246OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRv
ckJlYWNvbjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVh
Y29uOjpsb2dFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCZWFjb246OnNlbmRC
ZWFjb24pOgorICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oOgorICAg
ICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3Vy
Y2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oOgorCisyMDE3LTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBv
cnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGQ0NWM1MDdiNjJkZmU0NTJlYzVmZWIwNDZlM2VkYjY0ZDNjODkxNTUuLjMx
MzVjYzRlOTU2OWQwOGQ1NTQ1YWVhNGEyYzlhNzE5NDU0YzZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNDMgQEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMg
YmVhY29ucyByZXBvcnQgZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAg
ICAgIFRoZSBCZWFjb24gQVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBt
ZXNzYWdlIHdoZW4gYmVhY29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhl
IHBhZ2UgaXMgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp+
UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkRmluaXNoKToKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpj
YW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmN1cnJlbnRSZXF1ZXN0IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RX
aXRoUHJlZmxpZ2h0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFBpbmdM
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0
YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmlu
aXNoUGluZ0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oOgorCisyMDE3LTA4LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBvcnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ5NzNh
YWJmZjAzOTg1MmZmYTE3YzVjOTcwZTFiYzRlNTBhYWMyZWEuLjhkZTIxOWI5ZjI5ZTFhYjA3ODkz
ZDMxYTk2MzY2NjhmODA1NDU0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAg
ICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMgYmVhY29u
cyByZXBvcnQgZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIFRo
ZSBCZWFjb24gQVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBtZXNzYWdl
IHdoZW4gYmVhY29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhlIHBhZ2Ug
aXMgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzdGFy
dFBpbmdMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKworMjAxNy0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIFtCZWFjb25dIEFkZCBzdXBwb3J0IGZvciBxdW90YSBsaW1pdGF0aW9uCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NDMKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzI5MDAyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXggMWZhMWY0MTI2NzE0OTUwZGQ0NzIx
ZjJlM2MzZWEwNjA1NGI5M2RjOC4uOTBkYTEwNTdmMTczYmFlYmVkNGI3NGI0ZjI4NTg4Y2JhYzcy
ODdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JC
ZWFjb24uY3BwCkBAIC0yNiwxNiArMjYsODEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOYXZpZ2F0b3JCZWFjb24uaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFj
b246OnNlbmRCZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKK05hdmlnYXRv
ckJlYWNvbjo6TmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQorICAgIDogbV9u
YXZpZ2F0b3IobmF2aWdhdG9yKQoreworfQorCitOYXZpZ2F0b3JCZWFjb246On5OYXZpZ2F0b3JC
ZWFjb24oKQoreworICAgIGF1dG8gaW5mbGlnaHRCZWFjb25zID0gV1RGTW92ZShtX2luZmxpZ2h0
QmVhY29ucyk7CisgICAgZm9yIChhdXRvJiBiZWFjb24gOiBpbmZsaWdodEJlYWNvbnMpCisgICAg
ICAgIGJlYWNvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKworTmF2aWdhdG9yQmVhY29uKiBO
YXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCit7CisgICAgTmF2aWdh
dG9yQmVhY29uKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29uKj4oU3Vw
cGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwor
ICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4oKm5hdmlnYXRvcik7CisgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9CisgICAg
cmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKK2NvbnN0IGNoYXIqIE5hdmlnYXRvckJlYWNvbjo6c3Vw
cGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKK30KKwordm9p
ZCBOYXZpZ2F0b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3sKKyAgICBpZiAoIXJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc051bGwoKSkKKyAgICAg
ICAgbG9nRXJyb3IocmVzb3VyY2UucmVzb3VyY2VFcnJvcigpKTsKKworICAgIHJlc291cmNlLnJl
bW92ZUNsaWVudCgqdGhpcyk7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9pbmZsaWdodEJlYWNv
bnMucmVtb3ZlRmlyc3QoJnJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQs
IHdhc1JlbW92ZWQpOworICAgIEFTU0VSVCghbV9pbmZsaWdodEJlYWNvbnMuY29udGFpbnMoJnJl
c291cmNlKSk7Cit9CisKK3ZvaWQgTmF2aWdhdG9yQmVhY29uOjpsb2dFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKKworICAg
IGF1dG8qIGZyYW1lID0gbV9uYXZpZ2F0b3IuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGNoYXIqIG1l
c3NhZ2VNaWRkbGUgPSAiLiAiOworICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCk7CisgICAgaWYgKGRlc2NyaXB0aW9uLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoZXJyb3IuaXNBY2Nlc3NDb250cm9sKCkpCisgICAgICAgICAgICBtZXNzYWdlTWlk
ZGxlID0gQVNDSUlMaXRlcmFsKCIgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbWVzc2FnZU1pZGRsZSA9ICIuIjsKKyAgICB9CisKKyAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVz
c2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiQmVhY29uIEFQSSBjYW5ub3QgbG9hZCAiLCBl
cnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksIG1lc3NhZ2VNaWRkbGUsIGRlc2NyaXB0aW9uKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPGJvb2w+IE5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbihEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJiBib2R5KQogewogICAgIFVSTCBwYXJzZWRVcmwgPSBkb2N1bWVudC5jb21wbGV0
ZVVSTCh1cmwpOwogCkBAIC03MywxMiArMTM4LDIyIEBAIEV4Y2VwdGlvbk9yPGJvb2w+IE5hdmln
YXRvckJlYWNvbjo6c2VuZEJlYWNvbihOYXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
CiAgICAgICAgICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0Nv
cnM7CiAgICAgICAgIH0KICAgICB9CisKICAgICBhdXRvIGNhY2hlZFJlc291cmNlID0gZG9jdW1l
bnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0QmVhY29uUmVzb3VyY2UoeyBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zIH0pOwotICAgIGlmIChjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkgeworICAgICAgICBsb2dFcnJv
cihjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIEFTU0VSVCghbV9pbmZsaWdodEJlYWNvbnMuY29udGFpbnMoY2FjaGVkUmVzb3VyY2Uu
dmFsdWUoKS5nZXQoKSkpOworICAgIG1faW5mbGlnaHRCZWFjb25zLmFwcGVuZChjYWNoZWRSZXNv
dXJjZS52YWx1ZSgpLmdldCgpKTsKKyAgICBjYWNoZWRSZXNvdXJjZS52YWx1ZSgpLT5hZGRDbGll
bnQoKnRoaXMpOworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgZG9jdW1lbnQuYWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgY2Fj
aGVkUmVzb3VyY2UuZXJyb3IoKS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKLSAgICByZXR1cm4g
ZmFsc2U7CitFeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oTmF2
aWdhdG9yJiBuYXZpZ2F0b3IsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmws
IHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmIGJvZHkpCit7CisgICAgcmV0dXJuIE5h
dmlnYXRvckJlYWNvbjo6ZnJvbSgmbmF2aWdhdG9yKS0+c2VuZEJlYWNvbihkb2N1bWVudCwgdXJs
LCBXVEZNb3ZlKGJvZHkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uaAppbmRleCA2ZmRmODlkZDVhZWZlMzZjZmEyYWIwNzUxZTk4
MzhhNGE4NGE2NjhkLi5lMzdmOWFlN2Y1OTFjZDU0NzI3ZjdjMDU1Y2U3OTAyZTZmNmZkNWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uaApA
QCAtMjUsMTggKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCisjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBOYXZpZ2F0b3I7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCi1jbGFzcyBOYXZpZ2F0b3JC
ZWFjb24geworY2xhc3MgTmF2aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPiwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6Cisg
ICAgZXhwbGljaXQgTmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYpOworICAgIH5OYXZpZ2F0b3JC
ZWFjb24oKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNvbihOYXZpZ2F0
b3ImLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJik7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNv
bihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6
SW5pdD4mJik7CisKKyAgICBzdGF0aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9tKE5hdmlnYXRvciop
OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgLy8gQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJikgZmluYWw7CisgICAgdm9pZCBsb2dFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CisK
KyAgICBOYXZpZ2F0b3ImIG1fbmF2aWdhdG9yOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IG1faW5mbGlnaHRCZWFjb25zOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiNjQyOTM0NzVjZGVjNTQ2NjRj
NGZlODA1NWRlNjgzNjMwY2Y5NmM2Li44ODI3NTY3YzQ0NGMxOWIyNDUzMTVlMmQyOTUxNGI5YjAy
YWJiMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNjQsNyAr
NjQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVBlbmRpbmdSZXF1ZXN0cygpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgQ29udGVudFNlY3VyaXR5UG9saWN5
KiwgY29uc3QgRmV0Y2hPcHRpb25zJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSB7IH0pID0gMDsKKyAgICB1c2luZyBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqLCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBG
ZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0pID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdl
c3QmIGJvZHlLZXksIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24s
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggODI5Y2Q5YmU1NjE4NjMwOTBhMzgxMjY0
YTQ3NWExOTc5ZDk3MzI0Yy4uNDg1ZmMzOTE3MjM1MWQ1NDUwZTU2ZDhiZWRmMjBkOTdiNGY0ZjYx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0yNzQsOCArMjc0LDEzIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICAgICAgYXV0byogY29u
dGVudFNlY3VyaXR5UG9saWN5ID0gZG9jdW1lbnQgJiYgIWRvY3VtZW50LT5zaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSA/IGRvY3VtZW50LT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFJlcXVl
c3RIZWFkZXJzKTsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPnN0YXJ0UGluZ0xvYWQoZnJhbWUubG9hZGVyKCkubmV0d29y
a2luZ0NvbnRleHQoKSwgcmVxdWVzdCwgKm1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgKm1fb3Jp
Z2luLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICAgICAgZmluaXNoTG9h
ZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5zdGFydFBpbmdMb2FkKGZyYW1lLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0
KCksIHJlcXVlc3QsICptX29yaWdpbmFsUmVxdWVzdEhlYWRlcnMsICptX29yaWdpbiwgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX29wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKV0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hM
b2FkaW5nKG51bGxwdHIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBzZXRSZXNvdXJjZUVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy0+
ZXJyb3IoTG9hZEVycm9yKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTNhMGYzOTllYjljMDQ1
ZmNkNjkwMjg2NDAxZDVkZWQ4ZGViNGRjYS4uMGE2NzhjY2Y4NWE3ODhhMTJhNDA0M2U0YmM2YWRm
ODA1MDQwYTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTYsOSArMjk2LDkgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnIKICAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIFdURk1vdmUo
cmVxdWVzdCkpKTsKIH0KIAotUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RCZWFjb25SZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RCZWFjb25SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewotICAgIHJldHVybiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkJlYWNvbiwgV1RG
TW92ZShyZXF1ZXN0KSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFJh
d1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkJlYWNvbiwgV1RGTW92
ZShyZXF1ZXN0KSkpOwogfQogCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNv
dXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0Y2NjODg2NDc5
NzRkNmYwNzYyYTA0ZGFiY2M4ZjNjN2YyNDUzM2RhLi5kMzI4OGNhYmMxM2VmOTAzNjEzYzJjZTc5
ZGVhZGMwMWIzOWU3MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgUmVz
b3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiByZXF1ZXN0Rm9u
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc1NWRyk7CiAgICAgUmVzb3VyY2VFcnJv
ck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdE1lZGlh
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0SWNvbihDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJik7Ci0gICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gcmVxdWVzdEJlYWNvblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+PiByZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4+IHJlcXVlc3RSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAg
UmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4g
cmVxdWVzdE1haW5SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgUmVzb3Vy
Y2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gcmVxdWVz
dFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgKaW5kZXggZmIyMTBhNGIwNzUzYzVkNzRlMDA0
MzU0ZGMzNDI2ZTUxNWNlNDg0Ny4uNTk2ZDk4MTVjYjU0OGRkN2NkZDhmMWUyNzc0ZGI2MTkwM2Ez
MDVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgK
QEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgogICAgICAgICBObywKICAgICB9OwogICAgIAotICAg
IFBpbmdIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IFVzZXNBc3luY0NhbGxiYWNrcyB1c2VBc3luY0NhbGxiYWNrcywgYm9vbCBzaG91bGRGb2xsb3dS
ZWRpcmVjdHMsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAg
ICAgICA6IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0hhbmRsZTo6dGltZW91dFRpbWVyRmly
ZWQpCisgICAgUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSwgVXNlc0FzeW5jQ2FsbGJhY2tzIHVzZUFzeW5jQ2FsbGJhY2tzLCBib29sIHNob3Vs
ZEZvbGxvd1JlZGlyZWN0cywgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3Im
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2N1cnJlbnRSZXF1ZXN0KHJlcXVl
c3QpCisgICAgICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nSGFuZGxlOjp0aW1lb3V0
VGltZXJGaXJlZCkKICAgICAgICAgLCBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogICAgICAgICAsIG1fc2hvdWxkRm9sbG93UmVkaXJlY3Rz
KHNob3VsZEZvbGxvd1JlZGlyZWN0cykKICAgICAgICAgLCBtX3VzZXNBc3luY0NhbGxiYWNrcyh1
c2VBc3luY0NhbGxiYWNrcykKQEAgLTY0LDI1ICs2NSwzMSBAQCBwcml2YXRlOgogICAgIH0KICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJikgZmluYWwKICAgICB7Cisg
ICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgICAgICBpZiAo
bV9zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKLSAgICAgICAgICAgIGhhbmRsZS0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICBoYW5kbGUtPmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCB7IG1fY3VycmVudFJlcXVlc3Qg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlIHRoaXM7
CisgICAgICAgIHBpbmdMb2FkQ29tcGxldGUoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIGZvbGxv
dyByZWRpcmVjdHMiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAg
ICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpIGZpbmFsIHsgZGVsZXRlIHRoaXM7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsg
ZGVsZXRlIHRoaXM7IH07Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxl
KikgZmluYWwgeyBkZWxldGUgdGhpczsgfQotICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdM
b2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSopIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRD
b21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJl
c291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZTsgfQogICAgIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkgZmluYWwgeyByZXR1cm4gbV91c2Vz
QXN5bmNDYWxsYmFja3MgPT0gVXNlc0FzeW5jQ2FsbGJhY2tzOjpZZXM7IH0KLSAgICB2b2lkIHRp
bWVvdXRUaW1lckZpcmVkKCkgeyBkZWxldGUgdGhpczsgfQorICAgIHZvaWQgdGltZW91dFRpbWVy
RmlyZWQoKSB7IHBpbmdMb2FkQ29tcGxldGUoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkxvYWQgdGltZWQgb3V0IiksIFJl
c291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0KIAotICAgIHZpcnR1YWwgflBpbmdIYW5k
bGUoKQorICAgIHZvaWQgcGluZ0xvYWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciA9IHsgfSkKICAgICB7Ci0gICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQotICAgICAg
ICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgICAgIGRlbGV0ZSB0aGlz
OworICAgIH0KIAorICAgIHZpcnR1YWwgflBpbmdIYW5kbGUoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgaWYgKG1faGFuZGxlKSB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9oYW5kbGUtPmNsaWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAg
bV9oYW5kbGUtPmNsZWFyQ2xpZW50KCk7CkBAIC05MSwxMSArOTgsMTIgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOworICAgIFJlc291cmNl
UmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFRpbWVyIG1fdGltZW91dFRpbWVyOwogICAg
IGJvb2wgbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsKICAgICBib29sIG1fc2hvdWxkRm9s
bG93UmVkaXJlY3RzOwogICAgIFVzZXNBc3luY0NhbGxiYWNrcyBtX3VzZXNBc3luY0NhbGxiYWNr
czsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPiBtX2NvbXBsZXRpb25IYW5k
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCBhY2RjYzQzOGY2OTQ4ODFhMjE1ZDY2YWZkZWQ5NzExNDI3ZmJkODczLi44YjZh
NDBkYjI4YzczNWQ4MTI2OTU5NzZhMDUyODk0MzQ1N2ExNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtMjQ1LDE4ICsyNDUsMTggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2EK
ICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRCwgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAKICAgICAvLyBQaW5n
SGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRz
IHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgotICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQu
Z2V0KCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QsIGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVk
Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscywgUGluZ0hhbmRsZTo6VXNlc0Fz
eW5jQ2FsbGJhY2tzOjpZZXMsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGxvYWRQ
YXJhbWV0ZXJzLmlkZW50aWZpZXJdIHsKLSAgICAgICAgZGlkRmluaXNoUGluZ0xvYWQoaWRlbnRp
Zmllcik7CisgICAgbmV3IFBpbmdIYW5kbGUoY29udGV4dC5nZXQoKSwgbG9hZFBhcmFtZXRlcnMu
cmVxdWVzdCwgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9PSBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzLCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6OlllcywgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcl0g
KFJlc291cmNlRXJyb3ImJiBlcnJvcikgeworICAgICAgICBkaWRGaW5pc2hQaW5nTG9hZChpZGVu
dGlmaWVyLCBlcnJvcik7CiAgICAgfSk7CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVu
dGlmaWVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUGlu
Z0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbi0+aXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6RGlkRmluaXNoUGluZ0xvYWQocGluZ0xvYWRJZGVudGlmaWVyKSwgMCk7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRp
ZEZpbmlzaFBpbmdMb2FkKHBpbmdMb2FkSWRlbnRpZmllciwgZXJyb3IpLCAwKTsKIH0KIAogdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlTG9hZElkZW50aWZpZXIoUmVz
b3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDUyNGNkOGQ4OTVlZWViOTg3ZDc4Y2Q4MDUwZTllZThkZmEzNDAxZGIuLjJkZDFmODFkNTMx
NTk1NDhhYmJlNWQwN2MwYjM0ZGFhYzRhNTZkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCkBAIC02MSw3ICs2Miw3IEBAIHB1YmxpYzoKICAg
ICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0
KCk7IH0KIAogICAgIHZvaWQgZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYpOwotICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2Fk
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgYm9vbCBj
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9j
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggODI5YjI3OTdmYzUzNzA0ZmUwNGEyMzJh
YWEyZTg4MGMyZDUyMmI1YS4uMjEyYzdhNjUxY2RlOTFlOGY0OTNkMTQzZmExOTUzZWE1ZTU3ZTIz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNlc3Npb25U
cmFja2VyLmgiCisjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5oPgpAQCAtNjYsOCArNjcsNiBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBIVFRQSGVhZGVyTWFwJiYgbwogCiBQaW5n
TG9hZDo6flBpbmdMb2FkKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPmRpZEZpbmlzaFBpbmdMb2Fk
KG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKLQogICAgIGlmIChtX3JlZGlyZWN0SGFuZGxlcikK
ICAgICAgICAgbV9yZWRpcmVjdEhhbmRsZXIoeyB9KTsKIApAQCAtNzgsNiArNzcsMTIgQEAgUGlu
Z0xvYWQ6On5QaW5nTG9hZCgpCiAgICAgfQogfQogCit2b2lkIFBpbmdMb2FkOjpkaWRGaW5pc2go
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgbV9jb25uZWN0aW9uLT5kaWRGaW5p
c2hQaW5nTG9hZChtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IpOworICAgIGRlbGV0ZSB0
aGlzOworfQorCiB2b2lkIFBpbmdMb2FkOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQi
KTsKQEAgLTk3LDYgKzEwMiw4IEBAIFNlY3VyaXR5T3JpZ2luJiBQaW5nTG9hZDo6c2VjdXJpdHlP
cmlnaW4oKSBjb25zdAogCiB2b2lkIFBpbmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQog
eworICAgIG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdCA9IHJlcXVlc3Q7CisKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIHNob3VsZEZvbGxv
d1JlZGlyZWN0cz8gJWQiLCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKTsKICAg
ICBpZiAoIW1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTE0OSwxNCArMTU2LDE0IEBAIHZvaWQgUGluZ0xvYWQ6
OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFs
bGVuZ2VDb21wCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUNoYWxs
ZW5nZSIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCwgeyB9KTsKLSAgICBkZWxldGUgdGhpczsKKyAgICBkaWRGaW5pc2go
UmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50UmVxdWVzdCgpLnVybCgpLCBBU0NJ
SUxpdGVyYWwoIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIiksIFJlc291cmNlRXJyb3I6OlR5
cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uIC0gaHR0cFN0YXR1
c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwotICAgIGRlbGV0ZSB0aGlzOworICAg
IGRpZEZpbmlzaCgpOwogfQogCiB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmKQpAQCAtMTcxLDcgKzE3OCw4IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBOZXR3b3JrTG9h
CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZENvbXBsZXRlIik7CiAgICAgZWxz
ZQogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRDb21wbGV0ZVdpdGhFcnJvciwg
ZXJyb3JfY29kZTogJWQiLCBlcnJvci5lcnJvckNvZGUoKSk7Ci0gICAgZGVsZXRlIHRoaXM7CisK
KyAgICBkaWRGaW5pc2goZXJyb3IpOwogfQogCiB2b2lkIFBpbmdMb2FkOjpkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KQpAQCAtMTgxLDE5ICsxODksMjcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkU2VuZERhdGEodWludDY0
X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFQKIHZvaWQgUGlu
Z0xvYWQ6Ondhc0Jsb2NrZWQoKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndhc0Js
b2NrZWQiKTsKLSAgICBkZWxldGUgdGhpczsKKyAgICBkaWRGaW5pc2goYmxvY2tlZEVycm9yKGN1
cnJlbnRSZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBQaW5nTG9hZDo6Y2Fubm90U2hvd1VSTCgpCiB7
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2Fubm90U2hvd1VSTCIpOwotICAgIGRlbGV0
ZSB0aGlzOworICAgIGRpZEZpbmlzaChjYW5ub3RTaG93VVJMRXJyb3IoY3VycmVudFJlcXVlc3Qo
KSkpOwogfQogCiB2b2lkIFBpbmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCgpCiB7CiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRpbWVyRmlyZWQiKTsKLSAgICBkZWxldGUgdGhp
czsKKyAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50UmVx
dWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkxvYWQgdGltZWQgb3V0IiksIFJlc291cmNlRXJy
b3I6OlR5cGU6OlRpbWVvdXQgfSk7Cit9CisKK2NvbnN0IFJlc291cmNlUmVxdWVzdCYgUGluZ0xv
YWQ6OmN1cnJlbnRSZXF1ZXN0KCkgY29uc3QKK3sKKyAgICBpZiAobV9sYXN0UmVkaXJlY3Rpb25S
ZXF1ZXN0KQorICAgICAgICByZXR1cm4gKm1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdDsKKworICAg
IHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdDsKIH0KIAogYm9vbCBQaW5nTG9hZDo6aXNBbGxv
d2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpIGNvbnN0CkBAIC0yNjIsNyArMjc4LDcgQEAgdm9p
ZCBQaW5nTG9hZDo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWUKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6U3VjY2VzcykKICAgICAgICAgICAgIHByZWZsaWdodFN1
Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0IHsgY29yc1ByZWZsaWdodENoZWNrZXItPm9yaWdpbmFsUmVx
dWVzdCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZWxldGUgdGhpczsKKyAgICAg
ICAgICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGNvcnNQcmVmbGln
aHRDaGVja2VyLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgQVNDSUlMaXRlcmFsKCJDT1JTIHBy
ZWZsaWdodCBmYWlsZWQiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsK
ICAgICB9KTsKICAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyLT5zdGFydFByZWZsaWdodCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDQ1N2VmNmNlNGZj
ODJiNTFlODBmY2IwYWE3Y2YyM2NkYWQ0YjEwMTUuLmNmNmFhMTBhYjhhZmRlNjY4YzE5ZjBjMzJk
NzllYWVkMTRlMDA3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1
cml0eVBvbGljeTsKQEAgLTY4LDYgKzY5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZWZsaWdo
dFN1Y2Nlc3MoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCiAgICAgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KCkgY29uc3Q7CisgICAgdm9pZCBkaWRG
aW5pc2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgPSB7IH0pOwogICAgIAogICAgIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JT
IGNoZWNrcy4KQEAgLTgwLDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTaW1wbGVS
ZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgbV9yZWRpcmVj
dEhhbmRsZXI7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDJhMmRiMjBlNTU1ZjhjYzkxMDcy
OWRlN2RhNTQzNWI1NDc5OTA0ZC4uOTYyNGUyOTY0Yzc0OWNiNzZjNWJmMDk3ZmUyYzUwYzdjZDZm
ZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMzUsOSArMTM1LDkgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGUKICAgICAgICAgaGFuZGxlcihmaWxlbmFtZXMpOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3Qg
cGluZ0xvYWRJZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZp
bmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYm
IGVycm9yKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5
KCkuZGlkRmluaXNoUGluZ0xvYWQocGluZ0xvYWRJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLmRpZEZpbmlzaFBpbmdMb2FkKHBpbmdM
b2FkSWRlbnRpZmllciwgV1RGTW92ZShlcnJvcikpOwogfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMDljZDA1YjljZTlhODc3YTZj
ZDc5NjZjMjE5YjBjNTNkYzljNGE4OS4uYzUzNDRlYTY1ZDAxZWMxYTNkYTJiMGIwNTNjZmM0MDM4
MzFlNTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzKTsKLSAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBp
bmdMb2FkSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBw
aW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggYjY3NGY3ZWI0OTE5Njg1ZWJi
NDMyYWFhODY5YTdlMmE5MDk0MTU1Yy4uODNlZjJlNjIyODliYWUxZDgzMzZiYmY5MjJkM2Y1OGQy
NjRiODllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjcsNSArMjcsNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5
UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBEaWRXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKQotICAg
IERpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcikKKyAgICBEaWRG
aW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNjlmYjkxYzgyYjhhZTYwN2QxMGY2
ZjEyOGI5MmIzOTZjMTk2MzU1Yy4uZTk3ZmNiZDdmOTIwY2Y5NDFlOTA2NmQ4NzlkMWRlZTBlMTFl
YTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiAKICAgICBhdXRvIHBpbmdMb2FkQ29tcGxl
dGlvbkhhbmRsZXJzID0gV1RGTW92ZShtX3BpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXJzKTsKICAg
ICBmb3IgKGF1dG8mIHBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXIgOiBwaW5nTG9hZENvbXBsZXRp
b25IYW5kbGVycy52YWx1ZXMoKSkKLSAgICAgICAgcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICBwaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyKGludGVybmFsRXJyb3IoVVJMKCkp
KTsKIH0KIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRp
YWxzIHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRl
bnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQpAQCAtMzk2LDEzICszOTYsMTMgQEAgc3RhdGljIHVp
bnQ2NF90IGdlbmVyYXRlUGluZ0xvYWRJZGVudGlmaWVyKCkKICAgICByZXR1cm4gKytpZGVudGlm
aWVyOwogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKE5ldHdvcmtp
bmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZWY8U2VjdXJpdHlP
cmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0
UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBv
bGljeSogY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMs
IFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAv
LyBJdCdzIHBvc3NpYmxlIHRoYXQgY2FsbCB0byBjcmVhdGVQaW5nSGFuZGxlIG1pZ2h0IGJlIG1h
ZGUgZHVyaW5nIGluaXRpYWwgZW1wdHkgRG9jdW1lbnQgY3JlYXRpb24gYmVmb3JlIGEgTmV0d29y
a2luZ0NvbnRleHQgZXhpc3RzLgogICAgIC8vIEl0IGlzIG5vdCBjbGVhciB0aGF0IHdlIHNob3Vs
ZCBzZW5kIHBpbmcgbG9hZHMgZHVyaW5nIHRoYXQgcHJvY2VzcyBhbnl3YXlzLgogICAgIGlmICgh
bmV0d29ya2luZ0NvbnRleHQpIHsKICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00MjksMTAgKzQyOSwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBp
bmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzbwogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2FkUGluZyhXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKSwgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIDApOwogfQogCi12
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9h
ZElkZW50aWZpZXIpCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQaW5nTG9hZCh1
aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFJlc291cmNlRXJyb3ImJiBlcnJvcikKIHsKICAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxl
cnMudGFrZShwaW5nTG9hZElkZW50aWZpZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9yKSk7CiB9CiAKIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRp
Z2VzdCYgYm9keUhhc2gsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRp
b24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDI3ZmVhMDRmM2I0
NzViODg2MzYzNGEwNWY0OGVkOTBiMTgxNTAzNWYuLjJmNDRmOGRiODBhZGMzYzQ0MDg5M2ViZDc0
NDZjZmI3Mzk2MDlhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7CiAgICAgdm9pZCByZXN1bWVQZW5k
aW5nUmVxdWVzdHMoKSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeSosIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2Fk
KHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFydFBpbmdMb2FkKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2
NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAg
IHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFz
aCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4+IG1f
d2ViUmVzb3VyY2VMb2FkZXJzOwogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgV2ViVVJMU2No
ZW1lVGFza1Byb3h5Kj4gbV91cmxTY2hlbWVUYXNrczsKLSAgICBIYXNoTWFwPHVuc2lnbmVkIGxv
bmcsIFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsK
KyAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXI+IG1f
cGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAzYTc1MmY1OGM0NjcxNzc4MTI4ZTcz
MTliNTU4ZmM2NjE4M2E0ZWUzLi5kYmU5ZDNkNjc3Y2FiYTYzM2I0ZjgwNGJiZmFiYTUzNTM4NDNl
OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0zNjMsNyArMzYzLDcgQEAg
Ym9vbCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6bGltaXRSZXF1
ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcmkKICAgICByZXR1cm4gbV9yZXF1ZXN0c0xvYWRpbmcuc2l6
ZSgpID49ICh3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS5pc1NlcmlhbExvYWRpbmdFbmFibGVk
KCkgPyAxIDogbV9tYXhSZXF1ZXN0c0luRmxpZ2h0KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnN0YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdD
b250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSosIGNv
bnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c3RhcnRQaW5nTG9h
ZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
Ly8gUGluZ0hhbmRsZSBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3
aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KICAgICBuZXcgUGluZ0hhbmRsZShu
ZXR3b3JraW5nQ29udGV4dCwgcmVxdWVzdCwgb3B0aW9ucy5jcmVkZW50aWFscyAhPSBGZXRjaE9w
dGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6
Ok5vLCBvcHRpb25zLnJlZGlyZWN0ID09IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5k
ZXggMzcwMWJjMzNiNzBhOGVlOWU3Yjc3YWFlMmYyNGQ2ZDAzZWU0ZmEwZS4uZjgxNjYyN2VhNDRi
ZmZlZmQ4MmVhZjUzMWU5YjBkNjIwODM5Njc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5o
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVz
dHMoKSBmaW5hbDsKICAgICB2b2lkIHJlc3VtZVBlbmRpbmdSZXF1ZXN0cygpIGZpbmFsOwogCi0g
ICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeSosIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0UGlu
Z0xvYWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Kiwg
Y29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6
RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMDAzN2QwY2FlYjc2ZGU0YWU1Mzg0ODllMmQ3NjY0
NjA5OWQ4N2YwLi42NzhhNjNiZTdkZDQ3ZDZjYjExY2UxZDk1ZjlhMGE3OTRjMTE0NDM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAorICAgICAgICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0
IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJv
ci1sb2dnaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvYmVhY29u
L2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLmh0bWw6IEFkZGVkLgorCisyMDE3LTA4LTE4ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgW0JlYWNvbl0gQWRkIHN1
cHBvcnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM3Mjkw
MDI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5j
LWVycm9yLWxvZ2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjAw
OGQ5N2YzNzM4YzRmMmMyYmY1ODUyYjMzODRhMGNlOThjOTgyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogQmVhY29uIEFQSSBj
YW5ub3QgbG9hZCBodHRwOi8vaW52YWxpZC5sb2NhbGhvc3QvLiBBIHNlcnZlciB3aXRoIHRoZSBz
cGVjaWZpZWQgaG9zdG5hbWUgY291bGQgbm90IGJlIGZvdW5kLgorCitQQVNTIFNob3VsZCBsb2cg
YW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY29uc29sZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMjc2Y2ZlNTA4MWRjZjI4MmI1OTQxZDBiMGY3MWIzNmEyNDU5ZTQzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1l
cnJvci1sb2dnaW5nLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGFzeW5jX3Rlc3QoZnVuY3Rpb24o
dCkgeworICAgICAgICBsZXQgaW52YWxpZEhvc3QgPSAiaHR0cDovL2ludmFsaWQubG9jYWxob3N0
IjsKKyAgICAgICAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24oaW52YWxpZEhvc3Qs
ICd0ZXN0JyksICJzZW5kQmVhY29uIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0sIDUw
MCk7CisgICAgfSwgIlNob3VsZCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY29uc29sZSIp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vYmVhY29uLXF1b3RhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L2JlYWNvbi9iZWFjb24tcXVvdGEtZXhwZWN0ZWQudHh0CmluZGV4IDEwYjE2MTUzOTAz
ODllOTE3N2RlNmFjNWFlNDY4MTMwMzQ1ODhlODIuLjc0MmVkNmY2ZTkxZGEwNDhiMTJhNzZmMjU1
NDFjZjIwOTEzODVjNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9i
ZWFjb24tcXVvdGEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNv
bi9iZWFjb24tcXVvdGEtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDQ0OiBSZWFjaGVkIG1heGltdW0gYW1vdW50IG9mIHF1ZXVlZCBkYXRhIG9mIDY0
S2IgZm9yIGtlZXBhbGl2ZSByZXF1ZXN0cwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDUyOiBSZWFj
aGVkIG1heGltdW0gYW1vdW50IG9mIHF1ZXVlZCBkYXRhIG9mIDY0S2IgZm9yIGtlZXBhbGl2ZSBy
ZXF1ZXN0cworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBCZWFjb24gQVBJIGNhbm5vdCBsb2Fk
IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8uIFJlYWNoZWQgbWF4aW11bSBhbW91bnQgb2YgcXVldWVk
IGRhdGEgb2YgNjRLYiBmb3Iga2VlcGFsaXZlIHJlcXVlc3RzCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNTI6IEJlYWNvbiBBUEkgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4ODAwL1dlYktp
dC9iZWFjb24vcmVzb3VyY2VzL2JlYWNvbi1wcmVmbGlnaHQucHk/YWxsb3dDb3JzPTEmY21kPXB1
dCZpZD01ZGUyZTM0MC04OTA5LTQ5NTQtYjU1ZS00MjVhMzI5YjY2OWUuIFJlYWNoZWQgbWF4aW11
bSBhbW91bnQgb2YgcXVldWVkIGRhdGEgb2YgNjRLYiBmb3Iga2VlcGFsaXZlIHJlcXVlc3RzCiAK
IFBBU1MgQmVhY29uIHdpdGggYSBib2R5IGFib3ZlIHRoZSBRdW90YSBMaW1pdCBzaG91bGQgZmFp
bC4gCiBQQVNTIE11bHRpcGxlIEJlYWNvbnMgUXVvdGEgTGltaXQgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318541</attachid>
            <date>2017-08-18 14:24:51 -0700</date>
            <delta_ts>2017-08-18 15:08:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175723-20170818142451.patch</filename>
            <type>text/plain</type>
            <size>40116</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2YTZiNGQwODI1OTU0
N2MwOTBjODVmYzVmNzVlODlkZGEyNDQ3Mi4uZDg2MmI0NTQ4Yzg3ZjUyMjExYzkyMjkwZjY4Mjkz
YzMzNzAzMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE3LTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW0JlYWNvbl0gSW1wcm92ZSBl
cnJvciByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhhdmUgUGluZyBsb2FkcyBzdWNoIGFzIGJlYWNvbnMgcmVwb3J0IGVycm9ycyB2aWEg
dGhlaXIgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBUaGUgQmVhY29uIEFQSSBpcyB1c2lu
ZyB0aGlzIGVycm9yIHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZSB3aGVuIGJlYWNvbiBsb2Fkcwor
ICAgICAgICBmYWlsLCBwcm92aWRlZCB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIGFsaXZlLgorCisg
ICAgICAgIFRlc3Q6IGh0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpOYXZpZ2F0b3JCZWFjb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjp+TmF2aWdhdG9yQmVhY29uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JCZWFjb246OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRv
ckJlYWNvbjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVh
Y29uOjpsb2dFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCZWFjb246OnNlbmRC
ZWFjb24pOgorICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oOgorICAg
ICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3Vy
Y2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oOgorCisyMDE3LTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBv
cnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGQ0NWM1MDdiNjJkZmU0NTJlYzVmZWIwNDZlM2VkYjY0ZDNjODkxNTUuLjMx
MzVjYzRlOTU2OWQwOGQ1NTQ1YWVhNGEyYzlhNzE5NDU0YzZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNDMgQEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMg
YmVhY29ucyByZXBvcnQgZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAg
ICAgIFRoZSBCZWFjb24gQVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBt
ZXNzYWdlIHdoZW4gYmVhY29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhl
IHBhZ2UgaXMgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp+
UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkRmluaXNoKToKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpj
YW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmN1cnJlbnRSZXF1ZXN0IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RX
aXRoUHJlZmxpZ2h0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFBpbmdM
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0
YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmlu
aXNoUGluZ0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oOgorCisyMDE3LTA4LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBvcnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ5NzNh
YWJmZjAzOTg1MmZmYTE3YzVjOTcwZTFiYzRlNTBhYWMyZWEuLjhkZTIxOWI5ZjI5ZTFhYjA3ODkz
ZDMxYTk2MzY2NjhmODA1NDU0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAg
ICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMgYmVhY29u
cyByZXBvcnQgZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIFRo
ZSBCZWFjb24gQVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBtZXNzYWdl
IHdoZW4gYmVhY29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhlIHBhZ2Ug
aXMgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzdGFy
dFBpbmdMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKworMjAxNy0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIFtCZWFjb25dIEFkZCBzdXBwb3J0IGZvciBxdW90YSBsaW1pdGF0aW9uCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NDMKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzI5MDAyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXggMWZhMWY0MTI2NzE0OTUwZGQ0NzIx
ZjJlM2MzZWEwNjA1NGI5M2RjOC4uOTBkYTEwNTdmMTczYmFlYmVkNGI3NGI0ZjI4NTg4Y2JhYzcy
ODdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JC
ZWFjb24uY3BwCkBAIC0yNiwxNiArMjYsODEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOYXZpZ2F0b3JCZWFjb24uaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFj
b246OnNlbmRCZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKK05hdmlnYXRv
ckJlYWNvbjo6TmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQorICAgIDogbV9u
YXZpZ2F0b3IobmF2aWdhdG9yKQoreworfQorCitOYXZpZ2F0b3JCZWFjb246On5OYXZpZ2F0b3JC
ZWFjb24oKQoreworICAgIGF1dG8gaW5mbGlnaHRCZWFjb25zID0gV1RGTW92ZShtX2luZmxpZ2h0
QmVhY29ucyk7CisgICAgZm9yIChhdXRvJiBiZWFjb24gOiBpbmZsaWdodEJlYWNvbnMpCisgICAg
ICAgIGJlYWNvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKworTmF2aWdhdG9yQmVhY29uKiBO
YXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCit7CisgICAgTmF2aWdh
dG9yQmVhY29uKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29uKj4oU3Vw
cGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwor
ICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4oKm5hdmlnYXRvcik7CisgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9CisgICAg
cmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKK2NvbnN0IGNoYXIqIE5hdmlnYXRvckJlYWNvbjo6c3Vw
cGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKK30KKwordm9p
ZCBOYXZpZ2F0b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3sKKyAgICBpZiAoIXJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc051bGwoKSkKKyAgICAg
ICAgbG9nRXJyb3IocmVzb3VyY2UucmVzb3VyY2VFcnJvcigpKTsKKworICAgIHJlc291cmNlLnJl
bW92ZUNsaWVudCgqdGhpcyk7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9pbmZsaWdodEJlYWNv
bnMucmVtb3ZlRmlyc3QoJnJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQs
IHdhc1JlbW92ZWQpOworICAgIEFTU0VSVCghbV9pbmZsaWdodEJlYWNvbnMuY29udGFpbnMoJnJl
c291cmNlKSk7Cit9CisKK3ZvaWQgTmF2aWdhdG9yQmVhY29uOjpsb2dFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKKworICAg
IGF1dG8qIGZyYW1lID0gbV9uYXZpZ2F0b3IuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGNoYXIqIG1l
c3NhZ2VNaWRkbGUgPSAiLiAiOworICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCk7CisgICAgaWYgKGRlc2NyaXB0aW9uLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoZXJyb3IuaXNBY2Nlc3NDb250cm9sKCkpCisgICAgICAgICAgICBtZXNzYWdlTWlk
ZGxlID0gQVNDSUlMaXRlcmFsKCIgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbWVzc2FnZU1pZGRsZSA9ICIuIjsKKyAgICB9CisKKyAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVz
c2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiQmVhY29uIEFQSSBjYW5ub3QgbG9hZCAiLCBl
cnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksIG1lc3NhZ2VNaWRkbGUsIGRlc2NyaXB0aW9uKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPGJvb2w+IE5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbihEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJiBib2R5KQogewogICAgIFVSTCBwYXJzZWRVcmwgPSBkb2N1bWVudC5jb21wbGV0
ZVVSTCh1cmwpOwogCkBAIC03MywxMiArMTM4LDIyIEBAIEV4Y2VwdGlvbk9yPGJvb2w+IE5hdmln
YXRvckJlYWNvbjo6c2VuZEJlYWNvbihOYXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
CiAgICAgICAgICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0Nv
cnM7CiAgICAgICAgIH0KICAgICB9CisKICAgICBhdXRvIGNhY2hlZFJlc291cmNlID0gZG9jdW1l
bnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0QmVhY29uUmVzb3VyY2UoeyBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zIH0pOwotICAgIGlmIChjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkgeworICAgICAgICBsb2dFcnJv
cihjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIEFTU0VSVCghbV9pbmZsaWdodEJlYWNvbnMuY29udGFpbnMoY2FjaGVkUmVzb3VyY2Uu
dmFsdWUoKS5nZXQoKSkpOworICAgIG1faW5mbGlnaHRCZWFjb25zLmFwcGVuZChjYWNoZWRSZXNv
dXJjZS52YWx1ZSgpLmdldCgpKTsKKyAgICBjYWNoZWRSZXNvdXJjZS52YWx1ZSgpLT5hZGRDbGll
bnQoKnRoaXMpOworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgZG9jdW1lbnQuYWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgY2Fj
aGVkUmVzb3VyY2UuZXJyb3IoKS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKLSAgICByZXR1cm4g
ZmFsc2U7CitFeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oTmF2
aWdhdG9yJiBuYXZpZ2F0b3IsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmws
IHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmIGJvZHkpCit7CisgICAgcmV0dXJuIE5h
dmlnYXRvckJlYWNvbjo6ZnJvbSgmbmF2aWdhdG9yKS0+c2VuZEJlYWNvbihkb2N1bWVudCwgdXJs
LCBXVEZNb3ZlKGJvZHkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uaAppbmRleCA2ZmRmODlkZDVhZWZlMzZjZmEyYWIwNzUxZTk4
MzhhNGE4NGE2NjhkLi5lMzdmOWFlN2Y1OTFjZDU0NzI3ZjdjMDU1Y2U3OTAyZTZmNmZkNWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uaApA
QCAtMjUsMTggKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCisjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBOYXZpZ2F0b3I7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCi1jbGFzcyBOYXZpZ2F0b3JC
ZWFjb24geworY2xhc3MgTmF2aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPiwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6Cisg
ICAgZXhwbGljaXQgTmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYpOworICAgIH5OYXZpZ2F0b3JC
ZWFjb24oKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNvbihOYXZpZ2F0
b3ImLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJik7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNv
bihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6
SW5pdD4mJik7CisKKyAgICBzdGF0aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9tKE5hdmlnYXRvciop
OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgLy8gQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJikgZmluYWw7CisgICAgdm9pZCBsb2dFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CisK
KyAgICBOYXZpZ2F0b3ImIG1fbmF2aWdhdG9yOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IG1faW5mbGlnaHRCZWFjb25zOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiNjQyOTM0NzVjZGVjNTQ2NjRj
NGZlODA1NWRlNjgzNjMwY2Y5NmM2Li44ODI3NTY3YzQ0NGMxOWIyNDUzMTVlMmQyOTUxNGI5YjAy
YWJiMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNjQsNyAr
NjQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVBlbmRpbmdSZXF1ZXN0cygpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgQ29udGVudFNlY3VyaXR5UG9saWN5
KiwgY29uc3QgRmV0Y2hPcHRpb25zJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSB7IH0pID0gMDsKKyAgICB1c2luZyBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqLCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBG
ZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0pID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdl
c3QmIGJvZHlLZXksIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24s
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggODI5Y2Q5YmU1NjE4NjMwOTBhMzgxMjY0
YTQ3NWExOTc5ZDk3MzI0Yy4uNDg1ZmMzOTE3MjM1MWQ1NDUwZTU2ZDhiZWRmMjBkOTdiNGY0ZjYx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0yNzQsOCArMjc0LDEzIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICAgICAgYXV0byogY29u
dGVudFNlY3VyaXR5UG9saWN5ID0gZG9jdW1lbnQgJiYgIWRvY3VtZW50LT5zaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSA/IGRvY3VtZW50LT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFJlcXVl
c3RIZWFkZXJzKTsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPnN0YXJ0UGluZ0xvYWQoZnJhbWUubG9hZGVyKCkubmV0d29y
a2luZ0NvbnRleHQoKSwgcmVxdWVzdCwgKm1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgKm1fb3Jp
Z2luLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICAgICAgZmluaXNoTG9h
ZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5zdGFydFBpbmdMb2FkKGZyYW1lLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0
KCksIHJlcXVlc3QsICptX29yaWdpbmFsUmVxdWVzdEhlYWRlcnMsICptX29yaWdpbiwgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX29wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKV0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hM
b2FkaW5nKG51bGxwdHIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBzZXRSZXNvdXJjZUVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy0+
ZXJyb3IoTG9hZEVycm9yKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTNhMGYzOTllYjljMDQ1
ZmNkNjkwMjg2NDAxZDVkZWQ4ZGViNGRjYS4uMGE2NzhjY2Y4NWE3ODhhMTJhNDA0M2U0YmM2YWRm
ODA1MDQwYTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTYsOSArMjk2LDkgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnIKICAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIFdURk1vdmUo
cmVxdWVzdCkpKTsKIH0KIAotUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RCZWFjb25SZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RCZWFjb25SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewotICAgIHJldHVybiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkJlYWNvbiwgV1RG
TW92ZShyZXF1ZXN0KSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFJh
d1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkJlYWNvbiwgV1RGTW92
ZShyZXF1ZXN0KSkpOwogfQogCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNv
dXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0Y2NjODg2NDc5
NzRkNmYwNzYyYTA0ZGFiY2M4ZjNjN2YyNDUzM2RhLi5kMzI4OGNhYmMxM2VmOTAzNjEzYzJjZTc5
ZGVhZGMwMWIzOWU3MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgUmVz
b3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiByZXF1ZXN0Rm9u
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc1NWRyk7CiAgICAgUmVzb3VyY2VFcnJv
ck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdE1lZGlh
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0SWNvbihDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJik7Ci0gICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gcmVxdWVzdEJlYWNvblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+PiByZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4+IHJlcXVlc3RSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAg
UmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4g
cmVxdWVzdE1haW5SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgUmVzb3Vy
Y2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gcmVxdWVz
dFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgKaW5kZXggZmIyMTBhNGIwNzUzYzVkNzRlMDA0
MzU0ZGMzNDI2ZTUxNWNlNDg0Ny4uNTk2ZDk4MTVjYjU0OGRkN2NkZDhmMWUyNzc0ZGI2MTkwM2Ez
MDVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgK
QEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgogICAgICAgICBObywKICAgICB9OwogICAgIAotICAg
IFBpbmdIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IFVzZXNBc3luY0NhbGxiYWNrcyB1c2VBc3luY0NhbGxiYWNrcywgYm9vbCBzaG91bGRGb2xsb3dS
ZWRpcmVjdHMsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAg
ICAgICA6IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0hhbmRsZTo6dGltZW91dFRpbWVyRmly
ZWQpCisgICAgUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSwgVXNlc0FzeW5jQ2FsbGJhY2tzIHVzZUFzeW5jQ2FsbGJhY2tzLCBib29sIHNob3Vs
ZEZvbGxvd1JlZGlyZWN0cywgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3Im
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2N1cnJlbnRSZXF1ZXN0KHJlcXVl
c3QpCisgICAgICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nSGFuZGxlOjp0aW1lb3V0
VGltZXJGaXJlZCkKICAgICAgICAgLCBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogICAgICAgICAsIG1fc2hvdWxkRm9sbG93UmVkaXJlY3Rz
KHNob3VsZEZvbGxvd1JlZGlyZWN0cykKICAgICAgICAgLCBtX3VzZXNBc3luY0NhbGxiYWNrcyh1
c2VBc3luY0NhbGxiYWNrcykKQEAgLTY0LDI1ICs2NSwzMSBAQCBwcml2YXRlOgogICAgIH0KICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJikgZmluYWwKICAgICB7Cisg
ICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgICAgICBpZiAo
bV9zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKLSAgICAgICAgICAgIGhhbmRsZS0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICBoYW5kbGUtPmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCB7IG1fY3VycmVudFJlcXVlc3Qg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlIHRoaXM7
CisgICAgICAgIHBpbmdMb2FkQ29tcGxldGUoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIGZvbGxv
dyByZWRpcmVjdHMiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAg
ICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpIGZpbmFsIHsgZGVsZXRlIHRoaXM7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsg
ZGVsZXRlIHRoaXM7IH07Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxl
KikgZmluYWwgeyBkZWxldGUgdGhpczsgfQotICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdM
b2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSopIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRD
b21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJl
c291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZTsgfQogICAgIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkgZmluYWwgeyByZXR1cm4gbV91c2Vz
QXN5bmNDYWxsYmFja3MgPT0gVXNlc0FzeW5jQ2FsbGJhY2tzOjpZZXM7IH0KLSAgICB2b2lkIHRp
bWVvdXRUaW1lckZpcmVkKCkgeyBkZWxldGUgdGhpczsgfQorICAgIHZvaWQgdGltZW91dFRpbWVy
RmlyZWQoKSB7IHBpbmdMb2FkQ29tcGxldGUoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkxvYWQgdGltZWQgb3V0IiksIFJl
c291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0KIAotICAgIHZpcnR1YWwgflBpbmdIYW5k
bGUoKQorICAgIHZvaWQgcGluZ0xvYWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciA9IHsgfSkKICAgICB7Ci0gICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQotICAgICAg
ICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgICAgIGRlbGV0ZSB0aGlz
OworICAgIH0KIAorICAgIHZpcnR1YWwgflBpbmdIYW5kbGUoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgaWYgKG1faGFuZGxlKSB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9oYW5kbGUtPmNsaWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAg
bV9oYW5kbGUtPmNsZWFyQ2xpZW50KCk7CkBAIC05MSwxMSArOTgsMTIgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOworICAgIFJlc291cmNl
UmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFRpbWVyIG1fdGltZW91dFRpbWVyOwogICAg
IGJvb2wgbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsKICAgICBib29sIG1fc2hvdWxkRm9s
bG93UmVkaXJlY3RzOwogICAgIFVzZXNBc3luY0NhbGxiYWNrcyBtX3VzZXNBc3luY0NhbGxiYWNr
czsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPiBtX2NvbXBsZXRpb25IYW5k
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCBhY2RjYzQzOGY2OTQ4ODFhMjE1ZDY2YWZkZWQ5NzExNDI3ZmJkODczLi5jZTQ2
NWJhMjcxMTcwN2U3ZDJhMmViMzViMWRjOTBkNGFhNDg3MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtMjQ1LDE4ICsyNDUsMTggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2EK
ICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRCwgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAKICAgICAvLyBQaW5n
SGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRz
IHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgotICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQu
Z2V0KCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QsIGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVk
Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscywgUGluZ0hhbmRsZTo6VXNlc0Fz
eW5jQ2FsbGJhY2tzOjpZZXMsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGxvYWRQ
YXJhbWV0ZXJzLmlkZW50aWZpZXJdIHsKLSAgICAgICAgZGlkRmluaXNoUGluZ0xvYWQoaWRlbnRp
Zmllcik7CisgICAgbmV3IFBpbmdIYW5kbGUoY29udGV4dC5nZXQoKSwgbG9hZFBhcmFtZXRlcnMu
cmVxdWVzdCwgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9PSBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzLCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6OlllcywgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcl0g
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgICAgIGRpZEZpbmlzaFBpbmdMb2Fk
KGlkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9h
ZElkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5p
c2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEaWRGaW5pc2hQaW5nTG9hZChwaW5nTG9hZElkZW50aWZpZXIpLCAwKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGlkRmluaXNoUGluZ0xvYWQocGluZ0xvYWRJZGVudGlmaWVyLCBlcnJvciksIDApOwogfQog
CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVMb2FkSWRlbnRpZmll
cihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggNTI0Y2Q4ZDg5NWVlZWI5ODdkNzhjZDgwNTBlOWVlOGRmYTM0MDFkYi4uMmRkMWY4
MWQ1MzE1OTU0OGFiYmU1ZDA3YzBiMzRkYWFjNGE1NmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKK2NsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTYxLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlv
bi5nZXQoKTsgfQogCiAgICAgdm9pZCBkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZGVyJik7Ci0gICAgdm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5n
TG9hZElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGlu
Z0xvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICBi
b29sIGNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAppbmRleCA4MjliMjc5N2ZjNTM3MDRmZTA0
YTIzMmFhYTJlODgwYzJkNTIyYjVhLi4yMTJjN2E2NTFjZGU5MWU4ZjQ5M2QxNDNmYTE5NTNlYTVl
NTdlMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2Vz
c2lvblRyYWNrZXIuaCIKKyNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlLmg+CkBAIC02Niw4ICs2Nyw2IEBAIFBpbmdMb2FkOjpQaW5nTG9hZChOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIEhUVFBIZWFkZXJNYXAmJiBvCiAK
IFBpbmdMb2FkOjp+UGluZ0xvYWQoKQogewotICAgIG1fY29ubmVjdGlvbi0+ZGlkRmluaXNoUGlu
Z0xvYWQobV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwotCiAgICAgaWYgKG1fcmVkaXJlY3RIYW5k
bGVyKQogICAgICAgICBtX3JlZGlyZWN0SGFuZGxlcih7IH0pOwogCkBAIC03OCw2ICs3NywxMiBA
QCBQaW5nTG9hZDo6flBpbmdMb2FkKCkKICAgICB9CiB9CiAKK3ZvaWQgUGluZ0xvYWQ6OmRpZEZp
bmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmRp
ZEZpbmlzaFBpbmdMb2FkKG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvcik7CisgICAgZGVs
ZXRlIHRoaXM7Cit9CisKIHZvaWQgUGluZ0xvYWQ6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3Jr
TG9hZCIpOwpAQCAtOTcsNiArMTAyLDggQEAgU2VjdXJpdHlPcmlnaW4mIFBpbmdMb2FkOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0CiAKIHZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CisgICAgbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0ID0gcmVxdWVzdDsKKwogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gc2hvdWxk
Rm9sbG93UmVkaXJlY3RzPyAlZCIsIG1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMp
OwogICAgIGlmICghbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cykgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMTQ5LDE0ICsxNTYsMTQgQEAgdm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXAKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
Q2hhbGxlbmdlIik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCB7IH0pOwotICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZp
bmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIEhUVFAgYXV0aGVudGljYXRpb24iKSwgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAogdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24gLSBodHRw
U3RhdHVzQ29kZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7Ci0gICAgZGVsZXRlIHRoaXM7
CisgICAgZGlkRmluaXNoKCk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCkBAIC0xNzEsNyArMTc4LDggQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IE5ldHdv
cmtMb2EKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUiKTsKICAg
ICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZENvbXBsZXRlV2l0aEVy
cm9yLCBlcnJvcl9jb2RlOiAlZCIsIGVycm9yLmVycm9yQ29kZSgpKTsKLSAgICBkZWxldGUgdGhp
czsKKworICAgIGRpZEZpbmlzaChlcnJvcik7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmRpZFNlbmRE
YXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1NlbmQpCkBAIC0xODEsMTkgKzE4OSwyNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVAogdm9p
ZCBQaW5nTG9hZDo6d2FzQmxvY2tlZCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2FzQmxvY2tlZCIpOwotICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZpbmlzaChibG9ja2VkRXJy
b3IoY3VycmVudFJlcXVlc3QoKSkpOwogfQogCiB2b2lkIFBpbmdMb2FkOjpjYW5ub3RTaG93VVJM
KCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5ub3RTaG93VVJMIik7Ci0gICAg
ZGVsZXRlIHRoaXM7CisgICAgZGlkRmluaXNoKGNhbm5vdFNob3dVUkxFcnJvcihjdXJyZW50UmVx
dWVzdCgpKSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZCIpOwotICAgIGRlbGV0
ZSB0aGlzOworICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJl
bnRSZXF1ZXN0KCkudXJsKCksIEFTQ0lJTGl0ZXJhbCgiTG9hZCB0aW1lZCBvdXQiKSwgUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6VGltZW91dCB9KTsKK30KKworY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBQ
aW5nTG9hZDo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAoreworICAgIGlmIChtX2xhc3RSZWRpcmVj
dGlvblJlcXVlc3QpCisgICAgICAgIHJldHVybiAqbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0Owor
CisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0OwogfQogCiBib29sIFBpbmdMb2FkOjpp
c0FsbG93ZWRSZWRpcmVjdChjb25zdCBVUkwmIHVybCkgY29uc3QKQEAgLTI2Miw3ICsyNzgsNyBA
QCB2b2lkIFBpbmdMb2FkOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdo
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZQogICAgICAgICBpZiAocmVzdWx0ID09IE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6UmVzdWx0OjpTdWNjZXNzKQogICAgICAgICAgICAgcHJlZmxp
Z2h0U3VjY2VzcyhSZXNvdXJjZVJlcXVlc3QgeyBjb3JzUHJlZmxpZ2h0Q2hlY2tlci0+b3JpZ2lu
YWxSZXF1ZXN0KCkgfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzOwor
ICAgICAgICAgICAgZGlkRmluaXNoKFJlc291cmNlRXJyb3IgeyBTdHJpbmcoKSwgMCwgY29yc1By
ZWZsaWdodENoZWNrZXItPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkNP
UlMgcHJlZmxpZ2h0IGZhaWxlZCIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9s
IH0pOwogICAgIH0pOwogICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXItPnN0YXJ0UHJlZmxpZ2h0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggNDU3ZWY2
Y2U0ZmM4MmI1MWU4MGZjYjBhYTdjZjIzY2RhZDRiMTAxNS4uY2Y2YWExMGFiOGFmZGU2NjhjMTlm
MGMzMmQ3OWVhZWQxNGUwMDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5OwpAQCAtNjgsNiArNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJl
ZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKworICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdDsKKyAgICB2b2lk
IGRpZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CiAgICAgCiAg
ICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogICAgIFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9y
IENPUlMgY2hlY2tzLgpAQCAtODAsNiArODQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1Np
bXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBtX3Jl
ZGlyZWN0SGFuZGxlcjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3Q7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0MmEyZGIyMGU1NTVmOGNj
OTEwNzI5ZGU3ZGE1NDM1YjU0Nzk5MDRkLi45NjI0ZTI5NjRjNzQ5Y2I3NmM1YmYwOTdmZTJjNTBj
N2NkNmZmYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTEzNSw5ICsxMzUsOSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkV3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXModWludDY0X3QgcmVxdWVzdElkZQogICAgICAgICBoYW5kbGVyKGZpbGVuYW1lcyk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50
NjRfdCBwaW5nTG9hZElkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVy
cm9yJiYgZXJyb3IpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3Ry
YXRlZ3koKS5kaWRGaW5pc2hQaW5nTG9hZChwaW5nTG9hZElkZW50aWZpZXIpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuZGlkRmluaXNoUGluZ0xvYWQo
cGluZ0xvYWRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSk7CiB9CiAKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAwOWNkMDViOWNlOWE4
NzdhNmNkNzk2NmMyMTliMGM1M2RjOWM0YTg5Li5jNTM0NGVhNjVkMDFlYzFhM2RhMmIwYjA1M2Nm
YzQwMzgzMWU1NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzMsNyArNzMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkV3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMpOwotICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0
X3QgcGluZ0xvYWRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2
NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBiNjc0ZjdlYjQ5MTk2
ODVlYmI0MzJhYWE4NjlhN2UyYTkwOTQxNTVjLi44M2VmMmU2MjI4OWJhZTFkODMzNmJiZjkyMmQz
ZjU4ZDI2NGI4OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CkBAIC0yNyw1ICsyNyw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBM
ZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIERpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMp
Ci0gICAgRGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKQorICAg
IERpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA2OWZiOTFjODJiOGFlNjA3
ZDEwZjZmMTI4YjkyYjM5NmMxOTYzNTVjLi5lOTdmY2JkN2Y5MjBjZjk0MWU5MDY2ZDg3OWQxZGVl
MGUxMWVhOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zNTMsNyArMzUzLDcgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIAogICAgIGF1dG8gcGluZ0xvYWRD
b21wbGV0aW9uSGFuZGxlcnMgPSBXVEZNb3ZlKG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnMp
OwogICAgIGZvciAoYXV0byYgcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciA6IHBpbmdMb2FkQ29t
cGxldGlvbkhhbmRsZXJzLnZhbHVlcygpKQotICAgICAgICBwaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIHBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXIoaW50ZXJuYWxFcnJvcihV
UkwoKSkpOwogfQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIHJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3Jl
ZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCkBAIC0zOTYsMTMgKzM5NiwxMyBAQCBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVQaW5nTG9hZElkZW50aWZpZXIoKQogICAgIHJldHVybiArK2lk
ZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoTmV0
d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVu
dFNlY3VyaXR5UG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c3RhcnRQaW5nTG9hZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0
SGVhZGVycywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgQ29udGVudFNlY3Vy
aXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBjYWxsIHRvIGNyZWF0ZVBpbmdIYW5kbGUgbWlnaHQg
YmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBlbXB0eSBEb2N1bWVudCBjcmVhdGlvbiBiZWZvcmUgYSBO
ZXR3b3JraW5nQ29udGV4dCBleGlzdHMuCiAgICAgLy8gSXQgaXMgbm90IGNsZWFyIHRoYXQgd2Ug
c2hvdWxkIHNlbmQgcGluZyBsb2FkcyBkdXJpbmcgdGhhdCBwcm9jZXNzIGFueXdheXMuCiAgICAg
aWYgKCFuZXR3b3JraW5nQ29udGV4dCkgewogICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIp
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQyOSwxMCArNDI5LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0
YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBSZXNvCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvYWRQaW5n
KFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgMCk7CiB9
CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBp
bmdMb2FkSWRlbnRpZmllcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBpbmdM
b2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYmIGVycm9yKQog
ewogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbV9waW5nTG9hZENvbXBsZXRpb25I
YW5kbGVycy50YWtlKHBpbmdMb2FkSWRlbnRpZmllcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKIH0KIAog
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hB
MTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBh
cnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggMjdmZWEw
NGYzYjQ3NWI4ODYzNjM0YTA1ZjQ4ZWQ5MGIxODE1MDM1Zi4uMmY0NGY4ZGI4MGFkYzNjNDQwODkz
ZWJkNzQ0NmNmYjczOTYwOWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsKICAgICB2b2lkIHJlc3Vt
ZVBlbmRpbmdSZXF1ZXN0cygpIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoUGlu
Z0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHN0YXJ0UGluZ0xv
YWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQo
dWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwog
CiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJv
ZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKIApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVy
Pj4gbV93ZWJSZXNvdXJjZUxvYWRlcnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBXZWJV
UkxTY2hlbWVUYXNrUHJveHkqPiBtX3VybFNjaGVtZVRhc2tzOwotICAgIEhhc2hNYXA8dW5zaWdu
ZWQgbG9uZywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3BpbmdMb2FkQ29tcGxldGlvbkhhbmRs
ZXJzOworICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxl
cj4gbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDNhNzUyZjU4YzQ2NzE3Nzgx
MjhlNzMxOWI1NThmYzY2MTgzYTRlZTMuLmRiZTlkM2Q2NzdjYWJhNjMzYjRmODA0YmJmYWJhNTM1
Mzg0M2U4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM2Myw3ICszNjMs
NyBAQCBib29sIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpsaW1p
dFJlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaQogICAgIHJldHVybiBtX3JlcXVlc3RzTG9hZGlu
Zy5zaXplKCkgPj0gKHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpLmlzU2VyaWFsTG9hZGluZ0Vu
YWJsZWQoKSA/IDEgOiBtX21heFJlcXVlc3RzSW5GbGlnaHQpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6c3RhcnRQaW5nTG9hZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29y
a2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYWRlck1h
cCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
KiwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzdGFydFBp
bmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
LCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9w
dGlvbnMsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICAvLyBQaW5nSGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRz
ZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgogICAgIG5ldyBQaW5nSGFu
ZGxlKG5ldHdvcmtpbmdDb250ZXh0LCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzICE9IEZl
dGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIFBpbmdIYW5kbGU6OlVzZXNBc3luY0NhbGxi
YWNrczo6Tm8sIG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9s
bG93LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAppbmRleCAzNzAxYmMzM2I3MGE4ZWU5ZTdiNzdhYWUyZjI0ZDZkMDNlZTRmYTBlLi5mODE2NjI3
ZWE0NGJmZmVmZDgyZWFmNTMxZTliMGQ2MjA4Mzk2NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdS
ZXF1ZXN0cygpIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7
CiAKLSAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgc3Rh
cnRQaW5nTG9hZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBT
SEExOjpEaWdlc3QmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEwMDM3ZDBjYWViNzZkZTRhZTUzODQ4OWUy
ZDc2NjQ2MDk5ZDg3ZjAuLjY3OGE2M2JlN2RkNDdkNmNiMTFjZTFkOTVmOWEwYTc5NGMxMTQ0MzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCisgICAgICAgIFtCZWFjb25dIEltcHJvdmUgZXJyb3IgcmVwb3J0aW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0
IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5j
LWVycm9yLWxvZ2dpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9i
ZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmcuaHRtbDogQWRkZWQuCisKKzIwMTctMDgt
MTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBbQmVhY29uXSBB
ZGQgc3VwcG9ydCBmb3IgcXVvdGEgbGltaXRhdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDQzCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
MzcyOTAwMj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24t
YXN5bmMtZXJyb3ItbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9i
ZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgyMDA4ZDk3ZjM3MzhjNGYyYzJiZjU4NTJiMzM4NGEwY2U5OGM5ODIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dp
bmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBCZWFjb24g
QVBJIGNhbm5vdCBsb2FkIGh0dHA6Ly9pbnZhbGlkLmxvY2FsaG9zdC8uIEEgc2VydmVyIHdpdGgg
dGhlIHNwZWNpZmllZCBob3N0bmFtZSBjb3VsZCBub3QgYmUgZm91bmQuCisKK1BBU1MgU2hvdWxk
IGxvZyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjb25zb2xlIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMyNzZjZmU1MDgxZGNmMjgyYjU5NDFkMGIwZjcxYjM2YTI0NTllNDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFz
eW5jLWVycm9yLWxvZ2dpbmcuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgYXN5bmNfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGxldCBpbnZhbGlkSG9zdCA9ICJodHRwOi8vaW52YWxpZC5sb2Nh
bGhvc3QiOworICAgICAgICBhc3NlcnRfdHJ1ZShuYXZpZ2F0b3Iuc2VuZEJlYWNvbihpbnZhbGlk
SG9zdCwgJ3Rlc3QnKSwgInNlbmRCZWFjb24gc2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAg
fSwgNTAwKTsKKyAgICB9LCAiU2hvdWxkIGxvZyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjb25z
b2xlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tcXVvdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1xdW90YS1leHBlY3RlZC50eHQKaW5kZXggMTBiMTYx
NTM5MDM4OWU5MTc3ZGU2YWM1YWU0NjgxMzAzNDU4OGU4Mi4uNzQyZWQ2ZjZlOTFkYTA0OGIxMmE3
NmYyNTU0MWNmMjA5MTM4NWM2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVh
Y29uL2JlYWNvbi1xdW90YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
YmVhY29uL2JlYWNvbi1xdW90YS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNDQ6IFJlYWNoZWQgbWF4aW11bSBhbW91bnQgb2YgcXVldWVkIGRhdGEg
b2YgNjRLYiBmb3Iga2VlcGFsaXZlIHJlcXVlc3RzCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNTI6
IFJlYWNoZWQgbWF4aW11bSBhbW91bnQgb2YgcXVldWVkIGRhdGEgb2YgNjRLYiBmb3Iga2VlcGFs
aXZlIHJlcXVlc3RzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDQ6IEJlYWNvbiBBUEkgY2Fubm90
IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4ODAwLy4gUmVhY2hlZCBtYXhpbXVtIGFtb3VudCBvZiBx
dWV1ZWQgZGF0YSBvZiA2NEtiIGZvciBrZWVwYWxpdmUgcmVxdWVzdHMKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA1MjogQmVhY29uIEFQSSBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
V2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5weT9hbGxvd0NvcnM9MSZj
bWQ9cHV0JmlkPTVkZTJlMzQwLTg5MDktNDk1NC1iNTVlLTQyNWEzMjliNjY5ZS4gUmVhY2hlZCBt
YXhpbXVtIGFtb3VudCBvZiBxdWV1ZWQgZGF0YSBvZiA2NEtiIGZvciBrZWVwYWxpdmUgcmVxdWVz
dHMKIAogUEFTUyBCZWFjb24gd2l0aCBhIGJvZHkgYWJvdmUgdGhlIFF1b3RhIExpbWl0IHNob3Vs
ZCBmYWlsLiAKIFBBU1MgTXVsdGlwbGUgQmVhY29ucyBRdW90YSBMaW1pdCAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318549</attachid>
            <date>2017-08-18 15:08:12 -0700</date>
            <delta_ts>2017-08-18 16:42:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175723-20170818150811.patch</filename>
            <type>text/plain</type>
            <size>41054</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2YTZiNGQwODI1OTU0
N2MwOTBjODVmYzVmNzVlODlkZGEyNDQ3Mi4uZDg2MmI0NTQ4Yzg3ZjUyMjExYzkyMjkwZjY4Mjkz
YzMzNzAzMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE3LTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW0JlYWNvbl0gSW1wcm92ZSBl
cnJvciByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhhdmUgUGluZyBsb2FkcyBzdWNoIGFzIGJlYWNvbnMgcmVwb3J0IGVycm9ycyB2aWEg
dGhlaXIgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBUaGUgQmVhY29uIEFQSSBpcyB1c2lu
ZyB0aGlzIGVycm9yIHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZSB3aGVuIGJlYWNvbiBsb2Fkcwor
ICAgICAgICBmYWlsLCBwcm92aWRlZCB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIGFsaXZlLgorCisg
ICAgICAgIFRlc3Q6IGh0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpOYXZpZ2F0b3JCZWFjb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjp+TmF2aWdhdG9yQmVhY29uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JCZWFjb246OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRv
ckJlYWNvbjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVh
Y29uOjpsb2dFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCZWFjb246OnNlbmRC
ZWFjb24pOgorICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oOgorICAg
ICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3Vy
Y2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oOgorCisyMDE3LTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBv
cnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGQ0NWM1MDdiNjJkZmU0NTJlYzVmZWIwNDZlM2VkYjY0ZDNjODkxNTUuLjMx
MzVjYzRlOTU2OWQwOGQ1NTQ1YWVhNGEyYzlhNzE5NDU0YzZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNDMgQEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMg
YmVhY29ucyByZXBvcnQgZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAg
ICAgIFRoZSBCZWFjb24gQVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBt
ZXNzYWdlIHdoZW4gYmVhY29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhl
IHBhZ2UgaXMgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp+
UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkRmluaXNoKToKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpj
YW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmN1cnJlbnRSZXF1ZXN0IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RX
aXRoUHJlZmxpZ2h0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFBpbmdM
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0
YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmlu
aXNoUGluZ0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oOgorCisyMDE3LTA4LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBvcnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ5NzNh
YWJmZjAzOTg1MmZmYTE3YzVjOTcwZTFiYzRlNTBhYWMyZWEuLjhkZTIxOWI5ZjI5ZTFhYjA3ODkz
ZDMxYTk2MzY2NjhmODA1NDU0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAg
ICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMgYmVhY29u
cyByZXBvcnQgZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIFRo
ZSBCZWFjb24gQVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBtZXNzYWdl
IHdoZW4gYmVhY29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhlIHBhZ2Ug
aXMgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzdGFy
dFBpbmdMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKworMjAxNy0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIFtCZWFjb25dIEFkZCBzdXBwb3J0IGZvciBxdW90YSBsaW1pdGF0aW9uCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NDMKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzI5MDAyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXggMWZhMWY0MTI2NzE0OTUwZGQ0NzIx
ZjJlM2MzZWEwNjA1NGI5M2RjOC4uOTBkYTEwNTdmMTczYmFlYmVkNGI3NGI0ZjI4NTg4Y2JhYzcy
ODdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JC
ZWFjb24uY3BwCkBAIC0yNiwxNiArMjYsODEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJOYXZpZ2F0b3JCZWFjb24uaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFj
b246OnNlbmRCZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKK05hdmlnYXRv
ckJlYWNvbjo6TmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQorICAgIDogbV9u
YXZpZ2F0b3IobmF2aWdhdG9yKQoreworfQorCitOYXZpZ2F0b3JCZWFjb246On5OYXZpZ2F0b3JC
ZWFjb24oKQoreworICAgIGF1dG8gaW5mbGlnaHRCZWFjb25zID0gV1RGTW92ZShtX2luZmxpZ2h0
QmVhY29ucyk7CisgICAgZm9yIChhdXRvJiBiZWFjb24gOiBpbmZsaWdodEJlYWNvbnMpCisgICAg
ICAgIGJlYWNvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKworTmF2aWdhdG9yQmVhY29uKiBO
YXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCit7CisgICAgTmF2aWdh
dG9yQmVhY29uKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29uKj4oU3Vw
cGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwor
ICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4oKm5hdmlnYXRvcik7CisgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9CisgICAg
cmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKK2NvbnN0IGNoYXIqIE5hdmlnYXRvckJlYWNvbjo6c3Vw
cGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKK30KKwordm9p
ZCBOYXZpZ2F0b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3sKKyAgICBpZiAoIXJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc051bGwoKSkKKyAgICAg
ICAgbG9nRXJyb3IocmVzb3VyY2UucmVzb3VyY2VFcnJvcigpKTsKKworICAgIHJlc291cmNlLnJl
bW92ZUNsaWVudCgqdGhpcyk7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9pbmZsaWdodEJlYWNv
bnMucmVtb3ZlRmlyc3QoJnJlc291cmNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQs
IHdhc1JlbW92ZWQpOworICAgIEFTU0VSVCghbV9pbmZsaWdodEJlYWNvbnMuY29udGFpbnMoJnJl
c291cmNlKSk7Cit9CisKK3ZvaWQgTmF2aWdhdG9yQmVhY29uOjpsb2dFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKKworICAg
IGF1dG8qIGZyYW1lID0gbV9uYXZpZ2F0b3IuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGNoYXIqIG1l
c3NhZ2VNaWRkbGUgPSAiLiAiOworICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCk7CisgICAgaWYgKGRlc2NyaXB0aW9uLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoZXJyb3IuaXNBY2Nlc3NDb250cm9sKCkpCisgICAgICAgICAgICBtZXNzYWdlTWlk
ZGxlID0gQVNDSUlMaXRlcmFsKCIgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbWVzc2FnZU1pZGRsZSA9ICIuIjsKKyAgICB9CisKKyAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVz
c2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiQmVhY29uIEFQSSBjYW5ub3QgbG9hZCAiLCBl
cnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksIG1lc3NhZ2VNaWRkbGUsIGRlc2NyaXB0aW9uKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPGJvb2w+IE5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbihEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJiBib2R5KQogewogICAgIFVSTCBwYXJzZWRVcmwgPSBkb2N1bWVudC5jb21wbGV0
ZVVSTCh1cmwpOwogCkBAIC03MywxMiArMTM4LDIyIEBAIEV4Y2VwdGlvbk9yPGJvb2w+IE5hdmln
YXRvckJlYWNvbjo6c2VuZEJlYWNvbihOYXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
CiAgICAgICAgICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0Nv
cnM7CiAgICAgICAgIH0KICAgICB9CisKICAgICBhdXRvIGNhY2hlZFJlc291cmNlID0gZG9jdW1l
bnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0QmVhY29uUmVzb3VyY2UoeyBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zIH0pOwotICAgIGlmIChjYWNoZWRSZXNvdXJjZSkKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkgeworICAgICAgICBsb2dFcnJv
cihjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIEFTU0VSVCghbV9pbmZsaWdodEJlYWNvbnMuY29udGFpbnMoY2FjaGVkUmVzb3VyY2Uu
dmFsdWUoKS5nZXQoKSkpOworICAgIG1faW5mbGlnaHRCZWFjb25zLmFwcGVuZChjYWNoZWRSZXNv
dXJjZS52YWx1ZSgpLmdldCgpKTsKKyAgICBjYWNoZWRSZXNvdXJjZS52YWx1ZSgpLT5hZGRDbGll
bnQoKnRoaXMpOworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgZG9jdW1lbnQuYWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgY2Fj
aGVkUmVzb3VyY2UuZXJyb3IoKS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKLSAgICByZXR1cm4g
ZmFsc2U7CitFeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oTmF2
aWdhdG9yJiBuYXZpZ2F0b3IsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmws
IHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmIGJvZHkpCit7CisgICAgcmV0dXJuIE5h
dmlnYXRvckJlYWNvbjo6ZnJvbSgmbmF2aWdhdG9yKS0+c2VuZEJlYWNvbihkb2N1bWVudCwgdXJs
LCBXVEZNb3ZlKGJvZHkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uaAppbmRleCA2ZmRmODlkZDVhZWZlMzZjZmEyYWIwNzUxZTk4
MzhhNGE4NGE2NjhkLi5lMzdmOWFlN2Y1OTFjZDU0NzI3ZjdjMDU1Y2U3OTAyZTZmNmZkNWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uaApA
QCAtMjUsMTggKzI1LDM4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCisjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBOYXZpZ2F0b3I7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCi1jbGFzcyBOYXZpZ2F0b3JC
ZWFjb24geworY2xhc3MgTmF2aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPiwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6Cisg
ICAgZXhwbGljaXQgTmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYpOworICAgIH5OYXZpZ2F0b3JC
ZWFjb24oKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNvbihOYXZpZ2F0
b3ImLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJik7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNv
bihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6
SW5pdD4mJik7CisKKyAgICBzdGF0aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9tKE5hdmlnYXRvciop
OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgLy8gQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJikgZmluYWw7CisgICAgdm9pZCBsb2dFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CisK
KyAgICBOYXZpZ2F0b3ImIG1fbmF2aWdhdG9yOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+IG1faW5mbGlnaHRCZWFjb25zOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiNjQyOTM0NzVjZGVjNTQ2NjRj
NGZlODA1NWRlNjgzNjMwY2Y5NmM2Li44ODI3NTY3YzQ0NGMxOWIyNDUzMTVlMmQyOTUxNGI5YjAy
YWJiMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNjQsNyAr
NjQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVBlbmRpbmdSZXF1ZXN0cygpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgQ29udGVudFNlY3VyaXR5UG9saWN5
KiwgY29uc3QgRmV0Y2hPcHRpb25zJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSB7IH0pID0gMDsKKyAgICB1c2luZyBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqLCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBG
ZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0pID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdl
c3QmIGJvZHlLZXksIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24s
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggODI5Y2Q5YmU1NjE4NjMwOTBhMzgxMjY0
YTQ3NWExOTc5ZDk3MzI0Yy4uNDg1ZmMzOTE3MjM1MWQ1NDUwZTU2ZDhiZWRmMjBkOTdiNGY0ZjYx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0yNzQsOCArMjc0LDEzIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICAgICAgYXV0byogY29u
dGVudFNlY3VyaXR5UG9saWN5ID0gZG9jdW1lbnQgJiYgIWRvY3VtZW50LT5zaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSA/IGRvY3VtZW50LT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgICAgICAgICBBU1NFUlQobV9vcmlnaW5hbFJlcXVl
c3RIZWFkZXJzKTsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPnN0YXJ0UGluZ0xvYWQoZnJhbWUubG9hZGVyKCkubmV0d29y
a2luZ0NvbnRleHQoKSwgcmVxdWVzdCwgKm1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgKm1fb3Jp
Z2luLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fb3B0aW9ucywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICAgICAgZmluaXNoTG9h
ZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5zdGFydFBpbmdMb2FkKGZyYW1lLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0
KCksIHJlcXVlc3QsICptX29yaWdpbmFsUmVxdWVzdEhlYWRlcnMsICptX29yaWdpbiwgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX29wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKV0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hM
b2FkaW5nKG51bGxwdHIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBzZXRSZXNvdXJjZUVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy0+
ZXJyb3IoTG9hZEVycm9yKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTNhMGYzOTllYjljMDQ1
ZmNkNjkwMjg2NDAxZDVkZWQ4ZGViNGRjYS4uMGE2NzhjY2Y4NWE3ODhhMTJhNDA0M2U0YmM2YWRm
ODA1MDQwYTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTYsOSArMjk2LDkgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnIKICAgICByZXR1cm4gY2FzdENhY2hlZFJlc291cmNlVG88Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIFdURk1vdmUo
cmVxdWVzdCkpKTsKIH0KIAotUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RCZWFjb25SZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RCZWFjb25SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewotICAgIHJldHVybiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkJlYWNvbiwgV1RG
TW92ZShyZXF1ZXN0KSk7CisgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNvdXJjZVRvPENhY2hlZFJh
d1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkJlYWNvbiwgV1RGTW92
ZShyZXF1ZXN0KSkpOwogfQogCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNv
dXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0Y2NjODg2NDc5
NzRkNmYwNzYyYTA0ZGFiY2M4ZjNjN2YyNDUzM2RhLi5kMzI4OGNhYmMxM2VmOTAzNjEzYzJjZTc5
ZGVhZGMwMWIzOWU3MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgUmVz
b3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+PiByZXF1ZXN0Rm9u
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBpc1NWRyk7CiAgICAgUmVzb3VyY2VFcnJv
ck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdE1lZGlh
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0SWNvbihDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJik7Ci0gICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gcmVxdWVzdEJlYWNvblJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVz
dCYmKTsKKyAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+PiByZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4+IHJlcXVlc3RSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAg
UmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4g
cmVxdWVzdE1haW5SZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgUmVzb3Vy
Y2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gcmVxdWVz
dFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgKaW5kZXggZmIyMTBhNGIwNzUzYzVkNzRlMDA0
MzU0ZGMzNDI2ZTUxNWNlNDg0Ny4uNTk2ZDk4MTVjYjU0OGRkN2NkZDhmMWUyNzc0ZGI2MTkwM2Ez
MDVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgK
QEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgogICAgICAgICBObywKICAgICB9OwogICAgIAotICAg
IFBpbmdIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IFVzZXNBc3luY0NhbGxiYWNrcyB1c2VBc3luY0NhbGxiYWNrcywgYm9vbCBzaG91bGRGb2xsb3dS
ZWRpcmVjdHMsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAg
ICAgICA6IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0hhbmRsZTo6dGltZW91dFRpbWVyRmly
ZWQpCisgICAgUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSwgVXNlc0FzeW5jQ2FsbGJhY2tzIHVzZUFzeW5jQ2FsbGJhY2tzLCBib29sIHNob3Vs
ZEZvbGxvd1JlZGlyZWN0cywgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3Im
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2N1cnJlbnRSZXF1ZXN0KHJlcXVl
c3QpCisgICAgICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nSGFuZGxlOjp0aW1lb3V0
VGltZXJGaXJlZCkKICAgICAgICAgLCBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogICAgICAgICAsIG1fc2hvdWxkRm9sbG93UmVkaXJlY3Rz
KHNob3VsZEZvbGxvd1JlZGlyZWN0cykKICAgICAgICAgLCBtX3VzZXNBc3luY0NhbGxiYWNrcyh1
c2VBc3luY0NhbGxiYWNrcykKQEAgLTY0LDI1ICs2NSwzMSBAQCBwcml2YXRlOgogICAgIH0KICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJikgZmluYWwKICAgICB7Cisg
ICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgICAgICBpZiAo
bV9zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKLSAgICAgICAgICAgIGhhbmRsZS0+Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICBoYW5kbGUtPmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCB7IG1fY3VycmVudFJlcXVlc3Qg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlIHRoaXM7
CisgICAgICAgIHBpbmdMb2FkQ29tcGxldGUoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIGZvbGxv
dyByZWRpcmVjdHMiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAg
ICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpIGZpbmFsIHsgZGVsZXRlIHRoaXM7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsg
ZGVsZXRlIHRoaXM7IH07Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxl
KikgZmluYWwgeyBkZWxldGUgdGhpczsgfQotICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdM
b2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSopIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRD
b21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJl
c291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZTsgfQogICAgIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkgZmluYWwgeyByZXR1cm4gbV91c2Vz
QXN5bmNDYWxsYmFja3MgPT0gVXNlc0FzeW5jQ2FsbGJhY2tzOjpZZXM7IH0KLSAgICB2b2lkIHRp
bWVvdXRUaW1lckZpcmVkKCkgeyBkZWxldGUgdGhpczsgfQorICAgIHZvaWQgdGltZW91dFRpbWVy
RmlyZWQoKSB7IHBpbmdMb2FkQ29tcGxldGUoUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkxvYWQgdGltZWQgb3V0IiksIFJl
c291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0KIAotICAgIHZpcnR1YWwgflBpbmdIYW5k
bGUoKQorICAgIHZvaWQgcGluZ0xvYWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciA9IHsgfSkKICAgICB7Ci0gICAgICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQotICAgICAg
ICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgICAgIGRlbGV0ZSB0aGlz
OworICAgIH0KIAorICAgIHZpcnR1YWwgflBpbmdIYW5kbGUoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX2NvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgaWYgKG1faGFuZGxlKSB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9oYW5kbGUtPmNsaWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAg
bV9oYW5kbGUtPmNsZWFyQ2xpZW50KCk7CkBAIC05MSwxMSArOTgsMTIgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOworICAgIFJlc291cmNl
UmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFRpbWVyIG1fdGltZW91dFRpbWVyOwogICAg
IGJvb2wgbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsKICAgICBib29sIG1fc2hvdWxkRm9s
bG93UmVkaXJlY3RzOwogICAgIFVzZXNBc3luY0NhbGxiYWNrcyBtX3VzZXNBc3luY0NhbGxiYWNr
czsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPiBtX2NvbXBsZXRpb25IYW5k
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCBhY2RjYzQzOGY2OTQ4ODFhMjE1ZDY2YWZkZWQ5NzExNDI3ZmJkODczLi5jZTQ2
NWJhMjcxMTcwN2U3ZDJhMmViMzViMWRjOTBkNGFhNDg3MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtMjQ1LDE4ICsyNDUsMTggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2EK
ICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRCwgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAKICAgICAvLyBQaW5n
SGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRz
IHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgotICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQu
Z2V0KCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QsIGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVk
Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscywgUGluZ0hhbmRsZTo6VXNlc0Fz
eW5jQ2FsbGJhY2tzOjpZZXMsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGxvYWRQ
YXJhbWV0ZXJzLmlkZW50aWZpZXJdIHsKLSAgICAgICAgZGlkRmluaXNoUGluZ0xvYWQoaWRlbnRp
Zmllcik7CisgICAgbmV3IFBpbmdIYW5kbGUoY29udGV4dC5nZXQoKSwgbG9hZFBhcmFtZXRlcnMu
cmVxdWVzdCwgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9PSBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzLCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6OlllcywgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcl0g
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgICAgIGRpZEZpbmlzaFBpbmdMb2Fk
KGlkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9h
ZElkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5p
c2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIGlmICghbV9jb25uZWN0aW9uLT5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpEaWRGaW5pc2hQaW5nTG9hZChwaW5nTG9hZElkZW50aWZpZXIpLCAwKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGlkRmluaXNoUGluZ0xvYWQocGluZ0xvYWRJZGVudGlmaWVyLCBlcnJvciksIDApOwogfQog
CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVMb2FkSWRlbnRpZmll
cihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggNTI0Y2Q4ZDg5NWVlZWI5ODdkNzhjZDgwNTBlOWVlOGRmYTM0MDFkYi4uMmRkMWY4
MWQ1MzE1OTU0OGFiYmU1ZDA3YzBiMzRkYWFjNGE1NmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKK2NsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTYxLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlv
bi5nZXQoKTsgfQogCiAgICAgdm9pZCBkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZGVyJik7Ci0gICAgdm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5n
TG9hZElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGlu
Z0xvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICBi
b29sIGNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAppbmRleCA4MjliMjc5N2ZjNTM3MDRmZTA0
YTIzMmFhYTJlODgwYzJkNTIyYjVhLi4yMTJjN2E2NTFjZGU5MWU4ZjQ5M2QxNDNmYTE5NTNlYTVl
NTdlMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2Vz
c2lvblRyYWNrZXIuaCIKKyNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlLmg+CkBAIC02Niw4ICs2Nyw2IEBAIFBpbmdMb2FkOjpQaW5nTG9hZChOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIEhUVFBIZWFkZXJNYXAmJiBvCiAK
IFBpbmdMb2FkOjp+UGluZ0xvYWQoKQogewotICAgIG1fY29ubmVjdGlvbi0+ZGlkRmluaXNoUGlu
Z0xvYWQobV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwotCiAgICAgaWYgKG1fcmVkaXJlY3RIYW5k
bGVyKQogICAgICAgICBtX3JlZGlyZWN0SGFuZGxlcih7IH0pOwogCkBAIC03OCw2ICs3NywxMiBA
QCBQaW5nTG9hZDo6flBpbmdMb2FkKCkKICAgICB9CiB9CiAKK3ZvaWQgUGluZ0xvYWQ6OmRpZEZp
bmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmRp
ZEZpbmlzaFBpbmdMb2FkKG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvcik7CisgICAgZGVs
ZXRlIHRoaXM7Cit9CisKIHZvaWQgUGluZ0xvYWQ6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3Jr
TG9hZCIpOwpAQCAtOTcsNiArMTAyLDggQEAgU2VjdXJpdHlPcmlnaW4mIFBpbmdMb2FkOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0CiAKIHZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CisgICAgbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0ID0gcmVxdWVzdDsKKwogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gc2hvdWxk
Rm9sbG93UmVkaXJlY3RzPyAlZCIsIG1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMp
OwogICAgIGlmICghbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cykgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMTQ5LDE0ICsxNTYsMTQgQEAgdm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXAKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
Q2hhbGxlbmdlIik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCB7IH0pOwotICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZp
bmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIEhUVFAgYXV0aGVudGljYXRpb24iKSwgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAogdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24gLSBodHRw
U3RhdHVzQ29kZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7Ci0gICAgZGVsZXRlIHRoaXM7
CisgICAgZGlkRmluaXNoKCk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCkBAIC0xNzEsNyArMTc4LDggQEAgdm9pZCBQaW5nTG9hZDo6ZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IE5ldHdv
cmtMb2EKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUiKTsKICAg
ICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZENvbXBsZXRlV2l0aEVy
cm9yLCBlcnJvcl9jb2RlOiAlZCIsIGVycm9yLmVycm9yQ29kZSgpKTsKLSAgICBkZWxldGUgdGhp
czsKKworICAgIGRpZEZpbmlzaChlcnJvcik7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmRpZFNlbmRE
YXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1NlbmQpCkBAIC0xODEsMTkgKzE4OSwyNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVAogdm9p
ZCBQaW5nTG9hZDo6d2FzQmxvY2tlZCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2FzQmxvY2tlZCIpOwotICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZpbmlzaChibG9ja2VkRXJy
b3IoY3VycmVudFJlcXVlc3QoKSkpOwogfQogCiB2b2lkIFBpbmdMb2FkOjpjYW5ub3RTaG93VVJM
KCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5ub3RTaG93VVJMIik7Ci0gICAg
ZGVsZXRlIHRoaXM7CisgICAgZGlkRmluaXNoKGNhbm5vdFNob3dVUkxFcnJvcihjdXJyZW50UmVx
dWVzdCgpKSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZCIpOwotICAgIGRlbGV0
ZSB0aGlzOworICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJl
bnRSZXF1ZXN0KCkudXJsKCksIEFTQ0lJTGl0ZXJhbCgiTG9hZCB0aW1lZCBvdXQiKSwgUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6VGltZW91dCB9KTsKK30KKworY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBQ
aW5nTG9hZDo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAoreworICAgIGlmIChtX2xhc3RSZWRpcmVj
dGlvblJlcXVlc3QpCisgICAgICAgIHJldHVybiAqbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0Owor
CisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0OwogfQogCiBib29sIFBpbmdMb2FkOjpp
c0FsbG93ZWRSZWRpcmVjdChjb25zdCBVUkwmIHVybCkgY29uc3QKQEAgLTI2Miw3ICsyNzgsNyBA
QCB2b2lkIFBpbmdMb2FkOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdo
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZQogICAgICAgICBpZiAocmVzdWx0ID09IE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6UmVzdWx0OjpTdWNjZXNzKQogICAgICAgICAgICAgcHJlZmxp
Z2h0U3VjY2VzcyhSZXNvdXJjZVJlcXVlc3QgeyBjb3JzUHJlZmxpZ2h0Q2hlY2tlci0+b3JpZ2lu
YWxSZXF1ZXN0KCkgfSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzOwor
ICAgICAgICAgICAgZGlkRmluaXNoKFJlc291cmNlRXJyb3IgeyBTdHJpbmcoKSwgMCwgY29yc1By
ZWZsaWdodENoZWNrZXItPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkNP
UlMgcHJlZmxpZ2h0IGZhaWxlZCIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9s
IH0pOwogICAgIH0pOwogICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXItPnN0YXJ0UHJlZmxpZ2h0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggNDU3ZWY2
Y2U0ZmM4MmI1MWU4MGZjYjBhYTdjZjIzY2RhZDRiMTAxNS4uY2Y2YWExMGFiOGFmZGU2NjhjMTlm
MGMzMmQ3OWVhZWQxNGUwMDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5OwpAQCAtNjgsNiArNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJl
ZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKworICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdDsKKyAgICB2b2lk
IGRpZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CiAgICAgCiAg
ICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogICAgIFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9y
IENPUlMgY2hlY2tzLgpAQCAtODAsNiArODQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1Np
bXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBtX3Jl
ZGlyZWN0SGFuZGxlcjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3Q7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0MmEyZGIyMGU1NTVmOGNj
OTEwNzI5ZGU3ZGE1NDM1YjU0Nzk5MDRkLi45NjI0ZTI5NjRjNzQ5Y2I3NmM1YmYwOTdmZTJjNTBj
N2NkNmZmYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTEzNSw5ICsxMzUsOSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkV3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXModWludDY0X3QgcmVxdWVzdElkZQogICAgICAgICBoYW5kbGVyKGZpbGVuYW1lcyk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50
NjRfdCBwaW5nTG9hZElkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVy
cm9yJiYgZXJyb3IpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3Ry
YXRlZ3koKS5kaWRGaW5pc2hQaW5nTG9hZChwaW5nTG9hZElkZW50aWZpZXIpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuZGlkRmluaXNoUGluZ0xvYWQo
cGluZ0xvYWRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSk7CiB9CiAKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAwOWNkMDViOWNlOWE4
NzdhNmNkNzk2NmMyMTliMGM1M2RjOWM0YTg5Li5jNTM0NGVhNjVkMDFlYzFhM2RhMmIwYjA1M2Nm
YzQwMzgzMWU1NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzMsNyArNzMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkV3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMpOwotICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0
X3QgcGluZ0xvYWRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2
NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBiNjc0ZjdlYjQ5MTk2
ODVlYmI0MzJhYWE4NjlhN2UyYTkwOTQxNTVjLi44M2VmMmU2MjI4OWJhZTFkODMzNmJiZjkyMmQz
ZjU4ZDI2NGI4OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CkBAIC0yNyw1ICsyNyw1IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBM
ZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIERpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMp
Ci0gICAgRGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKQorICAg
IERpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA2OWZiOTFjODJiOGFlNjA3
ZDEwZjZmMTI4YjkyYjM5NmMxOTYzNTVjLi5lOTdmY2JkN2Y5MjBjZjk0MWU5MDY2ZDg3OWQxZGVl
MGUxMWVhOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zNTMsNyArMzUzLDcgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIAogICAgIGF1dG8gcGluZ0xvYWRD
b21wbGV0aW9uSGFuZGxlcnMgPSBXVEZNb3ZlKG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnMp
OwogICAgIGZvciAoYXV0byYgcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciA6IHBpbmdMb2FkQ29t
cGxldGlvbkhhbmRsZXJzLnZhbHVlcygpKQotICAgICAgICBwaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIHBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXIoaW50ZXJuYWxFcnJvcihV
UkwoKSkpOwogfQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIHJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3Jl
ZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCkBAIC0zOTYsMTMgKzM5NiwxMyBAQCBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVQaW5nTG9hZElkZW50aWZpZXIoKQogICAgIHJldHVybiArK2lk
ZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoTmV0
d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVu
dFNlY3VyaXR5UG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c3RhcnRQaW5nTG9hZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0
SGVhZGVycywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgQ29udGVudFNlY3Vy
aXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBjYWxsIHRvIGNyZWF0ZVBpbmdIYW5kbGUgbWlnaHQg
YmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBlbXB0eSBEb2N1bWVudCBjcmVhdGlvbiBiZWZvcmUgYSBO
ZXR3b3JraW5nQ29udGV4dCBleGlzdHMuCiAgICAgLy8gSXQgaXMgbm90IGNsZWFyIHRoYXQgd2Ug
c2hvdWxkIHNlbmQgcGluZyBsb2FkcyBkdXJpbmcgdGhhdCBwcm9jZXNzIGFueXdheXMuCiAgICAg
aWYgKCFuZXR3b3JraW5nQ29udGV4dCkgewogICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIp
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQyOSwxMCArNDI5LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0
YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBSZXNvCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvYWRQaW5n
KFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgMCk7CiB9
CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBp
bmdMb2FkSWRlbnRpZmllcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBpbmdM
b2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYmIGVycm9yKQog
ewogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbV9waW5nTG9hZENvbXBsZXRpb25I
YW5kbGVycy50YWtlKHBpbmdMb2FkSWRlbnRpZmllcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKIH0KIAog
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hB
MTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBh
cnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggMjdmZWEw
NGYzYjQ3NWI4ODYzNjM0YTA1ZjQ4ZWQ5MGIxODE1MDM1Zi4uMmY0NGY4ZGI4MGFkYzNjNDQwODkz
ZWJkNzQ0NmNmYjczOTYwOWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsKICAgICB2b2lkIHJlc3Vt
ZVBlbmRpbmdSZXF1ZXN0cygpIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoUGlu
Z0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHN0YXJ0UGluZ0xv
YWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQo
dWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwog
CiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJv
ZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKIApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVy
Pj4gbV93ZWJSZXNvdXJjZUxvYWRlcnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBXZWJV
UkxTY2hlbWVUYXNrUHJveHkqPiBtX3VybFNjaGVtZVRhc2tzOwotICAgIEhhc2hNYXA8dW5zaWdu
ZWQgbG9uZywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3BpbmdMb2FkQ29tcGxldGlvbkhhbmRs
ZXJzOworICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxl
cj4gbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDNhNzUyZjU4YzQ2NzE3Nzgx
MjhlNzMxOWI1NThmYzY2MTgzYTRlZTMuLmRiZTlkM2Q2NzdjYWJhNjMzYjRmODA0YmJmYWJhNTM1
Mzg0M2U4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM2Myw3ICszNjMs
NyBAQCBib29sIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpsaW1p
dFJlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaQogICAgIHJldHVybiBtX3JlcXVlc3RzTG9hZGlu
Zy5zaXplKCkgPj0gKHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpLmlzU2VyaWFsTG9hZGluZ0Vu
YWJsZWQoKSA/IDEgOiBtX21heFJlcXVlc3RzSW5GbGlnaHQpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6c3RhcnRQaW5nTG9hZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29y
a2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYWRlck1h
cCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
KiwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzdGFydFBp
bmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
LCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9w
dGlvbnMsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICAvLyBQaW5nSGFuZGxlIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRz
ZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgogICAgIG5ldyBQaW5nSGFu
ZGxlKG5ldHdvcmtpbmdDb250ZXh0LCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzICE9IEZl
dGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIFBpbmdIYW5kbGU6OlVzZXNBc3luY0NhbGxi
YWNrczo6Tm8sIG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9s
bG93LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAppbmRleCAzNzAxYmMzM2I3MGE4ZWU5ZTdiNzdhYWUyZjI0ZDZkMDNlZTRmYTBlLi5mODE2NjI3
ZWE0NGJmZmVmZDgyZWFmNTMxZTliMGQ2MjA4Mzk2NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdS
ZXF1ZXN0cygpIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7
CiAKLSAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgc3Rh
cnRQaW5nTG9hZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBT
SEExOjpEaWdlc3QmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEwMDM3ZDBjYWViNzZkZTRhZTUzODQ4OWUy
ZDc2NjQ2MDk5ZDg3ZjAuLjY3OGE2M2JlN2RkNDdkNmNiMTFjZTFkOTVmOWEwYTc5NGMxMTQ0MzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCisgICAgICAgIFtCZWFjb25dIEltcHJvdmUgZXJyb3IgcmVwb3J0aW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0
IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5j
LWVycm9yLWxvZ2dpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9i
ZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmcuaHRtbDogQWRkZWQuCisKKzIwMTctMDgt
MTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBbQmVhY29uXSBB
ZGQgc3VwcG9ydCBmb3IgcXVvdGEgbGltaXRhdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDQzCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
MzcyOTAwMj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24t
YXN5bmMtZXJyb3ItbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9i
ZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgyMDA4ZDk3ZjM3MzhjNGYyYzJiZjU4NTJiMzM4NGEwY2U5OGM5ODIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dp
bmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBCZWFjb24g
QVBJIGNhbm5vdCBsb2FkIGh0dHA6Ly9pbnZhbGlkLmxvY2FsaG9zdC8uIEEgc2VydmVyIHdpdGgg
dGhlIHNwZWNpZmllZCBob3N0bmFtZSBjb3VsZCBub3QgYmUgZm91bmQuCisKK1BBU1MgU2hvdWxk
IGxvZyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjb25zb2xlIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMyNzZjZmU1MDgxZGNmMjgyYjU5NDFkMGIwZjcxYjM2YTI0NTllNDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFz
eW5jLWVycm9yLWxvZ2dpbmcuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgYXN5bmNfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGxldCBpbnZhbGlkSG9zdCA9ICJodHRwOi8vaW52YWxpZC5sb2Nh
bGhvc3QiOworICAgICAgICBhc3NlcnRfdHJ1ZShuYXZpZ2F0b3Iuc2VuZEJlYWNvbihpbnZhbGlk
SG9zdCwgJ3Rlc3QnKSwgInNlbmRCZWFjb24gc2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAg
fSwgNTAwKTsKKyAgICB9LCAiU2hvdWxkIGxvZyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjb25z
b2xlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tcXVvdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1xdW90YS1leHBlY3RlZC50eHQKaW5kZXggMTBiMTYx
NTM5MDM4OWU5MTc3ZGU2YWM1YWU0NjgxMzAzNDU4OGU4Mi4uNDQxNTdiZmMzMzA5ZDVlM2VjODY1
M2FhMzI0Zjk0ZTU1ZGI1MWY4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVh
Y29uL2JlYWNvbi1xdW90YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
YmVhY29uL2JlYWNvbi1xdW90YS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgNDQ6IFJlYWNoZWQgbWF4aW11bSBhbW91bnQgb2YgcXVldWVkIGRhdGEg
b2YgNjRLYiBmb3Iga2VlcGFsaXZlIHJlcXVlc3RzCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNTI6
IFJlYWNoZWQgbWF4aW11bSBhbW91bnQgb2YgcXVldWVkIGRhdGEgb2YgNjRLYiBmb3Iga2VlcGFs
aXZlIHJlcXVlc3RzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDQ6IEJlYWNvbiBBUEkgY2Fubm90
IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4ODAwLy4gUmVhY2hlZCBtYXhpbXVtIGFtb3VudCBvZiBx
dWV1ZWQgZGF0YSBvZiA2NEtiIGZvciBrZWVwYWxpdmUgcmVxdWVzdHMKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA1MjogQmVhY29uIEFQSSBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0Ojg4MDAv
LiBSZWFjaGVkIG1heGltdW0gYW1vdW50IG9mIHF1ZXVlZCBkYXRhIG9mIDY0S2IgZm9yIGtlZXBh
bGl2ZSByZXF1ZXN0cwogCiBQQVNTIEJlYWNvbiB3aXRoIGEgYm9keSBhYm92ZSB0aGUgUXVvdGEg
TGltaXQgc2hvdWxkIGZhaWwuIAogUEFTUyBNdWx0aXBsZSBCZWFjb25zIFF1b3RhIExpbWl0IApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1xdW90YS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1xdW90YS5odG1sCmluZGV4IGE2
YzM3YTNiNDI0ZDExZTdmNGRhMzkxMjJjMzI0NGFlZmQ5YWFjNzguLjMwYzlhMTA1Yzk0N2MxMzg5
MTZiNGI0NTAwZDQxNWJkMTQ2Y2NhMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L2JlYWNvbi9iZWFjb24tcXVvdGEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vYmVhY29uLXF1b3RhLmh0bWwKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgdmFyIHRhcmdl
dCA9IFJFU09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZsaWdodC5weT9hbGxvd0NvcnM9MSZjbWQ9
cHV0JmlkPSIgKyBpZDsKIAogICAgICAgICBhc3NlcnRfdHJ1ZShuYXZpZ2F0b3Iuc2VuZEJlYWNv
bih0YXJnZXQsIGNyZWF0ZVBheWxvYWQoZXhwZWN0ZWRRdW90YSkpLCAiQmVhY29uIHdpdGggYSBi
b2R5IGF0IHRoZSBRdW90YSBMaW1pdCBzaG91bGQgc3VjY2VlZC4iKTsKLSAgICAgICAgYXNzZXJ0
X2ZhbHNlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRhcmdldCwgY3JlYXRlUGF5bG9hZCgxKSksICJT
ZWNvbmQgYmVhY29uIHNob3VsZCBub3QgYmUgc2VudCBiZWNhdXNlIHdlIHJlYWNoZWQgdGhlIHF1
b3RhIik7CisgICAgICAgIGFzc2VydF9mYWxzZShuYXZpZ2F0b3Iuc2VuZEJlYWNvbigiLyIsIGNy
ZWF0ZVBheWxvYWQoMSkpLCAiU2Vjb25kIGJlYWNvbiBzaG91bGQgbm90IGJlIHNlbnQgYmVjYXVz
ZSB3ZSByZWFjaGVkIHRoZSBxdW90YSIpOwogICAgICAgICByZXR1cm4gd2FpdEZvckJlYWNvbihp
ZCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFzc2VydF90cnVlKG5hdmlnYXRvci5z
ZW5kQmVhY29uKHRhcmdldCwgY3JlYXRlUGF5bG9hZCgxKSksICJBbGxvY2F0ZWQgcXVvdGEgc2hv
dWxkIGJlIHJldHVybmVkIG9uY2UgdGhlIGJlYWNvbiBpcyBubyBsb25nZXIgaW4gZmxpZ2h0Iik7
CiAgICAgICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318556</attachid>
            <date>2017-08-18 16:42:01 -0700</date>
            <delta_ts>2017-08-18 17:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175723-20170818164201.patch</filename>
            <type>text/plain</type>
            <size>40959</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2YTZiNGQwODI1OTU0
N2MwOTBjODVmYzVmNzVlODlkZGEyNDQ3Mi4uYjRmZTY0NTZlMWE2NDRhOWE5OTkyNTllNjVmMTNh
MWUyMGZmMmRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE3LTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW0JlYWNvbl0gSW1wcm92ZSBl
cnJvciByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTcyMworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEhhdmUgUGluZyBsb2FkcyBzdWNoIGFzIGJlYWNvbnMgcmVwb3J0IGVycm9ycyB2aWEgdGhl
aXIgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBUaGUgQmVhY29uIEFQSSBpcyB1c2luZyB0
aGlzIGVycm9yIHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZSB3aGVuIGJlYWNvbiBsb2FkcworICAg
ICAgICBmYWlsLCBwcm92aWRlZCB0aGF0IHRoZSBwYWdlIGlzIHN0aWxsIGFsaXZlLgorCisgICAg
ICAgIFRlc3Q6IGh0dHAvd3B0L2JlYWNvbi9iZWFjb24tYXN5bmMtZXJyb3ItbG9nZ2luZy5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpOYXZpZ2F0b3JCZWFjb24pOgorICAgICAgICAo
V2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjp+TmF2aWdhdG9yQmVhY29uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JCZWFjb246OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJl
YWNvbjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29u
Ojpsb2dFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFj
b24pOgorICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5oOgorICAgICAg
ICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3VyY2Up
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oOgorCisyMDE3LTA4LTE4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBvcnQg
Zm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGQ0NWM1MDdiNjJkZmU0NTJlYzVmZWIwNDZlM2VkYjY0ZDNjODkxNTUuLjgxZmQ0
YzFkYWY3YzM2OWVmYTg0NDY4YTU5ZDBlNjlkZmNjNTRlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
NDMgQEAKIDIwMTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAg
ICAgICBbQmVhY29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMgYmVhY29u
cyByZXBvcnQgZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIFRo
ZSBCZWFjb24gQVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBtZXNzYWdl
IHdoZW4gYmVhY29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhlIHBhZ2Ug
aXMgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5nTG9hZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp+UGluZ0xv
YWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdl
YktpdDo6UGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQ
aW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpQaW5nTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpQ
aW5nTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpjYW5ub3RT
aG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKToK
KyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmN1cnJlbnRSZXF1ZXN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJl
ZmxpZ2h0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFBpbmdMb2FkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGlu
Z0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUGlu
Z0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
OgorCisyMDE3LTA4LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAg
ICAgW0JlYWNvbl0gQWRkIHN1cHBvcnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzM3MjkwMDI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ5NzNhYWJmZjAz
OTg1MmZmYTE3YzVjOTcwZTFiYzRlNTBhYWMyZWEuLjhhYjcxNzI1N2UxYmNmY2QxYzM0ODBhMGQ4
NjJiN2Y4YTA3ZjNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIw
MTctMDgtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBbQmVh
Y29uXSBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgSGF2ZSBQaW5nIGxvYWRzIHN1Y2ggYXMgYmVhY29ucyByZXBvcnQg
ZXJyb3JzIHZpYSB0aGVpciBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIFRoZSBCZWFjb24g
QVBJIGlzIHVzaW5nIHRoaXMgZXJyb3IgdG8gbG9nIGEgY29uc29sZSBtZXNzYWdlIHdoZW4gYmVh
Y29uIGxvYWRzCisgICAgICAgIGZhaWwsIHByb3ZpZGVkIHRoYXQgdGhlIHBhZ2UgaXMgc3RpbGwg
YWxpdmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzdGFydFBpbmdMb2Fk
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoK
KworMjAxNy0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAg
IFtCZWFjb25dIEFkZCBzdXBwb3J0IGZvciBxdW90YSBsaW1pdGF0aW9uCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0NDMKICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzNzI5MDAyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29u
L05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXggMWZhMWY0MTI2NzE0OTUwZGQ0NzIxZjJlM2MzZWEw
NjA1NGI5M2RjOC4uMjgzN2ZmN2U1NTE1YWUzZmEwNGQ2M2FjMjQwOTU1YWRjMzU4NmVkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3Bw
CkBAIC0yNiwxNiArMjYsODAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOYXZp
Z2F0b3JCZWFjb24uaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZldGNoQm9keS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNl
cnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRC
ZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwg
c3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6OkluaXQ+JiYgYm9keSkKK05hdmlnYXRvckJlYWNvbjo6
TmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYgbmF2aWdhdG9yKQorICAgIDogbV9uYXZpZ2F0b3Io
bmF2aWdhdG9yKQoreworfQorCitOYXZpZ2F0b3JCZWFjb246On5OYXZpZ2F0b3JCZWFjb24oKQor
eworICAgIGZvciAoYXV0byYgYmVhY29uIDogbV9pbmZsaWdodEJlYWNvbnMpCisgICAgICAgIGJl
YWNvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKworTmF2aWdhdG9yQmVhY29uKiBOYXZpZ2F0
b3JCZWFjb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCit7CisgICAgYXV0byogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9y
Pjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CisgICAgaWYgKCFzdXBwbGVt
ZW50KSB7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2
aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOworICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKKyAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOworICAgIH0KKyAgICByZXR1cm4gc3VwcGxlbWVu
dDsKK30KKworY29uc3QgY2hhciogTmF2aWdhdG9yQmVhY29uOjpzdXBwbGVtZW50TmFtZSgpCit7
CisgICAgcmV0dXJuICJOYXZpZ2F0b3JCZWFjb24iOworfQorCit2b2lkIE5hdmlnYXRvckJlYWNv
bjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIGlmICgh
cmVzb3VyY2UucmVzb3VyY2VFcnJvcigpLmlzTnVsbCgpKQorICAgICAgICBsb2dFcnJvcihyZXNv
dXJjZS5yZXNvdXJjZUVycm9yKCkpOworCisgICAgcmVzb3VyY2UucmVtb3ZlQ2xpZW50KCp0aGlz
KTsKKyAgICBib29sIHdhc1JlbW92ZWQgPSBtX2luZmxpZ2h0QmVhY29ucy5yZW1vdmVGaXJzdCgm
cmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7Cisg
ICAgQVNTRVJUKCFtX2luZmxpZ2h0QmVhY29ucy5jb250YWlucygmcmVzb3VyY2UpKTsKK30KKwor
dm9pZCBOYXZpZ2F0b3JCZWFjb246OmxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQoreworICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkpOworCisgICAgYXV0byogZnJhbWUgPSBt
X25hdmlnYXRvci5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciogbWVzc2FnZU1pZGRsZSA9ICIu
ICI7CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KTsKKyAgICBpZiAoZGVzY3JpcHRpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcnJvci5p
c0FjY2Vzc0NvbnRyb2woKSkKKyAgICAgICAgICAgIG1lc3NhZ2VNaWRkbGUgPSAiIGR1ZSB0byBh
Y2Nlc3MgY29udHJvbCBjaGVja3MuIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVzc2Fn
ZU1pZGRsZSA9ICIuIjsKKyAgICB9CisKKyAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZyhB
U0NJSUxpdGVyYWwoIkJlYWNvbiBBUEkgY2Fubm90IGxvYWQgIiksIGVycm9yLmZhaWxpbmdVUkwo
KS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKG1lc3NhZ2VNaWRkbGUpLCBkZXNjcmlwdGlvbikpOwor
fQorCitFeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0b3JCZWFjb246OnNlbmRCZWFjb24oRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHVybCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk6
OkluaXQ+JiYgYm9keSkKIHsKICAgICBVUkwgcGFyc2VkVXJsID0gZG9jdW1lbnQuY29tcGxldGVV
UkwodXJsKTsKIApAQCAtNzMsMTIgKzEzNywyMiBAQCBFeGNlcHRpb25Pcjxib29sPiBOYXZpZ2F0
b3JCZWFjb246OnNlbmRCZWFjb24oTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjbwog
ICAgICAgICAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3Jz
OwogICAgICAgICB9CiAgICAgfQorCiAgICAgYXV0byBjYWNoZWRSZXNvdXJjZSA9IGRvY3VtZW50
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEJlYWNvblJlc291cmNlKHsgV1RGTW92ZShy
ZXF1ZXN0KSwgb3B0aW9ucyB9KTsKLSAgICBpZiAoY2FjaGVkUmVzb3VyY2UpCi0gICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmICghY2FjaGVkUmVzb3VyY2UpIHsKKyAgICAgICAgbG9nRXJyb3Io
Y2FjaGVkUmVzb3VyY2UuZXJyb3IoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBBU1NFUlQoIW1faW5mbGlnaHRCZWFjb25zLmNvbnRhaW5zKGNhY2hlZFJlc291cmNlLnZh
bHVlKCkuZ2V0KCkpKTsKKyAgICBtX2luZmxpZ2h0QmVhY29ucy5hcHBlbmQoY2FjaGVkUmVzb3Vy
Y2UudmFsdWUoKS5nZXQoKSk7CisgICAgY2FjaGVkUmVzb3VyY2UudmFsdWUoKS0+YWRkQ2xpZW50
KCp0aGlzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIGRvY3VtZW50LmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNhY2hl
ZFJlc291cmNlLmVycm9yKCkubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0gICAgcmV0dXJuIGZh
bHNlOworRXhjZXB0aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVhY29uKE5hdmln
YXRvciYgbmF2aWdhdG9yLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBz
dGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiBib2R5KQoreworICAgIHJldHVybiBOYXZp
Z2F0b3JCZWFjb246OmZyb20obmF2aWdhdG9yKS0+c2VuZEJlYWNvbihkb2N1bWVudCwgdXJsLCBX
VEZNb3ZlKGJvZHkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNv
bi9OYXZpZ2F0b3JCZWFjb24uaAppbmRleCA2ZmRmODlkZDVhZWZlMzZjZmEyYWIwNzUxZTk4Mzhh
NGE4NGE2NjhkLi4zNDlmNjQzNDg5ODExZjY2MjVjOGYxNTY0NmI2ZjFiODMzYTM0MTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uaApAQCAt
MjUsMTggKzI1LDM3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5LmgiCisjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBOYXZpZ2F0b3I7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCi1jbGFzcyBOYXZpZ2F0b3JCZWFj
b24geworY2xhc3MgTmF2aWdhdG9yQmVhY29uIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnQ8TmF2
aWdhdG9yPiwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CisgICAg
ZXhwbGljaXQgTmF2aWdhdG9yQmVhY29uKE5hdmlnYXRvciYpOworICAgIH5OYXZpZ2F0b3JCZWFj
b24oKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNvbihOYXZpZ2F0b3Im
LCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6
SW5pdD4mJik7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gc2VuZEJlYWNvbihE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdXJsLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6SW5p
dD4mJik7CisKKyAgICBzdGF0aWMgTmF2aWdhdG9yQmVhY29uKiBmcm9tKE5hdmlnYXRvciYpOwor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbG9nRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYpOworCisgICAgTmF2aWdhdG9yJiBtX25hdmlnYXRvcjsKKyAgICBW
ZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiBtX2luZmxpZ2h0
QmVhY29uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5k
ZXggYjY0MjkzNDc1Y2RlYzU0NjY0YzRmZTgwNTVkZTY4MzYzMGNmOTZjNi4uODgyNzU2N2M0NDRj
MTliMjQ1MzE1ZTJkMjk1MTRiOWIwMmFiYjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRl
clN0cmF0ZWd5LmgKQEAgLTY0LDcgKzY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQZW5k
aW5nUmVxdWVzdHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQaW5nTG9hZChOZXR3
b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4s
IENvbnRlbnRTZWN1cml0eVBvbGljeSosIGNvbnN0IEZldGNoT3B0aW9ucyYsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0geyB9KSA9IDA7CisgICAgdXNpbmcgUGlu
Z0xvYWRDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJj
ZUVycm9yJik+OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250
ZXh0KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgQ29udGVudFNl
Y3VyaXR5UG9saWN5KiwgY29uc3QgRmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9uSGFu
ZGxlciYmID0geyB9KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRv
Q2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5S2V5LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDgy
OWNkOWJlNTYxODYzMDkwYTM4MTI2NGE0NzVhMTk3OWQ5NzMyNGMuLjQ4NWZjMzkxNzIzNTFkNTQ1
MGU1NmQ4YmVkZjIwZDk3YjRmNGY2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMjc0LDggKzI3NCwxMyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikK
ICAgICAgICAgICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3VtZW50ICYmICFk
b2N1bWVudC0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkgPyBk
b2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOwogICAgICAgICAgICAg
QVNTRVJUKG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyk7CiAgICAgICAgICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAg
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5zdGFydFBpbmdMb2Fk
KGZyYW1lLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsICptX29yaWdpbmFs
UmVxdWVzdEhlYWRlcnMsICptX29yaWdpbiwgY29udGVudFNlY3VyaXR5UG9saWN5LCBtX29wdGlv
bnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAg
ICAgICAgICAgICAgIGZpbmlzaExvYWRpbmcobnVsbHB0cik7CisgICAgICAgICAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+c3RhcnRQaW5nTG9hZChmcmFtZS5sb2Fk
ZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCAqbV9vcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzLCAqbV9vcmlnaW4sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9vcHRpb25zLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgeworICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKKyAgICAg
ICAgICAgICAgICAgICAgZmluaXNoTG9hZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0UmVzb3VyY2VFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMtPmVycm9yKExvYWRFcnJvcik7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGUzYTBmMzk5ZWI5YzA0NWZjZDY5MDI4NjQwMWQ1ZGVkOGRlYjRkY2EuLjBhNjc4Y2Nm
ODVhNzg4YTEyYTQwNDNlNGJjNmFkZjgwNTA0MGE1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMjk2LDkgKzI5
Niw5IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyCiAgICAgcmV0dXJuIGNhc3RDYWNoZWRSZXNv
dXJjZVRvPENhY2hlZFJhd1Jlc291cmNlPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlJhd1Jlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpKSk7CiB9CiAKLVJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
K1Jlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0QmVhY29uUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gcmVxdWVzdFJlc291cmNlKENhY2hl
ZFJlc291cmNlOjpCZWFjb24sIFdURk1vdmUocmVxdWVzdCkpOworICAgIHJldHVybiBjYXN0Q2Fj
aGVkUmVzb3VyY2VUbzxDYWNoZWRSYXdSZXNvdXJjZT4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpCZWFjb24sIFdURk1vdmUocmVxdWVzdCkpKTsKIH0KIAogUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKaW5kZXggNGNjYzg4NjQ3OTc0ZDZmMDc2MmEwNGRhYmNjOGYzYzdmMjQ1MzNkYS4uZDMy
ODhjYWJjMTNlZjkwMzYxM2MyY2U3OWRlYWRjMDFiMzllNzIyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRGb250Pj4gcmVxdWVzdEZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGJvb2wgaXNT
VkcpOwogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4+IHJlcXVlc3RNZWRpYShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgUmVz
b3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVx
dWVzdEljb24oQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwotICAgIFJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlcXVlc3RCZWFjb25SZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPj4gcmVxdWVzdEJlYWNvblJlc291cmNlKENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmKTsKICAgICBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+PiByZXF1ZXN0UmF3UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4+IHJlcXVlc3RNYWluUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYpOwogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRTVkdEb2N1bWVudD4+IHJlcXVlc3RTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCmluZGV4
IGZiMjEwYTRiMDc1M2M1ZDc0ZTAwNDM1NGRjMzQyNmU1MTVjZTQ4NDcuLjU5NmQ5ODE1Y2I1NDhk
ZDdjZGQ4ZjFlMjc3NGRiNjE5MDNhMzA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGluZ0hhbmRsZS5oCkBAIC00Myw4ICs0Myw5IEBAIHB1YmxpYzoKICAgICAgICAg
Tm8sCiAgICAgfTsKICAgICAKLSAgICBQaW5nSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3
b3JraW5nQ29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBVc2VzQXN5bmNDYWxsYmFja3MgdXNlQXN5bmNDYWxsYmFj
a3MsIGJvb2wgc2hvdWxkRm9sbG93UmVkaXJlY3RzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlBpbmdI
YW5kbGU6OnRpbWVvdXRUaW1lckZpcmVkKQorICAgIFBpbmdIYW5kbGUoTmV0d29ya2luZ0NvbnRl
eHQqIG5ldHdvcmtpbmdDb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIFVzZXNBc3luY0NhbGxiYWNrcyB1c2VBc3lu
Y0NhbGxiYWNrcywgYm9vbCBzaG91bGRGb2xsb3dSZWRpcmVjdHMsIFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDog
bV9jdXJyZW50UmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlz
LCAmUGluZ0hhbmRsZTo6dGltZW91dFRpbWVyRmlyZWQpCiAgICAgICAgICwgbV9zaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKICAgICAgICAgLCBt
X3Nob3VsZEZvbGxvd1JlZGlyZWN0cyhzaG91bGRGb2xsb3dSZWRpcmVjdHMpCiAgICAgICAgICwg
bV91c2VzQXN5bmNDYWxsYmFja3ModXNlQXN5bmNDYWxsYmFja3MpCkBAIC02NCwyNSArNjUsMzEg
QEAgcHJpdmF0ZToKICAgICB9CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlJiYpIGZpbmFsCiAgICAgeworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KTsKICAgICAgICAgaWYgKG1fc2hvdWxkRm9sbG93UmVkaXJlY3RzKSB7Ci0gICAgICAg
ICAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwor
ICAgICAgICAgICAgaGFuZGxlLT5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QgeyBtX2N1cnJlbnRSZXF1ZXN0IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICBwaW5nTG9hZENvbXBsZXRlKFJlc291cmNl
RXJyb3IgeyBTdHJpbmcoKSwgMCwgbV9jdXJyZW50UmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFs
KCJOb3QgYWxsb3dlZCB0byBmb2xsb3cgcmVkaXJlY3RzIiksIFJlc291cmNlRXJyb3I6OlR5cGU6
OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgaW50KSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9OwotICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgZGVsZXRlIHRoaXM7IH0KLSAgICB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWwgeyBk
ZWxldGUgdGhpczsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgUmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQor
ICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KICAgICBib29sIHVzZXNBc3luY0NhbGxiYWNrcygp
IGZpbmFsIHsgcmV0dXJuIG1fdXNlc0FzeW5jQ2FsbGJhY2tzID09IFVzZXNBc3luY0NhbGxiYWNr
czo6WWVzOyB9Ci0gICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpIHsgZGVsZXRlIHRoaXM7IH0K
KyAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCkgeyBwaW5nTG9hZENvbXBsZXRlKFJlc291cmNl
RXJyb3IgeyBTdHJpbmcoKSwgMCwgbV9jdXJyZW50UmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFs
KCJMb2FkIHRpbWVkIG91dCIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0IH0pOyB9CiAK
LSAgICB2aXJ0dWFsIH5QaW5nSGFuZGxlKCkKKyAgICB2b2lkIHBpbmdMb2FkQ29tcGxldGUoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IgPSB7IH0pCiAgICAgewotICAgICAgICBpZiAobV9jb21w
bGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlv
bkhhbmRsZXIsIG51bGxwdHIpKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3Ip
OworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CiAKKyAgICB2aXJ0dWFsIH5QaW5nSGFuZGxl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAg
IGlmIChtX2hhbmRsZSkgewogICAgICAgICAgICAgQVNTRVJUKG1faGFuZGxlLT5jbGllbnQoKSA9
PSB0aGlzKTsKICAgICAgICAgICAgIG1faGFuZGxlLT5jbGVhckNsaWVudCgpOwpAQCAtOTEsMTEg
Kzk4LDEyIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBt
X2hhbmRsZTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICBUaW1l
ciBtX3RpbWVvdXRUaW1lcjsKICAgICBib29sIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7
CiAgICAgYm9vbCBtX3Nob3VsZEZvbGxvd1JlZGlyZWN0czsKICAgICBVc2VzQXN5bmNDYWxsYmFj
a3MgbV91c2VzQXN5bmNDYWxsYmFja3M7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fY29t
cGxldGlvbkhhbmRsZXI7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJy
b3ImKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYWNkY2M0MzhmNjk0ODgxYTIxNWQ2NmFm
ZGVkOTcxMTQyN2ZiZDg3My4uY2U0NjViYTI3MTE3MDdlN2QyYTJlYjM1YjFkYzkwZDRhYTQ4NzI1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTI0NSwxOCArMjQ1LDE4IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzJiYgbG9hCiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBjb250
ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5zZXNz
aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QpOwogCiAgICAgLy8gUGluZ0hhbmRsZSBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRl
bGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KLSAgICBu
ZXcgUGluZ0hhbmRsZShjb250ZXh0LmdldCgpLCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBsb2Fk
UGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMsIFBpbmdIYW5kbGU6OlVzZXNBc3luY0NhbGxiYWNrczo6WWVzLCBsb2FkUGFyYW1ldGVycy5z
aG91bGRGb2xsb3dSZWRpcmVjdHMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGlkZW50aWZpZXIgPSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyXSB7Ci0gICAgICAgIGRp
ZEZpbmlzaFBpbmdMb2FkKGlkZW50aWZpZXIpOworICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQu
Z2V0KCksIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QsIGxvYWRQYXJhbWV0ZXJzLmFsbG93U3RvcmVk
Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscywgUGluZ0hhbmRsZTo6VXNlc0Fz
eW5jQ2FsbGJhY2tzOjpZZXMsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGxvYWRQ
YXJhbWV0ZXJzLmlkZW50aWZpZXJdIChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeworICAg
ICAgICBkaWRGaW5pc2hQaW5nTG9hZChpZGVudGlmaWVyLCBlcnJvcik7CiAgICAgfSk7CiAjZW5k
aWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUGlu
Z0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlv
bi0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGlkRmluaXNoUGluZ0xvYWQocGlu
Z0xvYWRJZGVudGlmaWVyKSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRpZEZpbmlzaFBpbmdMb2FkKHBpbmdMb2FkSWRlbnRp
ZmllciwgZXJyb3IpLCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDUyNGNkOGQ4OTVlZWViOTg3ZDc4Y2Q4MDUw
ZTllZThkZmEzNDAxZGIuLjJkZDFmODFkNTMxNTk1NDhhYmJlNWQwN2MwYjM0ZGFhYzRhNTZkMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEhUVFBIZWFkZXJN
YXA7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCkBA
IC02MSw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24o
KSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAogICAgIHZvaWQgZGlkQ2xlYW51cFJl
c291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwotICAgIHZvaWQgZGlkRmluaXNo
UGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlz
aFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogCiAgICAgYm9vbCBjYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5k
ZXggODI5YjI3OTdmYzUzNzA0ZmUwNGEyMzJhYWEyZTg4MGMyZDUyMmI1YS4uMjEyYzdhNjUxY2Rl
OTFlOGY0OTNkMTQzZmExOTUzZWE1ZTU3ZTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViRXJyb3Jz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oPgpAQCAtNjYsOCArNjcsNiBAQCBQaW5n
TG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBIVFRQSGVhZGVyTWFwJiYgbwogCiBQaW5nTG9hZDo6flBpbmdMb2FkKCkKIHsKLSAgICBtX2Nv
bm5lY3Rpb24tPmRpZEZpbmlzaFBpbmdMb2FkKG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKLQog
ICAgIGlmIChtX3JlZGlyZWN0SGFuZGxlcikKICAgICAgICAgbV9yZWRpcmVjdEhhbmRsZXIoeyB9
KTsKIApAQCAtNzgsNiArNzcsMTIgQEAgUGluZ0xvYWQ6On5QaW5nTG9hZCgpCiAgICAgfQogfQog
Cit2b2lkIFBpbmdMb2FkOjpkaWRGaW5pc2goY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgbV9jb25uZWN0aW9uLT5kaWRGaW5pc2hQaW5nTG9hZChtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgZXJyb3IpOworICAgIGRlbGV0ZSB0aGlzOworfQorCiB2b2lkIFBpbmdMb2FkOjpsb2Fk
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQiKTsKQEAgLTk3LDYgKzEwMiw4IEBAIFNlY3VyaXR5
T3JpZ2luJiBQaW5nTG9hZDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogCiB2b2lkIFBpbmdMb2Fk
Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVz
dCA9IHJlcXVlc3Q7CisKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbiAtIHNob3VsZEZvbGxvd1JlZGlyZWN0cz8gJWQiLCBtX3BhcmFtZXRlcnMu
c2hvdWxkRm9sbG93UmVkaXJlY3RzKTsKICAgICBpZiAoIW1fcGFyYW1ldGVycy5zaG91bGRGb2xs
b3dSZWRpcmVjdHMpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTE0OSwx
NCArMTU2LDE0IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUNoYWxsZW5nZSIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVy
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgeyB9KTsKLSAgICBk
ZWxldGUgdGhpczsKKyAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBj
dXJyZW50UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCBIVFRQIGF1dGhlbnRp
Y2F0aW9uIiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiB9CiAKIHZv
aWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25z
ZU5ldHdvcmtTZXNzaW9uIC0gaHR0cFN0YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpQb2xpY3lJZ25v
cmUpOwotICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZpbmlzaCgpOwogfQogCiB2b2lkIFBpbmdM
b2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQpAQCAtMTcxLDcgKzE3OCw4
IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZENvbXBsZXRlIik7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRDb21wbGV0ZVdpdGhFcnJvciwgZXJyb3JfY29kZTogJWQiLCBlcnJvci5lcnJvckNv
ZGUoKSk7Ci0gICAgZGVsZXRlIHRoaXM7CisKKyAgICBkaWRGaW5pc2goZXJyb3IpOwogfQogCiB2
b2lkIFBpbmdMb2FkOjpkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKQpAQCAtMTgxLDE5ICsxODksMjcgQEAgdm9pZCBQ
aW5nTG9hZDo6ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFQKIHZvaWQgUGluZ0xvYWQ6Ondhc0Jsb2NrZWQoKQogewogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIndhc0Jsb2NrZWQiKTsKLSAgICBkZWxldGUgdGhpczsKKyAg
ICBkaWRGaW5pc2goYmxvY2tlZEVycm9yKGN1cnJlbnRSZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBQ
aW5nTG9hZDo6Y2Fubm90U2hvd1VSTCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
Y2Fubm90U2hvd1VSTCIpOwotICAgIGRlbGV0ZSB0aGlzOworICAgIGRpZEZpbmlzaChjYW5ub3RT
aG93VVJMRXJyb3IoY3VycmVudFJlcXVlc3QoKSkpOwogfQogCiB2b2lkIFBpbmdMb2FkOjp0aW1l
b3V0VGltZXJGaXJlZCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRp
bWVyRmlyZWQiKTsKLSAgICBkZWxldGUgdGhpczsKKyAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJv
ciB7IFN0cmluZygpLCAwLCBjdXJyZW50UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkxv
YWQgdGltZWQgb3V0IiksIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7Cit9CisKK2Nv
bnN0IFJlc291cmNlUmVxdWVzdCYgUGluZ0xvYWQ6OmN1cnJlbnRSZXF1ZXN0KCkgY29uc3QKK3sK
KyAgICBpZiAobV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0KQorICAgICAgICByZXR1cm4gKm1fbGFz
dFJlZGlyZWN0aW9uUmVxdWVzdDsKKworICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdDsK
IH0KIAogYm9vbCBQaW5nTG9hZDo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CkBAIC0yNjIsNyArMjc4LDcgQEAgdm9pZCBQaW5nTG9hZDo6bWFrZUNyb3NzT3JpZ2luQWNj
ZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWUKICAgICAgICAg
aWYgKHJlc3VsdCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6U3VjY2Vz
cykKICAgICAgICAgICAgIHByZWZsaWdodFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0IHsgY29yc1By
ZWZsaWdodENoZWNrZXItPm9yaWdpbmFsUmVxdWVzdCgpIH0pOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9y
IHsgU3RyaW5nKCksIDAsIGNvcnNQcmVmbGlnaHRDaGVja2VyLT5vcmlnaW5hbFJlcXVlc3QoKS51
cmwoKSwgQVNDSUlMaXRlcmFsKCJDT1JTIHByZWZsaWdodCBmYWlsZWQiKSwgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICB9KTsKICAgICBtX2NvcnNQcmVmbGlnaHRD
aGVja2VyLT5zdGFydFByZWZsaWdodCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oCmluZGV4IDQ1N2VmNmNlNGZjODJiNTFlODBmY2IwYWE3Y2YyM2NkYWQ0YjEwMTUu
LmNmNmFhMTBhYjhhZmRlNjY4YzE5ZjBjMzJkNzllYWVkMTRlMDA3MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
Ik5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKQEAgLTY4LDYgKzY5LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHByZWZsaWdodFN1Y2Nlc3MoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOwogCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7CisKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1
ZXN0KCkgY29uc3Q7CisgICAgdm9pZCBkaWRGaW5pc2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgPSB7IH0pOwogICAgIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1f
cGFyYW1ldGVyczsKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0
SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KQEAgLTgwLDYgKzg0LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNTaW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIFJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXIgbV9yZWRpcmVjdEhhbmRsZXI7CiAgICAgbXV0YWJsZSBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9s
YXN0UmVkaXJlY3Rpb25SZXF1ZXN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggNDJhMmRiMjBlNTU1ZjhjYzkxMDcyOWRlN2RhNTQzNWI1NDc5OTA0ZC4uOTYyNGUyOTY0
Yzc0OWNiNzZjNWJmMDk3ZmUyYzUwYzdjZDZmZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0xMzUsOSArMTM1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJZGUKICAgICAgICAg
aGFuZGxlcihmaWxlbmFtZXMpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyKQordm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2Fk
SWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYmIGVycm9yKQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuZGlkRmluaXNoUGluZ0xvYWQocGluZ0xvYWRJ
ZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVn
eSgpLmRpZEZpbmlzaFBpbmdMb2FkKHBpbmdMb2FkSWRlbnRpZmllciwgV1RGTW92ZShlcnJvcikp
OwogfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKaW5kZXggMDljZDA1YjljZTlhODc3YTZjZDc5NjZjMjE5YjBjNTNkYzljNGE4OS4uYzUzNDRl
YTY1ZDAxZWMxYTNkYTJiMGIwNTNjZmM0MDM4MzFlNTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRpZFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKLSAgICB2b2lkIGRp
ZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcik7CisgICAgdm9pZCBk
aWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImJik7CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KaW5kZXggYjY3NGY3ZWI0OTE5Njg1ZWJiNDMyYWFhODY5YTdlMmE5MDk0MTU1Yy4uODNlZjJl
NjIyODliYWUxZDgzMzZiYmY5MjJkM2Y1OGQyNjRiODllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjcsNSArMjcsNSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBEaWRX
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVj
dG9yPFN0cmluZz4gZmlsZW5hbWVzKQotICAgIERpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBp
bmdMb2FkSWRlbnRpZmllcikKKyAgICBEaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9h
ZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
aW5kZXggNjlmYjkxYzgyYjhhZTYwN2QxMGY2ZjEyOGI5MmIzOTZjMTk2MzU1Yy4uZTk3ZmNiZDdm
OTIwY2Y5NDFlOTA2NmQ4NzlkMWRlZTBlMTFlYTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzUzLDcg
KzM1Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgp
CiAKICAgICBhdXRvIHBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXJzID0gV1RGTW92ZShtX3BpbmdM
b2FkQ29tcGxldGlvbkhhbmRsZXJzKTsKICAgICBmb3IgKGF1dG8mIHBpbmdMb2FkQ29tcGxldGlv
bkhhbmRsZXIgOiBwaW5nTG9hZENvbXBsZXRpb25IYW5kbGVycy52YWx1ZXMoKSkKLSAgICAgICAg
cGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBwaW5nTG9hZENvbXBsZXRpb25I
YW5kbGVyKGludGVybmFsRXJyb3IoVVJMKCkpKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
dW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQpAQCAt
Mzk2LDEzICszOTYsMTMgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGluZ0xvYWRJZGVudGlm
aWVyKCkKICAgICByZXR1cm4gKytpZGVudGlmaWVyOwogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJl
cXVlc3RIZWFkZXJzLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50
U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoTmV0d29ya2luZ0NvbnRleHQqIG5l
dHdvcmtpbmdDb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzb3Vy
Y2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5LCBj
b25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgY2FsbCB0byBj
cmVhdGVQaW5nSGFuZGxlIG1pZ2h0IGJlIG1hZGUgZHVyaW5nIGluaXRpYWwgZW1wdHkgRG9jdW1l
bnQgY3JlYXRpb24gYmVmb3JlIGEgTmV0d29ya2luZ0NvbnRleHQgZXhpc3RzLgogICAgIC8vIEl0
IGlzIG5vdCBjbGVhciB0aGF0IHdlIHNob3VsZCBzZW5kIHBpbmcgbG9hZHMgZHVyaW5nIHRoYXQg
cHJvY2VzcyBhbnl3YXlzLgogICAgIGlmICghbmV0d29ya2luZ0NvbnRleHQpIHsKICAgICAgICAg
aWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludGVybmFsRXJyb3IocmVxdWVzdC51cmwo
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MjksMTAgKzQyOSwxMCBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3
b3JraW5nQ29udGV4dCwgUmVzbwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpMb2FkUGluZyhXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgb3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycyksIDApOwogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5p
c2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIpCit2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFJl
c291cmNlRXJyb3ImJiBlcnJvcikKIHsKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnMudGFrZShwaW5nTG9hZElkZW50aWZpZXIpKQot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGVycm9yKSk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0b3JlRGVyaXZl
ZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUhhc2gsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oCmluZGV4IDI3ZmVhMDRmM2I0NzViODg2MzYzNGEwNWY0OGVkOTBiMTgxNTAzNWYu
LjJmNDRmOGRiODBhZGMzYzQ0MDg5M2ViZDc0NDZjZmI3Mzk2MDlhNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAt
NTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkg
ZmluYWw7CiAgICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsKIAotICAgIHZv
aWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVx
dWVzdEhlYWRlcnMsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4s
IFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSosIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0
aW9ucyYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsK
LSAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllcik7
CisgICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycywgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJj
ZU9yaWdpbiwgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUo
Y29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAKQEAgLTg1
LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFJl
ZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4+IG1fd2ViUmVzb3VyY2VMb2FkZXJzOwogICAgIEhhc2hN
YXA8dW5zaWduZWQgbG9uZywgV2ViVVJMU2NoZW1lVGFza1Byb3h5Kj4gbV91cmxTY2hlbWVUYXNr
czsKLSAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9w
aW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFBp
bmdMb2FkQ29tcGxldGlvbkhhbmRsZXI+IG1fcGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcnM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApp
bmRleCAzYTc1MmY1OGM0NjcxNzc4MTI4ZTczMTliNTU4ZmM2NjE4M2E0ZWUzLi5kYmU5ZDNkNjc3
Y2FiYTYzM2I0ZjgwNGJiZmFiYTUzNTM4NDNlOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwCkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
Okhvc3RJbmZvcm1hdGlvbjo6bGltaXRSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcmkKICAgICBy
ZXR1cm4gbV9yZXF1ZXN0c0xvYWRpbmcuc2l6ZSgpID49ICh3ZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIoKS5pc1NlcmlhbExvYWRpbmdFbmFibGVkKCkgPyAxIDogbV9tYXhSZXF1ZXN0c0luRmxpZ2h0
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnN0YXJ0UGluZ0xvYWQoTmV0
d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeSosIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNl
TG9hZFNjaGVkdWxlcjo6c3RhcnRQaW5nTG9hZChOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2lu
Z0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYWRlck1hcCYs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Kiwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgLy8gUGluZ0hhbmRsZSBtYW5hZ2VzIGl0cyBvd24g
bGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZp
bGxlZC4KICAgICBuZXcgUGluZ0hhbmRsZShuZXR3b3JraW5nQ29udGV4dCwgcmVxdWVzdCwgb3B0
aW9ucy5jcmVkZW50aWFscyAhPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBQaW5n
SGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6Ok5vLCBvcHRpb25zLnJlZGlyZWN0ID09IEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggMzcwMWJjMzNiNzBhOGVlOWU3Yjc3YWFlMmYy
NGQ2ZDAzZWU0ZmEwZS4uZjgxNjYyN2VhNDRiZmZlZmQ4MmVhZjUzMWU5YjBkNjIwODM5Njc1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsKICAgICB2b2lkIHJlc3VtZVBl
bmRpbmdSZXF1ZXN0cygpIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCYsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzb3Vy
Y2VPcmlnaW4sIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSosIGNvbnN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVy
TWFwJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwg
UGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJp
dmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMDAz
N2QwY2FlYjc2ZGU0YWU1Mzg0ODllMmQ3NjY0NjA5OWQ4N2YwLi4zNmM3MWEwODZiNTc3ODRkYTQ1
YjAzMGExM2VhNDdjNDM1MzEyOGYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMDgtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBbQmVhY29uXSBJbXBy
b3ZlIGVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1NzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC93cHQv
YmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLmh0bWw6
IEFkZGVkLgorCisyMDE3LTA4LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgW0JlYWNvbl0gQWRkIHN1cHBvcnQgZm9yIHF1b3RhIGxpbWl0YXRpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ0MwogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzM3MjkwMDI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9iZWFjb24vYmVhY29uLWFzeW5jLWVycm9yLWxvZ2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MjAwOGQ5N2YzNzM4YzRmMmMyYmY1ODUyYjMzODRhMGNlOThj
OTgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNv
bi1hc3luYy1lcnJvci1sb2dnaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0NPTlNP
TEUgTUVTU0FHRTogQmVhY29uIEFQSSBjYW5ub3QgbG9hZCBodHRwOi8vaW52YWxpZC5sb2NhbGhv
c3QvLiBBIHNlcnZlciB3aXRoIHRoZSBzcGVjaWZpZWQgaG9zdG5hbWUgY291bGQgbm90IGJlIGZv
dW5kLgorCitQQVNTIFNob3VsZCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY29uc29sZSAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1hc3luYy1l
cnJvci1sb2dnaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLWFz
eW5jLWVycm9yLWxvZ2dpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjc2Y2ZlNTA4MWRjZjI4MmI1OTQx
ZDBiMGY3MWIzNmEyNDU5ZTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvYmVhY29uL2JlYWNvbi1hc3luYy1lcnJvci1sb2dnaW5nLmh0bWwKQEAgLTAsMCArMSwxOCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
ICAgIGFzeW5jX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBsZXQgaW52YWxpZEhvc3QgPSAi
aHR0cDovL2ludmFsaWQubG9jYWxob3N0IjsKKyAgICAgICAgYXNzZXJ0X3RydWUobmF2aWdhdG9y
LnNlbmRCZWFjb24oaW52YWxpZEhvc3QsICd0ZXN0JyksICJzZW5kQmVhY29uIHNob3VsZCByZXR1
cm4gdHJ1ZSIpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dC5kb25lKCk7CisgICAgICAgIH0sIDUwMCk7CisgICAgfSwgIlNob3VsZCBsb2cgYW4gZXJyb3Ig
bWVzc2FnZSBpbiB0aGUgY29uc29sZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLXF1b3RhLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tcXVvdGEtZXhwZWN0
ZWQudHh0CmluZGV4IDEwYjE2MTUzOTAzODllOTE3N2RlNmFjNWFlNDY4MTMwMzQ1ODhlODIuLjQ0
MTU3YmZjMzMwOWQ1ZTNlYzg2NTNhYTMyNGY5NGU1NWRiNTFmOGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tcXVvdGEtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24tcXVvdGEtZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBSZWFjaGVkIG1heGltdW0gYW1v
dW50IG9mIHF1ZXVlZCBkYXRhIG9mIDY0S2IgZm9yIGtlZXBhbGl2ZSByZXF1ZXN0cwotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDUyOiBSZWFjaGVkIG1heGltdW0gYW1vdW50IG9mIHF1ZXVlZCBkYXRh
IG9mIDY0S2IgZm9yIGtlZXBhbGl2ZSByZXF1ZXN0cworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0
OiBCZWFjb24gQVBJIGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC8uIFJlYWNoZWQg
bWF4aW11bSBhbW91bnQgb2YgcXVldWVkIGRhdGEgb2YgNjRLYiBmb3Iga2VlcGFsaXZlIHJlcXVl
c3RzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTI6IEJlYWNvbiBBUEkgY2Fubm90IGxvYWQgaHR0
cDovL2xvY2FsaG9zdDo4ODAwLy4gUmVhY2hlZCBtYXhpbXVtIGFtb3VudCBvZiBxdWV1ZWQgZGF0
YSBvZiA2NEtiIGZvciBrZWVwYWxpdmUgcmVxdWVzdHMKIAogUEFTUyBCZWFjb24gd2l0aCBhIGJv
ZHkgYWJvdmUgdGhlIFF1b3RhIExpbWl0IHNob3VsZCBmYWlsLiAKIFBBU1MgTXVsdGlwbGUgQmVh
Y29ucyBRdW90YSBMaW1pdCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNv
bi9iZWFjb24tcXVvdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9iZWFjb24t
cXVvdGEuaHRtbAppbmRleCBhNmMzN2EzYjQyNGQxMWU3ZjRkYTM5MTIyYzMyNDRhZWZkOWFhYzc4
Li4zMGM5YTEwNWM5NDdjMTM4OTE2YjRiNDUwMGQ0MTViZDE0NmNjYTBiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vYmVhY29uLXF1b3RhLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvYmVhY29uL2JlYWNvbi1xdW90YS5odG1sCkBAIC00OSw3ICs0OSw3IEBA
CiAgICAgICAgIHZhciB0YXJnZXQgPSBSRVNPVVJDRVNfRElSICsgImJlYWNvbi1wcmVmbGlnaHQu
cHk/YWxsb3dDb3JzPTEmY21kPXB1dCZpZD0iICsgaWQ7CiAKICAgICAgICAgYXNzZXJ0X3RydWUo
bmF2aWdhdG9yLnNlbmRCZWFjb24odGFyZ2V0LCBjcmVhdGVQYXlsb2FkKGV4cGVjdGVkUXVvdGEp
KSwgIkJlYWNvbiB3aXRoIGEgYm9keSBhdCB0aGUgUXVvdGEgTGltaXQgc2hvdWxkIHN1Y2NlZWQu
Iik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShuYXZpZ2F0b3Iuc2VuZEJlYWNvbih0YXJnZXQsIGNy
ZWF0ZVBheWxvYWQoMSkpLCAiU2Vjb25kIGJlYWNvbiBzaG91bGQgbm90IGJlIHNlbnQgYmVjYXVz
ZSB3ZSByZWFjaGVkIHRoZSBxdW90YSIpOworICAgICAgICBhc3NlcnRfZmFsc2UobmF2aWdhdG9y
LnNlbmRCZWFjb24oIi8iLCBjcmVhdGVQYXlsb2FkKDEpKSwgIlNlY29uZCBiZWFjb24gc2hvdWxk
IG5vdCBiZSBzZW50IGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgcXVvdGEiKTsKICAgICAgICAgcmV0
dXJuIHdhaXRGb3JCZWFjb24oaWQpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShuYXZpZ2F0b3Iuc2VuZEJlYWNvbih0YXJnZXQsIGNyZWF0ZVBheWxvYWQoMSkpLCAi
QWxsb2NhdGVkIHF1b3RhIHNob3VsZCBiZSByZXR1cm5lZCBvbmNlIHRoZSBiZWFjb24gaXMgbm8g
bG9uZ2VyIGluIGZsaWdodCIpOwogICAgICAgICB9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>