<?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>175386</bug_id>
          
          <creation_ts>2017-08-09 08:50:22 -0700</creation_ts>
          <short_desc>[Beacon][NetworkSession] Support CORS-preflighting on redirects</short_desc>
          <delta_ts>2017-08-09 16:24:03 -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>WebKit2</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>
          
          <blocked>147885</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1336972</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 08:50:22 -0700</bug_when>
    <thetext>We should support with CORS-preflighting on redirects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336973</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-09 08:50:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/33801370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337011</commentid>
    <comment_count>2</comment_count>
      <attachid>317714</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 09:55:52 -0700</bug_when>
    <thetext>Created attachment 317714
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337041</commentid>
    <comment_count>3</comment_count>
      <attachid>317721</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 10:55:59 -0700</bug_when>
    <thetext>Created attachment 317721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337109</commentid>
    <comment_count>4</comment_count>
      <attachid>317733</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 13:39:54 -0700</bug_when>
    <thetext>Created attachment 317733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337110</commentid>
    <comment_count>5</comment_count>
      <attachid>317734</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 13:41:14 -0700</bug_when>
    <thetext>Created attachment 317734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337122</commentid>
    <comment_count>6</comment_count>
      <attachid>317734</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-09 14:08:39 -0700</bug_when>
    <thetext>Comment on attachment 317734
Patch

The only question is whether this is fine to do so without going through CSP or content blocker.
Given this is a replacement over synchronous XHR, and that shipping this might allow us to remove synchronous XHR, this looks like an improvement to me.

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

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:46
&gt; +    , m_sameOriginRequest(securityOrigin().canRequest(m_parameters.request.url()))

m_isSameOriginRequest might be a better name.

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:61
&gt; +        m_redirectHandler({ });

Why do we need to do that?

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:75
&gt; +        loadParameters.request = request;

Aren&apos;t we creating two ResourceRequest, while we should only create one?

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:76
&gt; +        m_task = NetworkDataTask::create(*networkSession, *this, loadParameters);

And we are not moving loadParameters, which probably means that NetworkDataTask is creating its own copy of ResourceRequest.
Some refactoring might be useful there?

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:102
&gt; +    // Use a unique for subsequent loads if needed.

Use a unique origin?

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:106
&gt; +        m_origin = SecurityOrigin::createUnique();

You could add a check so as to not create a new origin if m_origin is not unique.

&gt; LayoutTests/http/wpt/beacon/cors/cors-preflight-redirect-failure.html:21
&gt; +        response.text().then(body =&gt; {

You can just do &quot;return response.json()&quot; here.

&gt; LayoutTests/http/wpt/beacon/cors/cors-preflight-redirect-failure.html:25
&gt; +    }), 1000);

Cannot we use the new polling mechanism that landed in the other patch?

&gt; LayoutTests/http/wpt/beacon/cors/cors-preflight-redirect-failure.html:40
&gt; +      result = JSON.parse(json);

No need for JSON.parse if using json() above.

&gt; LayoutTests/http/wpt/beacon/cors/cors-preflight-redirect-from-crossorigin-to-sameorigin.html:25
&gt; +    }), 1000);

Ditto, or put in common some code of these two tests/merge them into one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337135</commentid>
    <comment_count>7</comment_count>
      <attachid>317734</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 14:29:18 -0700</bug_when>
    <thetext>Comment on attachment 317734
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:61
&gt;&gt; +        m_redirectHandler({ });
&gt; 
&gt; Why do we need to do that?

Yes, otherwise it can causes leaks. Andreas had to do the same in NetworkLoad recently. See Bug 175179.

&gt;&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:76
&gt;&gt; +        m_task = NetworkDataTask::create(*networkSession, *this, loadParameters);
&gt; 
&gt; And we are not moving loadParameters, which probably means that NetworkDataTask is creating its own copy of ResourceRequest.
&gt; Some refactoring might be useful there?

I&apos;ll move loadParameters in.

&gt;&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:102
&gt;&gt; +    // Use a unique for subsequent loads if needed.
&gt; 
&gt; Use a unique origin?

Ok.

&gt;&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:106
&gt;&gt; +        m_origin = SecurityOrigin::createUnique();
&gt; 
&gt; You could add a check so as to not create a new origin if m_origin is not unique.

Ok.

&gt;&gt; LayoutTests/http/wpt/beacon/cors/cors-preflight-redirect-failure.html:21
&gt;&gt; +        response.text().then(body =&gt; {
&gt; 
&gt; You can just do &quot;return response.json()&quot; here.

Ok.

&gt;&gt; LayoutTests/http/wpt/beacon/cors/cors-preflight-redirect-failure.html:25
&gt;&gt; +    }), 1000);
&gt; 
&gt; Cannot we use the new polling mechanism that landed in the other patch?

Tests using it are currently flaky so I don&apos;t want to use it until I understand why those tests are flaky.

&gt;&gt; LayoutTests/http/wpt/beacon/cors/cors-preflight-redirect-failure.html:40
&gt;&gt; +      result = JSON.parse(json);
&gt; 
&gt; No need for JSON.parse if using json() above.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337137</commentid>
    <comment_count>8</comment_count>
      <attachid>317743</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 14:33:13 -0700</bug_when>
    <thetext>Created attachment 317743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337197</commentid>
    <comment_count>9</comment_count>
      <attachid>317743</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-09 16:24:02 -0700</bug_when>
    <thetext>Comment on attachment 317743
Patch

Clearing flags on attachment: 317743

Committed r220497: &lt;http://trac.webkit.org/changeset/220497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337198</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-09 16:24:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317714</attachid>
            <date>2017-08-09 09:55:52 -0700</date>
            <delta_ts>2017-08-09 10:55:57 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175386_beacon_cors_redirect_wip.patch</filename>
            <type>text/plain</type>
            <size>3217</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMmRmMDE0Y2U1
NGMuLjY0ZmVjZWQ0NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcApAQCAtNTUsNiArNTUsOSBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiBQaW5nTG9hZDo6flBpbmdMb2FkKCkKIHsK
KyAgICBpZiAobV9yZWRpcmVjdEhhbmRsZXIpCisgICAgICAgIG1fcmVkaXJlY3RIYW5kbGVyKHsg
fSk7CisKICAgICBpZiAobV90YXNrKSB7CiAgICAgICAgIEFTU0VSVChtX3Rhc2stPmNsaWVudCgp
ID09IHRoaXMpOwogICAgICAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7CkBAIC03NCwxMCArNzcs
MTggQEAgdm9pZCBQaW5nTG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCiAKIHZvaWQgUGluZ0xvYWQ6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uIik7Ci0gICAgLy8gRklYTUU6IERvIGEgQ09SUyBwcmVmbGlnaHQgaWYgbmVjZXNz
YXJ5LgorICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uIC0gc2hvdWxkRm9sbG93UmVkaXJlY3RzPyAlZCIsIG1fcGFyYW1ldGVycy5zaG91bGRGb2xs
b3dSZWRpcmVjdHMpOworICAgIGlmICghbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0
cykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5zdXJlIHRoZSBudW1iZXIgb2YgcmVkaXJl
Y3RzIGRvZXMgbm90IGV4Y2VlZCAyMC4KLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX3BhcmFtZXRl
cnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzID8gcmVxdWVzdCA6IFJlc291cmNlUmVxdWVzdCgpKTsK
KyAgICBpZiAobmVlZHNDT1JTUHJlZmxpZ2h0KHJlcXVlc3QpKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gUmVkaXJlY3QgcmVx
dWlyZXMgYSBDT1JTIHByZWZsaWdodCIpOworICAgICAgICBtX3JlZGlyZWN0SGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBkb0NPUlNQcmVmbGlnaHQocmVxdWVz
dCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlcXVlc3QpOwogfQog
CiB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTE1MiwxMSArMTYzLDE0IEBAIHZvaWQgUGluZ0xvYWQ6OmRvQ09SU1ByZWZsaWdodChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIG1fcGFyYW1ldGVycy5zZXNz
aW9uSUQsCiAgICAgICAgIG1fcGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzCiAgICAg
fTsKLSAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI+KFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzXShOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdCByZXN1bHQpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNzOiAlZCIsIHJl
c3VsdCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6U3VjY2Vzcyk7Cisg
ICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyPihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcmVxdWVzdF0oTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpSZXN1bHQgcmVzdWx0KSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRvQ09SU1ByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQg
Zm9yUmVkaXJlY3Q/ICVkIiwgcmVzdWx0ID09IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6
UmVzdWx0OjpTdWNjZXNzLCAhIW1fcmVkaXJlY3RIYW5kbGVyKTsKICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6U3VjY2VzcykgewogICAg
ICAgICAgICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG51bGxwdHI7Ci0gICAgICAgICAgICBz
dGFydE5ldHdvcmtMb2FkKCk7CisgICAgICAgICAgICBpZiAoYXV0byByZWRpcmVjdEhhbmRsZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fcmVkaXJlY3RIYW5kbGVyLCBudWxscHRyKSkKKyAgICAgICAgICAg
ICAgICByZWRpcmVjdEhhbmRsZXIocmVxdWVzdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc3RhcnROZXR3b3JrTG9hZCgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGRlbGV0ZSB0aGlzOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCmluZGV4IDg4NzJkMmY0YmMyLi5hMTU2YjM2NmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRU
aW1lcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPiBt
X2NvcnNQcmVmbGlnaHRDaGVja2VyOworICAgIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgbV9y
ZWRpcmVjdEhhbmRsZXI7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317721</attachid>
            <date>2017-08-09 10:55:59 -0700</date>
            <delta_ts>2017-08-09 13:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175386-20170809105558.patch</filename>
            <type>text/plain</type>
            <size>11867</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhN2FjNjM0ZDMwNTdmMzlh
MTVkYzAxZDk3ZTJlNzQ3MTk1N2RkMjUuLmZlYWQ3ZGZlMzg0YjliNGIxMzQwNTZlY2M4OTg3OWY2
ZTBkMjc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDgtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXVtOZXR3b3JrU2Vzc2lv
bl0gU3VwcG9ydCB3aXRoIENPUlMtcHJlZmxpZ2h0aW5nIG9uIHJlZGlyZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzg2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMzgwMTM3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCB0byBCZWFjb24gZm9yIGRvaW5nIENPUlMtcHJl
ZmxpZ2h0aW5nIHVwb24gcmVkaXJlY3QgdG8gYSBkaWZmZXJlbnQKKyAgICAgICAgZG9tYWluLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQaW5nTG9hZDo6flBpbmdMb2FkKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6
OmRvQ09SU1ByZWZsaWdodCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoK
KwogMjAxNy0wOC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIwMzkzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmgKaW5kZXggNDQ2YjY3ZGNhYzFlZjQ0YjU5NmNiODYwNTU2MmNjMTA2NDhkMjYyYi4uNjUyMmQ5
ODI2ODQwY2JlODQxM2RjMzdjM2RiZmIzZDgzMWFmMjU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
CkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlcihQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB+TmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyKCk7CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMub3JpZ2luYWxS
ZXF1ZXN0OyB9CiAKICAgICB2b2lkIHN0YXJ0UHJlZmxpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMmRmMDE0Y2U1NGNmMjNkYTk5NmViZDkx
YTExNjJlMWU0MzczYWNhNy4uYzQxY2U4NWQwYTlmY2VmZjJlNzZhMmJjNzYyZDIwNWZhNWFhMjU2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTU1LDYg
KzU1LDkgQEAgUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIAogUGluZ0xvYWQ6On5QaW5nTG9hZCgpCiB7CisgICAgaWYgKG1fcmVk
aXJlY3RIYW5kbGVyKQorICAgICAgICBtX3JlZGlyZWN0SGFuZGxlcih7IH0pOworCiAgICAgaWYg
KG1fdGFzaykgewogICAgICAgICBBU1NFUlQobV90YXNrLT5jbGllbnQoKSA9PSB0aGlzKTsKICAg
ICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOwpAQCAtNzQsMTAgKzc3LDE4IEBAIHZvaWQgUGlu
Z0xvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQogCiB2b2lkIFBpbmdMb2FkOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiIpOwot
ICAgIC8vIEZJWE1FOiBEbyBhIENPUlMgcHJlZmxpZ2h0IGlmIG5lY2Vzc2FyeS4KKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIHNob3VsZEZv
bGxvd1JlZGlyZWN0cz8gJWQiLCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKTsK
KyAgICBpZiAoIW1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGVuc3VyZSB0aGUgbnVtYmVyIG9mIHJlZGlyZWN0cyBkb2VzIG5vdCBl
eGNlZWQgMjAuCi0gICAgY29tcGxldGlvbkhhbmRsZXIobV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxv
d1JlZGlyZWN0cyA/IHJlcXVlc3QgOiBSZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgaWYgKG5lZWRz
Q09SU1ByZWZsaWdodChyZXF1ZXN0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHJlcXVpcmVzIGEgQ09SUyBw
cmVmbGlnaHQiKTsKKyAgICAgICAgbV9yZWRpcmVjdEhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICAgICAgZG9DT1JTUHJlZmxpZ2h0KHJlcXVlc3QpOworICAgIH0gZWxz
ZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXF1ZXN0KTsKIH0KIAogdm9pZCBQaW5nTG9h
ZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC04Nyw5ICs5
OCw5IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZv
aWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3Bv
bnNlTmV0d29ya1Nlc3Npb24iKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbiAtIGh0dHBTdGF0dXNDb2RlOiAlZCIsIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6
UG9saWN5SWdub3JlKTsKICAgICBkZWxldGUgdGhpczsKIH0KQEAgLTE1MywxMCArMTY0LDEzIEBA
IHZvaWQgUGluZ0xvYWQ6OmRvQ09SU1ByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiAgICAgICAgIG1fcGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzCiAgICAg
fTsKICAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI+KFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzXShOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdCByZXN1bHQpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNzOiAlZCIsIHJl
c3VsdCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6U3VjY2Vzcyk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRvQ09SU1ByZWZsaWdodCBjb21wbGV0ZSwg
c3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgcmVzdWx0ID09IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6UmVzdWx0OjpTdWNjZXNzLCAhIW1fcmVkaXJlY3RIYW5kbGVyKTsKKyAgICAg
ICAgYXV0byBjb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IFdURk1vdmUobV9jb3JzUHJlZmxpZ2h0Q2hl
Y2tlcik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpSZXN1bHQ6OlN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIg
PSBudWxscHRyOwotICAgICAgICAgICAgc3RhcnROZXR3b3JrTG9hZCgpOworICAgICAgICAgICAg
aWYgKGF1dG8gcmVkaXJlY3RIYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX3JlZGlyZWN0SGFuZGxl
ciwgbnVsbHB0cikpCisgICAgICAgICAgICAgICAgcmVkaXJlY3RIYW5kbGVyKGNvcnNQcmVmbGln
aHRDaGVja2VyLT5vcmlnaW5hbFJlcXVlc3QoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc3RhcnROZXR3b3JrTG9hZCgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGRlbGV0ZSB0aGlzOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCmluZGV4IDg4NzJkMmY0YmMyNTZhZDBjY2M4NTJkMGNiOTJmMWI4NDFiNzhiYzQuLmExNTZi
MzY2ZWY3MGJkYjIzYzI1YWFjZDBjMTUyZDg5ZWM5MTA0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0
VGltZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4g
bV9jb3JzUHJlZmxpZ2h0Q2hlY2tlcjsKKyAgICBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIG1f
cmVkaXJlY3RIYW5kbGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA2YjJiMmI0YTQwZmUzNzhjYzhmMWI4
N2MxM2RmOGRkNTQ5MWZmY2UuLjc0MGNlYWMyYzk4NjIxNzBlMWU0N2FlZTEwMjMxMDVkOTMyZTRi
OTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtCZWFjb25dW05ldHdvcmtTZXNzaW9uXSBTdXBwb3J0
IHdpdGggQ09SUy1wcmVmbGlnaHRpbmcgb24gcmVkaXJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzODYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMzODAxMzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAvd3B0L2Jl
YWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRp
cmVjdC1mYWlsdXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb3Jz
L2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LXN1Y2Nlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNj
ZXNzLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA4LTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdQRSBnYXJkZW5pbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRp
cmVjdC1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9j
b3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjExOTMyZjcyZjZiMDY5OWE1NGM5ZTdlZDkyZjJiN2E2Yzk0OGNkZDgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1y
ZWRpcmVjdC1mYWlsdXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDT1JT
IHByZWZsaWdodCBmYWlsdXJlIHRlc3QgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZh
aWx1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTA1N2M5ZWM3NDI5ZTQxYzU4MDFkMjBlMTVhMDk1Y2Yw
OGM4NDI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nv
cnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZmFpbHVyZS5odG1sCkBAIC0wLDAgKzEsNTMgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKyAgICA8dGl0bGU+U2VuZEJlYWNvbiBDT1JTIHByZWZsaWdodCBvbiByZWRpcmVjdCB0
ZXN0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+
PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24v
dXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWlu
Zm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJFU09VUkNFU19ESVIgPSAi
L1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisKK2Z1bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwg
aWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJiZWFjb24tcHJlZmxpZ2h0
LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgZmV0Y2go
Y2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNwb25zZS50ZXh0KCkudGhl
bihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJvZHkpOworICAgICAgICB9KTsKKyAgICAg
IH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxp
Z2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAgdmFyIHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5m
bygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09VUkNFU19ESVI7CisgIHZhciBpZCA9IHNlbGYu
dG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSArICJi
ZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0wJmNtZD1wdXQmaWQ9IiArIGlkKTsKKworICAv
LyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgbWFpbnRhaW4g
dGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVybCA9ICIvY29tbW9uL3JlZGlyZWN0LnB5P3N0
YXR1cz0zMDcmbG9jYXRpb249IiArIHRhcmdldDsKKworICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dGVzdCkgeworICAgIGFzc2VydF90cnVlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRlc3RVcmwsIHdo
YXQpLCAiU2VuZEJlYWNvbiBTdWNjZWVkZWQiKTsKKyAgICByZXR1cm4gcG9sbFJlc3VsdCh0ZXN0
LCBpZCkgLnRoZW4oanNvbiA9PiB7CisgICAgICByZXN1bHQgPSBKU09OLnBhcnNlKGpzb24pOwor
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAxLCAiUmVjZWl2ZWQgcHJl
ZmxpZ2h0IikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHRfcmVmZXJlcidd
LCBkb2N1bWVudC5VUkwsICJQcmVmbGlnaHQgcmVmZXJlciBoZWFkZXIiKQorICAgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZXF1ZXN0ZWRfbWV0aG9kJ10sICJQT1NUIiwgIlBy
ZWZsaWdodCByZXF1ZXN0ZWQgbWV0aG9kIikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0Wydi
ZWFjb24nXSwgMCwgIkRpZCBub3QgcmVjZWl2ZSBiZWFjb24iKQorICAgIH0pOworICB9LCAiQ09S
UyBwcmVmbGlnaHQgZmFpbHVyZSB0ZXN0Iik7Cit9CisKK2xldCBibG9iID0gbmV3IEJsb2IoWyIx
MjMiXSwge3R5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSk7Cit0ZXN0Q09SU1ByZWZs
aWdodFJlZGlyZWN0U3VjY2VzcyhibG9iKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1w
cmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNTQ0OTgyNjlmNWQ0ZTBjOTQ1NGYyMGU4MTE1OGVkOTk1ZmVkNTkz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29y
cy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vzcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgQ09SUyBwcmVmbGlnaHQgc3VjY2VzcyB0ZXN0IAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNj
ZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdo
dC1yZWRpcmVjdC1zdWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjliNzVkZDhkMjQzM2I0YTIyNjky
YjM2MjNlNmM1Y2M2YmNkNmM5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LXN1Y2Nlc3MuaHRtbApAQCAt
MCwwICsxLDUzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlNlbmRCZWFjb24gQ09SUyBwcmVmbGlnaHQg
b24gcmVkaXJlY3QgdGVzdDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQg
c3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2NvbW1v
bi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KK3ZhciBSRVNP
VVJDRVNfRElSID0gIi9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy8iOworCitmdW5jdGlvbiBwb2xs
UmVzdWx0KHRlc3QsIGlkKSB7CisgIHZhciBjaGVja1VybCA9IFJFU09VUkNFU19ESVIgKyAiYmVh
Y29uLXByZWZsaWdodC5weT9jbWQ9Z2V0JmlkPSIgKyBpZDsKKworICByZXR1cm4gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB7CisgICAgc3RlcF90aW1lb3V0KHRlc3Quc3RlcF9mdW5jKCgpID0+IHsK
KyAgICAgIGZldGNoKGNoZWNrVXJsKS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgcmVzcG9u
c2UudGV4dCgpLnRoZW4oYm9keSA9PiB7CisgICAgICAgICAgcmVzb2x2ZShib2R5KTsKKyAgICAg
ICAgfSk7CisgICAgICB9KTsKKyAgICB9KSwgMTAwMCk7CisgIH0pOworfQorCitmdW5jdGlvbiB0
ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2Vzcyh3aGF0KSB7CisgIHZhciB0ZXN0QmFzZSA9
IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBSRVNPVVJDRVNfRElSOworICB2
YXIgaWQgPSBzZWxmLnRva2VuKCk7CisgIHZhciB0YXJnZXQgPSBlbmNvZGVVUklDb21wb25lbnQo
dGVzdEJhc2UgKyAiYmVhY29uLXByZWZsaWdodC5weT9hbGxvd0NvcnM9MSZjbWQ9cHV0JmlkPSIg
KyBpZCk7CisKKyAgLy8gMzA3ICYgMzA4IHJlZGlyZWN0aW9ucyBhcmUgdGhlIG9ubHkgb25lcyB0
aGF0IG1haW50YWluIHRoZSBQT1NUIG1ldGhvZC4KKyAgdmFyIHRlc3RVcmwgPSAiL2NvbW1vbi9y
ZWRpcmVjdC5weT9zdGF0dXM9MzA3JmxvY2F0aW9uPSIgKyB0YXJnZXQ7CisKKyAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICBhc3NlcnRfdHJ1ZShuYXZpZ2F0b3Iuc2VuZEJlYWNv
bih0ZXN0VXJsLCB3aGF0KSwgIlNlbmRCZWFjb24gU3VjY2VlZGVkIik7CisgICAgcmV0dXJuIHBv
bGxSZXN1bHQodGVzdCwgaWQpIC50aGVuKGpzb24gPT4geworICAgICAgcmVzdWx0ID0gSlNPTi5w
YXJzZShqc29uKTsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHQnXSwgMSwg
IlJlY2VpdmVkIHByZWZsaWdodCIpCisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxp
Z2h0X3JlZmVyZXInXSwgZG9jdW1lbnQuVVJMLCAiUHJlZmxpZ2h0IHJlZmVyZXIgaGVhZGVyIikK
KyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHRfcmVxdWVzdGVkX21ldGhvZCdd
LCAiUE9TVCIsICJQcmVmbGlnaHQgcmVxdWVzdGVkIG1ldGhvZCIpCisgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdFsnYmVhY29uJ10sIDEsICJSZWNlaXZlZCBiZWFjb24iKQorICAgIH0pOworICB9
LCAiQ09SUyBwcmVmbGlnaHQgc3VjY2VzcyB0ZXN0Iik7Cit9CisKK2xldCBibG9iID0gbmV3IEJs
b2IoWyIxMjMiXSwge3R5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSk7Cit0ZXN0Q09S
U1ByZWZsaWdodFJlZGlyZWN0U3VjY2VzcyhibG9iKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317733</attachid>
            <date>2017-08-09 13:39:54 -0700</date>
            <delta_ts>2017-08-09 13:40:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175386-20170809133953.patch</filename>
            <type>text/plain</type>
            <size>26082</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1NGNlMTcxNmYyMDZj
NDAwNzAyYzJlZWIwYzdkNTVlYmNkNDhiNC4uOTE0N2E0MTJkOTA1NTQ3NDNiMGM5NjQ3N2RiMDdk
NzExZWIyYTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl1bTmV0d29ya1Nl
c3Npb25dIFN1cHBvcnQgd2l0aCBDT1JTLXByZWZsaWdodGluZyBvbiByZWRpcmVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM4NgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzM4MDEzNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxlIG9mIFdlYkNvcmUgc3ltYm9scyBz
byBJIGNhbiB1c2UgdGhlbSBpbiBXZWJLaXQyLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9i
ZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20t
Y3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC9i
ZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLmh0bWwKKworICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luLmg6CisKIDIwMTctMDgtMDkgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjb3BpZXMgb2YgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjptX3Nlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhN2FjNjM0ZDMwNTdmMzlhMTVk
YzAxZDk3ZTJlNzQ3MTk1N2RkMjUuLmFlOWY3M2RiOGQ0NGRkMDA3ZmMxMmZlYzJmNzBhNWFmYzYz
MzdhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMDgtMDkgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXVtOZXR3b3JrU2Vzc2lvbl0g
U3VwcG9ydCB3aXRoIENPUlMtcHJlZmxpZ2h0aW5nIG9uIHJlZGlyZWN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzg2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zMzgwMTM3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgc3VwcG9ydCB0byBCZWFjb24gZm9yIGRvaW5nIENPUlMtcHJlZmxp
Z2h0aW5nIHVwb24gcmVkaXJlY3QgdG8gYSBkaWZmZXJlbnQKKyAgICAgICAgZG9tYWluLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
aW5nTG9hZDo6UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6flBpbmdMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6UGluZ0xvYWQ6OnNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGluZ0xvYWQ6Om5lZWRzQ09SU1ByZWZsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBpbmdMb2FkOjpkb0NPUlNQcmVmbGlnaHQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmg6CisKIDIwMTctMDgtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMDM5My4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRl
eCA1ZTg3YjFmZTkxMGE1MzE0MWUxZDExMjcwNGVmNjRkZjAwODY3OTdhLi45NGYyMjMwNDNiNDEz
MWJiNTU3MDg2YjA3ZTZjNjFmNmI3M2U5ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFVS
TDsKIGJvb2wgaXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKIGJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1w
bGVSZXF1ZXN0TWV0aG9kV2hpdGVsaXN0KGNvbnN0IFN0cmluZyYpOwogCi12b2lkIHVwZGF0ZVJl
cXVlc3RGb3JBY2Nlc3NDb250cm9sKFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luJiwg
U3RvcmVkQ3JlZGVudGlhbHMpOworV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZXF1ZXN0Rm9y
QWNjZXNzQ29udHJvbChSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdpbiYsIFN0b3JlZENy
ZWRlbnRpYWxzKTsKIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3ND
b250cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9y
aWdpbiYsIGNvbnN0IFN0cmluZyYpOwogCiBib29sIGlzVmFsaWRDcm9zc09yaWdpblJlZGlyZWN0
aW9uVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4
IDBlYWQ0YmM4Yjg4YzdhZDIwN2U3ZGY4YzhlMGMyNWM4ZjhkZmUxM2MuLjYzYmVmNDhkNDM0MzA1
Mjk2YzVlODRkNmNkOTQ1NTRhZGE4OGNjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgVVJMJik7Ci0gICAg
c3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlVW5pcXVlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlVW5pcXVlKCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlP
cmlnaW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3Qs
IHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXgg
NDQ2YjY3ZGNhYzFlZjQ0YjU5NmNiODYwNTU2MmNjMTA2NDhkMjYyYi4uNjUyMmQ5ODI2ODQwY2Jl
ODQxM2RjMzdjM2RiZmIzZDgzMWFmMjU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC01NCw2
ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihQYXJh
bWV0ZXJzJiYsIENvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB+TmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyKCk7CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0OyB9
CiAKICAgICB2b2lkIHN0YXJ0UHJlZmxpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMmRmMDE0Y2U1NGNmMjNkYTk5NmViZDkxYTExNjJlMWU0
MzczYWNhNy4uNWJhZWJmYjBkNDgwMjBkZDA5YWU4ZjhmOWI3NWFmZjE0OGY1NWE0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFBpbmdMb2FkOjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKIApAQCAtNDIsNiArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFBpbmdMb2FkOjpQaW5nTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAgICAgOiBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKICAg
ICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKQor
ICAgICwgbV9zYW1lT3JpZ2luUmVxdWVzdChzZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QobV9w
YXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKQogewogICAgIC8vIElmIHRoZSBzZXJ2ZXIgbmV2ZXIg
cmVzcG9uZHMsIHRoaXMgb2JqZWN0IHdpbGwgaGFuZyBhcm91bmQgZm9yZXZlci4KICAgICAvLyBT
ZXQgYSB2ZXJ5IGdlbmVyb3VzIHRpbWVvdXQsIGp1c3QgaW4gY2FzZS4KQEAgLTUwLDExICs1Miwx
NCBAQCBQaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgIGlmIChuZWVkc0NPUlNQcmVmbGlnaHQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QpKQogICAgICAgICBkb0NPUlNQcmVmbGlnaHQobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOwogICAg
IGVsc2UKLSAgICAgICAgc3RhcnROZXR3b3JrTG9hZCgpOworICAgICAgICBsb2FkUmVxdWVzdCht
X3BhcmFtZXRlcnMucmVxdWVzdCk7CiB9CiAKIFBpbmdMb2FkOjp+UGluZ0xvYWQoKQogeworICAg
IGlmIChtX3JlZGlyZWN0SGFuZGxlcikKKyAgICAgICAgbV9yZWRpcmVjdEhhbmRsZXIoeyB9KTsK
KwogICAgIGlmIChtX3Rhc2spIHsKICAgICAgICAgQVNTRVJUKG1fdGFzay0+Y2xpZW50KCkgPT0g
dGhpcyk7CiAgICAgICAgIG1fdGFzay0+Y2xlYXJDbGllbnQoKTsKQEAgLTYyLDIyICs2Nyw1MSBA
QCBQaW5nTG9hZDo6flBpbmdMb2FkKCkKICAgICB9CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OnN0YXJ0
TmV0d29ya0xvYWQoKQordm9pZCBQaW5nTG9hZDo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0
d29ya0xvYWQiKTsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tl
cjo6bmV0d29ya1Nlc3Npb24obV9wYXJhbWV0ZXJzLnNlc3Npb25JRCkpIHsKLSAgICAgICAgbV90
YXNrID0gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoKm5ldHdvcmtTZXNzaW9uLCAqdGhpcywgbV9w
YXJhbWV0ZXJzKTsKKyAgICAgICAgYXV0byBsb2FkUGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsK
KyAgICAgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIG1fdGFz
ayA9IE5ldHdvcmtEYXRhVGFzazo6Y3JlYXRlKCpuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIGxvYWRQ
YXJhbWV0ZXJzKTsKICAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKICAgICB9IGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorU2Vj
dXJpdHlPcmlnaW4mIFBpbmdMb2FkOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fb3JpZ2luID8gKm1fb3JpZ2luIDogKm1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW47Cit9
CisKK3ZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24iKTsKLSAgICAvLyBG
SVhNRTogRG8gYSBDT1JTIHByZWZsaWdodCBpZiBuZWNlc3NhcnkuCisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBzaG91bGRGb2xsb3dSZWRp
cmVjdHM/ICVkIiwgbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CisgICAgaWYg
KCFtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IERv
IENTUCBjaGVjay4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuc3VyZSB0aGUgbnVtYmVyIG9m
IHJlZGlyZWN0cyBkb2VzIG5vdCBleGNlZWQgMjAuCi0gICAgY29tcGxldGlvbkhhbmRsZXIobV9w
YXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyA/IHJlcXVlc3QgOiBSZXNvdXJjZVJlcXVl
c3QoKSk7CisgICAgaWYgKCFuZWVkc0NPUlNQcmVmbGlnaHQocmVxdWVzdCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBSZWRp
cmVjdCByZXF1aXJlcyBhIENPUlMgcHJlZmxpZ2h0Iik7CisKKyAgICAvLyBVc2UgYSB1bmlxdWUg
Zm9yIHN1YnNlcXVlbnQgbG9hZHMgaWYgbmVlZGVkLgorICAgIC8vIGh0dHBzOi8vZmV0Y2guc3Bl
Yy53aGF0d2cub3JnLyNjb25jZXB0LWh0dHAtcmVkaXJlY3QtZmV0Y2ggKFN0ZXAgMTApLgorICAg
IEFTU0VSVChtX3BhcmFtZXRlcnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpOwor
ICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHJlZGlyZWN0UmVzcG9uc2UudXJs
KCkpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwocmVkaXJlY3RSZXNwb25zZS51cmwo
KSwgcmVxdWVzdC51cmwoKSkpCisgICAgICAgIG1fb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZVVuaXF1ZSgpOworCisgICAgbV9zYW1lT3JpZ2luUmVxdWVzdCA9IGZhbHNlOworICAgIG1f
cmVkaXJlY3RIYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICAvLyBM
ZXQncyBmZXRjaCB0aGUgcmVxdWVzdCB3aXRoIHRoZSBvcmlnaW5hbCBoZWFkZXJzIChlcXVpdmFs
ZW50IHRvIHJlcXVlc3QgY2xvbmluZyBzcGVjaWZpZWQgYnkgZmV0Y2ggYWxnb3JpdGhtKS4KKyAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMobV9wYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cEhl
YWRlckZpZWxkcygpKTsKKworICAgIGRvQ09SU1ByZWZsaWdodChyZXF1ZXN0KTsKIH0KIAogdm9p
ZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC04Nyw5ICsxMjEsOSBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcAogICAgIGRlbGV0ZSB0aGlz
OwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9u
KFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uIik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24gLSBodHRwU3RhdHVzQ29kZTogJWQi
LCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xp
Y3lBY3Rpb246OlBvbGljeUlnbm9yZSk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CkBAIC0xMzMsMzAg
KzE2NywzMyBAQCB2b2lkIFBpbmdMb2FkOjp0aW1lb3V0VGltZXJGaXJlZCgpCiAKIGJvb2wgUGlu
Z0xvYWQ6Om5lZWRzQ09SU1ByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fcGFyYW1ldGVycy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9k
ZTo6Q29ycykgewotICAgICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7Ci0g
ICAgICAgIHJldHVybiAhbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+Y2FuUmVxdWVzdChyZXF1
ZXN0LnVybCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3BhcmFtZXRl
cnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuICFtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8ICFzZWN1cml0eU9yaWdp
bigpLmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmRvQ09S
U1ByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0Iik7CiAgICAgQVNTRVJUKCFtX2NvcnNQ
cmVmbGlnaHRDaGVja2VyKTsKLSAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7
CiAKICAgICBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlBhcmFtZXRlcnMgcGFyYW1ldGVy
cyA9IHsKICAgICAgICAgcmVxdWVzdCwKLSAgICAgICAgKm1fcGFyYW1ldGVycy5zb3VyY2VPcmln
aW4sCisgICAgICAgIHNlY3VyaXR5T3JpZ2luKCksCiAgICAgICAgIG1fcGFyYW1ldGVycy5zZXNz
aW9uSUQsCiAgICAgICAgIG1fcGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzCiAgICAg
fTsKICAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI+KFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzXShOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdCByZXN1bHQpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNzOiAlZCIsIHJl
c3VsdCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6U3VjY2Vzcyk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRvQ09SU1ByZWZsaWdodCBjb21wbGV0ZSwg
c3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgcmVzdWx0ID09IE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6UmVzdWx0OjpTdWNjZXNzLCAhIW1fcmVkaXJlY3RIYW5kbGVyKTsKKyAgICAg
ICAgYXV0byBjb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IFdURk1vdmUobV9jb3JzUHJlZmxpZ2h0Q2hl
Y2tlcik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpSZXN1bHQ6OlN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIg
PSBudWxscHRyOwotICAgICAgICAgICAgc3RhcnROZXR3b3JrTG9hZCgpOworICAgICAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0IGFjdHVhbFJlcXVlc3QgPSBjb3JzUHJlZmxpZ2h0Q2hlY2tlci0+b3Jp
Z2luYWxSZXF1ZXN0KCk7CisgICAgICAgICAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJv
bChhY3R1YWxSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbigpLCBtX3BhcmFtZXRlcnMuYWxsb3dTdG9y
ZWRDcmVkZW50aWFscyk7CisgICAgICAgICAgICBpZiAoYXV0byByZWRpcmVjdEhhbmRsZXIgPSBz
dGQ6OmV4Y2hhbmdlKG1fcmVkaXJlY3RIYW5kbGVyLCBudWxscHRyKSkKKyAgICAgICAgICAgICAg
ICByZWRpcmVjdEhhbmRsZXIoYWN0dWFsUmVxdWVzdCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbG9hZFJlcXVlc3QoYWN0dWFsUmVxdWVzdCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmgKaW5kZXggODg3MmQyZjRiYzI1NmFkMGNjYzg1MmQwY2I5MmYxYjg0MWI3
OGJjNC4uZWIxY2UwNjVkMTdhMGU0MGM3NjAyZGYzMmY4OTJlYzNmMmRiMmEyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTEsMTQgKzUxLDE5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjYW5ub3RTaG93VVJMKCkgZmluYWw7CiAgICAgdm9pZCB0aW1lb3V0VGlt
ZXJGaXJlZCgpOwogCi0gICAgdm9pZCBzdGFydE5ldHdvcmtMb2FkKCk7CisgICAgdm9pZCBsb2Fk
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIG5lZWRz
Q09SU1ByZWZsaWdodChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAg
ICB2b2lkIGRvQ09SU1ByZWZsaWdodChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
KworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0Owog
ICAgIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAg
ICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6VGltZXIgbV90
aW1lb3V0VGltZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlcj4gbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+IG1fb3JpZ2luOworICAgIGJvb2wgbV9zYW1lT3JpZ2luUmVxdWVzdDsKKyAgICBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIG1fcmVkaXJlY3RIYW5kbGVyOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDA2YjJiMmI0YTQwZmUzNzhjYzhmMWI4N2MxM2RmOGRkNTQ5MWZmY2UuLjYxYTYwYjFjMTUx
MTMwZTA5ZDcxYmYzY2FmZjNlN2IwZGI5MWE2MTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
Ny0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtCZWFj
b25dW05ldHdvcmtTZXNzaW9uXSBTdXBwb3J0IHdpdGggQ09SUy1wcmVmbGlnaHRpbmcgb24gcmVk
aXJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUzODYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzODAxMzcwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFn
ZS4KKworICAgICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGly
ZWN0LWZhaWx1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFj
b24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20t
Y3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3Nv
cmlnaW4tdG8tc2FtZW9yaWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFj
b24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJl
Y3Qtc3VjY2Vzcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vcmVzb3Vy
Y2VzL2JlYWNvbi1wcmVmbGlnaHQucHk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBodHRw
L3dwdC9iZWFjb24vcmVzb3VyY2VzL3JlZGlyZWN0LnB5OiBBZGRlZC4KKyAgICAgICAgKG1haW4p
OgorCiAyMDE3LTA4LTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIFdQRSBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxp
Z2h0LXJlZGlyZWN0LWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExOTMyZjcyZjZi
MDY5OWE1NGM5ZTdlZDkyZjJiN2E2Yzk0OGNkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDT1JTIHByZWZsaWdodCBmYWls
dXJlIHRlc3QgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3Jz
L2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MDllZmEwMWI2NzA2ZjBkMDlkODg4ODAxZDQ1MGIxMGMwNWI1MTZiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGln
aHQtcmVkaXJlY3QtZmFpbHVyZS5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhZG9jdHlwZSBodG1s
PgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0
bGU+U2VuZEJlYWNvbiBDT1JTIHByZWZsaWdodCBvbiByZWRpcmVjdCB0ZXN0PC90aXRsZT4KKyAg
ICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwv
aGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24v
cmVzb3VyY2VzLyI7CisKK2Z1bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNo
ZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9
IiArIGlkOworCisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3Rp
bWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4o
cmVzcG9uc2UgPT4geworICAgICAgICByZXNwb25zZS50ZXh0KCkudGhlbihib2R5ID0+IHsKKyAg
ICAgICAgICByZXNvbHZlKGJvZHkpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAx
MDAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNj
ZXNzKHdoYXQpIHsKKyAgdmFyIHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RF
X09SSUdJTiArIFJFU09VUkNFU19ESVI7CisgIHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFy
IHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0
LnB5P2FsbG93Q29ycz0wJmNtZD1wdXQmaWQ9IiArIGlkKTsKKworICAvLyAzMDcgJiAzMDggcmVk
aXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgbWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9k
LgorICB2YXIgdGVzdFVybCA9IFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rf
c3RhdHVzPTMwNyZsb2NhdGlvbj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlv
bih0ZXN0KSB7CisgICAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwg
d2hhdCksICJTZW5kQmVhY29uIFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRl
c3QsIGlkKSAudGhlbihqc29uID0+IHsKKyAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoanNvbik7
CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0J10sIDEsICJSZWNlaXZlZCBw
cmVmbGlnaHQiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZWZlcmVy
J10sIGRvY3VtZW50LlVSTCwgIlByZWZsaWdodCByZWZlcmVyIGhlYWRlciIpCisgICAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0X3JlcXVlc3RlZF9tZXRob2QnXSwgIlBPU1QiLCAi
UHJlZmxpZ2h0IHJlcXVlc3RlZCBtZXRob2QiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRb
J2JlYWNvbiddLCAwLCAiRGlkIG5vdCByZWNlaXZlIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJD
T1JTIHByZWZsaWdodCBmYWlsdXJlIHRlc3QiKTsKK30KKworbGV0IGJsb2IgPSBuZXcgQmxvYihb
IjEyMyJdLCB7dHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9KTsKK3Rlc3RDT1JTUHJl
ZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKGJsb2IpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3Jz
LXByZWZsaWdodC1yZWRpcmVjdC1mcm9tLWNyb3Nzb3JpZ2luLXRvLXNhbWVvcmlnaW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQt
cmVkaXJlY3QtZnJvbS1jcm9zc29yaWdpbi10by1zYW1lb3JpZ2luLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNTQ0OTgyNjlmNWQ0ZTBjOTQ1NGYyMGU4MTE1OGVkOTk1ZmVkNTkzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGln
aHQtcmVkaXJlY3QtZnJvbS1jcm9zc29yaWdpbi10by1zYW1lb3JpZ2luLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBDT1JTIHByZWZsaWdodCBzdWNjZXNzIHRlc3QgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0
LXJlZGlyZWN0LWZyb20tY3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdpbi5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZnJvbS1jcm9z
c29yaWdpbi10by1zYW1lb3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FjNTRkYzFjM2NkNmNmYTI3
MTBmMjQxZDllMDIxMjI1M2M5YzRlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3Nvcmln
aW4tdG8tc2FtZW9yaWdpbi5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+
U2VuZEJlYWNvbiBDT1JTIHByZWZsaWdodCBvbiByZWRpcmVjdCB0ZXN0IGZyb20gY3Jvc3Mgb3Jp
Z2luIHRvIHNhbWUgb3JpZ2luPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlw
dCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29t
bW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJF
U09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisKK2Z1bmN0aW9uIHBv
bGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJi
ZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4g
eworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNw
b25zZS50ZXh0KCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJvZHkpOworICAg
ICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAgdmFyIHRlc3RCYXNl
ID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09VUkNFU19ESVI7Cisg
IHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVu
dChnZXRfaG9zdF9pbmZvKCkuSFRUUF9PUklHSU4gKyBSRVNPVVJDRVNfRElSICsgImJlYWNvbi1w
cmVmbGlnaHQucHk/YWxsb3dDb3JzPTEmY21kPXB1dCZpZD0iICsgaWQpOworCisgIC8vIDMwNyAm
IDMwOCByZWRpcmVjdGlvbnMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBtYWludGFpbiB0aGUgUE9T
VCBtZXRob2QuCisgIHZhciB0ZXN0VXJsID0gdGVzdEJhc2UgKyAicmVkaXJlY3QucHk/cmVkaXJl
Y3Rfc3RhdHVzPTMwNyZsb2NhdGlvbj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0ZXN0KSB7CisgICAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVy
bCwgd2hhdCksICJTZW5kQmVhY29uIFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0
KHRlc3QsIGlkKSAudGhlbihqc29uID0+IHsKKyAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoanNv
bik7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0J10sIDEsICJSZWNlaXZl
ZCBwcmVmbGlnaHQiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZWZl
cmVyJ10sIGRvY3VtZW50LlVSTCwgIlByZWZsaWdodCByZWZlcmVyIGhlYWRlciIpCisgICAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0X3JlcXVlc3RlZF9tZXRob2QnXSwgIlBPU1Qi
LCAiUHJlZmxpZ2h0IHJlcXVlc3RlZCBtZXRob2QiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHRbJ3ByZWZsaWdodF9vcmlnaW4nXSwgIm51bGwiLCAiUmVjZWl2ZWQgYmVhY29uIikKKyAgICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0WydiZWFjb24nXSwgMSwgIlJlY2VpdmVkIGJlYWNvbiIpCisg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsnYmVhY29uX29yaWdpbiddLCAibnVsbCIsICJSZWNl
aXZlZCBiZWFjb24iKQorICAgIH0pOworICB9LCAiQ09SUyBwcmVmbGlnaHQgc3VjY2VzcyB0ZXN0
Iik7Cit9CisKK2xldCBibG9iID0gbmV3IEJsb2IoWyIxMjMiXSwge3R5cGU6ICJhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0ifSk7Cit0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2VzcyhibG9i
KTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vz
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXBy
ZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTQ0OTgy
NjlmNWQ0ZTBjOTQ1NGYyMGU4MTE1OGVkOTk1ZmVkNTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3Vj
Y2Vzcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ09SUyBwcmVmbGlnaHQg
c3VjY2VzcyB0ZXN0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24v
Y29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTI5ZjYwODZmNmNlNjQxMzRmYjBiY2JjZmZhNGFiZWZmYWI2MWJjZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJl
ZmxpZ2h0LXJlZGlyZWN0LXN1Y2Nlc3MuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
PHRpdGxlPlNlbmRCZWFjb24gQ09SUyBwcmVmbGlnaHQgb24gcmVkaXJlY3QgdGVzdDwvdGl0bGU+
CisgICAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0Pgor
ICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KK3ZhciBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQvYmVh
Y29uL3Jlc291cmNlcy8iOworCitmdW5jdGlvbiBwb2xsUmVzdWx0KHRlc3QsIGlkKSB7CisgIHZh
ciBjaGVja1VybCA9IFJFU09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZsaWdodC5weT9jbWQ9Z2V0
JmlkPSIgKyBpZDsKKworICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgc3Rl
cF90aW1lb3V0KHRlc3Quc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIGZldGNoKGNoZWNrVXJsKS50
aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4oYm9keSA9PiB7
CisgICAgICAgICAgcmVzb2x2ZShib2R5KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9
KSwgMTAwMCk7CisgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0
U3VjY2Vzcyh3aGF0KSB7CisgIHZhciB0ZXN0QmFzZSA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JF
TU9URV9PUklHSU4gKyBSRVNPVVJDRVNfRElSOworICB2YXIgaWQgPSBzZWxmLnRva2VuKCk7Cisg
IHZhciB0YXJnZXQgPSBlbmNvZGVVUklDb21wb25lbnQodGVzdEJhc2UgKyAiYmVhY29uLXByZWZs
aWdodC5weT9hbGxvd0NvcnM9MSZjbWQ9cHV0JmlkPSIgKyBpZCk7CisKKyAgLy8gMzA3ICYgMzA4
IHJlZGlyZWN0aW9ucyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IG1haW50YWluIHRoZSBQT1NUIG1l
dGhvZC4KKyAgdmFyIHRlc3RVcmwgPSBSRVNPVVJDRVNfRElSICsgInJlZGlyZWN0LnB5P3JlZGly
ZWN0X3N0YXR1cz0zMDcmbG9jYXRpb249IiArIHRhcmdldDsKKworICBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odGVzdCkgeworICAgIGFzc2VydF90cnVlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRlc3RV
cmwsIHdoYXQpLCAiU2VuZEJlYWNvbiBTdWNjZWVkZWQiKTsKKyAgICByZXR1cm4gcG9sbFJlc3Vs
dCh0ZXN0LCBpZCkgLnRoZW4oanNvbiA9PiB7CisgICAgICByZXN1bHQgPSBKU09OLnBhcnNlKGpz
b24pOworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAxLCAiUmVjZWl2
ZWQgcHJlZmxpZ2h0IikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHRfcmVm
ZXJlciddLCBkb2N1bWVudC5VUkwsICJQcmVmbGlnaHQgcmVmZXJlciBoZWFkZXIiKQorICAgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZXF1ZXN0ZWRfbWV0aG9kJ10sICJQT1NU
IiwgIlByZWZsaWdodCByZXF1ZXN0ZWQgbWV0aG9kIikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0WydiZWFjb24nXSwgMSwgIlJlY2VpdmVkIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJDT1JT
IHByZWZsaWdodCBzdWNjZXNzIHRlc3QiKTsKK30KKworbGV0IGJsb2IgPSBuZXcgQmxvYihbIjEy
MyJdLCB7dHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9KTsKK3Rlc3RDT1JTUHJlZmxp
Z2h0UmVkaXJlY3RTdWNjZXNzKGJsb2IpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL2Jl
YWNvbi1wcmVmbGlnaHQucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2Vz
L2JlYWNvbi1wcmVmbGlnaHQucHkKaW5kZXggY2NlNGNkMTE0M2JlMDk4ZGZhZjRiOGUyZTQzMTU4
N2JmNzgyNzE0YS4uOWU2NGU3NmZmZDZlM2I5Y2E5YTFhNWMwMzJkNjJlNTY1ZDVkNTg0OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24tcHJl
ZmxpZ2h0LnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMvYmVh
Y29uLXByZWZsaWdodC5weQpAQCAtMzUsMTEgKzM1LDEzIEBAIGRlZiBtYWluKHJlcXVlc3QsIHJl
c3BvbnNlKToKICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X3JlcXVlc3RlZF9oZWFkZXJz
J10gPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMi
LCAiIikKICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X2Nvb2tpZV9oZWFkZXInXSA9IHJl
cXVlc3QuaGVhZGVycy5nZXQoIkNvb2tpZSIsICIiKTsKICAgICAgIHN0YXNoZWRfZGF0YVsncHJl
ZmxpZ2h0X3JlZmVyZXInXSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoIlJlZmVyZXIiLCAiIikKKyAg
ICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X29yaWdpbiddID0gcmVxdWVzdC5oZWFkZXJzLmdl
dCgiT3JpZ2luIiwgIiIpCiAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQodGVzdF9pZCwg
c3Rhc2hlZF9kYXRhKQogICAgICAgcmV0dXJuIHJlc3BvbmRUb0NPUlNQcmVmbGlnaHQocmVxdWVz
dCwgcmVzcG9uc2UpCiAgICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAiUE9TVCI6CiAgICAgICBz
dGFzaGVkX2RhdGFbJ2JlYWNvbiddID0gMTsKICAgICAgIHN0YXNoZWRfZGF0YVsnYmVhY29uX2Nv
b2tpZV9oZWFkZXInXSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoIkNvb2tpZSIsICIiKQorICAgICAg
c3Rhc2hlZF9kYXRhWydiZWFjb25fb3JpZ2luJ10gPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJPcmln
aW4iLCAiIikKICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dCh0ZXN0X2lkLCBzdGFzaGVk
X2RhdGEpCiAgICAgcmV0dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L3BsYWluIildLCAiIgog
ICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMvcmVk
aXJlY3QucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL3JlZGlyZWN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5YzU3NGM0MDJmMDJhOWI1Yzk4ZDllZGZjNDY0NDI2ZTU3YWFjNTkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2Vz
L3JlZGlyZWN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKK2Zyb20gdXJsbGliIGltcG9ydCB1cmxlbmNv
ZGUKK2Zyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlCisKK2RlZiBtYWluKHJlcXVlc3QsIHJl
c3BvbnNlKToKKyAgICBzdGFzaGVkX2RhdGEgPSB7J2NvdW50JzogMCwgJ3ByZWZsaWdodCc6ICIw
In0KKyAgICBzdGF0dXMgPSAzMDIKKyAgICBoZWFkZXJzID0gWygiQ29udGVudC1UeXBlIiwgInRl
eHQvcGxhaW4iKSwKKyAgICAgICAgICAgICAgICgiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNoZSIp
LAorICAgICAgICAgICAgICAgKCJQcmFnbWEiLCAibm8tY2FjaGUiKSwKKyAgICAgICAgICAgICAg
ICgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMiLCAidHJ1ZSIpXQorICAgIGhlYWRl
cnMuYXBwZW5kKCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgcmVxdWVzdC5oZWFkZXJz
LmdldCgiT3JpZ2luIiwgIioiKSkpCisgICAgdG9rZW4gPSBOb25lCisKKyAgICBpZiAidG9rZW4i
IGluIHJlcXVlc3QuR0VUOgorICAgICAgICB0b2tlbiA9IHJlcXVlc3QuR0VULmZpcnN0KCJ0b2tl
biIpCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRva2VuKQorICAg
ICAgICBpZiBkYXRhOgorICAgICAgICAgICAgc3Rhc2hlZF9kYXRhID0gZGF0YQorCisgICAgaWYg
cmVxdWVzdC5tZXRob2QgPT0gIk9QVElPTlMiOgorICAgICAgICByZXF1ZXN0ZWRfbWV0aG9kID0g
cmVxdWVzdC5oZWFkZXJzLmdldCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2QiLCBOb25l
KQorICAgICAgICBoZWFkZXJzLmFwcGVuZCgoIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMi
LCByZXF1ZXN0ZWRfbWV0aG9kKSkKKyAgICAgICAgcmVxdWVzdGVkX2hlYWRlcnMgPSByZXF1ZXN0
LmhlYWRlcnMuZ2V0KCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMiLCBOb25lKQorICAg
ICAgICBoZWFkZXJzLmFwcGVuZCgoIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCByZXF1
ZXN0ZWRfaGVhZGVycykpCisgICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0J10gPSAiMSIK
KyAgICAgICAgI1ByZWZsaWdodCBpcyBub3QgcmVkaXJlY3RlZDogcmV0dXJuIDIwMAorICAgICAg
ICBpZiBub3QgInJlZGlyZWN0X3ByZWZsaWdodCIgaW4gcmVxdWVzdC5HRVQ6CisgICAgICAgICAg
ICBpZiB0b2tlbjoKKyAgICAgICAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHJlcXVl
c3QuR0VULmZpcnN0KCJ0b2tlbiIpLCBzdGFzaGVkX2RhdGEpCisgICAgICAgICAgICByZXR1cm4g
MjAwLCBoZWFkZXJzLCAiIgorCisgICAgaWYgInJlZGlyZWN0X3N0YXR1cyIgaW4gcmVxdWVzdC5H
RVQ6CisgICAgICAgIHN0YXR1cyA9IGludChyZXF1ZXN0LkdFVFsncmVkaXJlY3Rfc3RhdHVzJ10p
CisKKyAgICBzdGFzaGVkX2RhdGFbJ2NvdW50J10gKz0gMQorCisgICAgaWYgImxvY2F0aW9uIiBp
biByZXF1ZXN0LkdFVDoKKyAgICAgICAgdXJsID0gcmVxdWVzdC5HRVRbJ2xvY2F0aW9uJ10KKyAg
ICAgICAgc2NoZW1lID0gdXJscGFyc2UodXJsKS5zY2hlbWUKKyAgICAgICAgaWYgc2NoZW1lID09
ICIiIG9yIHNjaGVtZSA9PSAiaHR0cCIgb3Igc2NoZW1lID09ICJodHRwcyI6CisgICAgICAgICAg
ICB1cmwgKz0gIiYiIGlmICc/JyBpbiB1cmwgZWxzZSAiPyIKKyAgICAgICAgICAgICNrZWVwIHVy
bCBwYXJhbWV0ZXJzIGluIGxvY2F0aW9uCisgICAgICAgICAgICB1cmxfcGFyYW1ldGVycyA9IHt9
CisgICAgICAgICAgICBmb3IgaXRlbSBpbiByZXF1ZXN0LkdFVC5pdGVtcygpOgorICAgICAgICAg
ICAgICAgIHVybF9wYXJhbWV0ZXJzW2l0ZW1bMF1dID0gaXRlbVsxXVswXQorICAgICAgICAgICAg
dXJsICs9IHVybGVuY29kZSh1cmxfcGFyYW1ldGVycykKKyAgICAgICAgICAgICNtYWtlIHN1cmUg
bG9jYXRpb24gY2hhbmdlcyBkdXJpbmcgcmVkaXJlY3Rpb24gbG9vcAorICAgICAgICAgICAgdXJs
ICs9ICImY291bnQ9IiArIHN0cihzdGFzaGVkX2RhdGFbJ2NvdW50J10pCisgICAgICAgIGhlYWRl
cnMuYXBwZW5kKCgiTG9jYXRpb24iLCB1cmwpKQorCisgICAgaWYgInJlZGlyZWN0X3JlZmVycmVy
cG9saWN5IiBpbiByZXF1ZXN0LkdFVDoKKyAgICAgICAgaGVhZGVycy5hcHBlbmQoKCJSZWZlcnJl
ci1Qb2xpY3kiLCByZXF1ZXN0LkdFVFsncmVkaXJlY3RfcmVmZXJyZXJwb2xpY3knXSkpCisKKyAg
ICBpZiB0b2tlbjoKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHJlcXVlc3QuR0VU
LmZpcnN0KCJ0b2tlbiIpLCBzdGFzaGVkX2RhdGEpCisgICAgICAgIGlmICJtYXhfY291bnQiIGlu
IHJlcXVlc3QuR0VUOgorICAgICAgICAgICAgbWF4X2NvdW50ID0gIGludChyZXF1ZXN0LkdFVFsn
bWF4X2NvdW50J10pCisgICAgICAgICAgICAjc3RvcCByZWRpcmVjdGluZyBhbmQgcmV0dXJuIGNv
dW50CisgICAgICAgICAgICBpZiBzdGFzaGVkX2RhdGFbJ2NvdW50J10gPiBtYXhfY291bnQ6Cisg
ICAgICAgICAgICAgICAgIyAtMSBiZWNhdXNlIHRoZSBsYXN0IGlzIG5vdCBhIHJlZGlyZWN0aW9u
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihzdGFzaGVkX2RhdGFbJ2NvdW50J10gLSAxKQor
CisgICAgcmV0dXJuIHN0YXR1cywgaGVhZGVycywgIiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317734</attachid>
            <date>2017-08-09 13:41:14 -0700</date>
            <delta_ts>2017-08-09 14:33:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175386-20170809134114.patch</filename>
            <type>text/plain</type>
            <size>26067</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1NGNlMTcxNmYyMDZj
NDAwNzAyYzJlZWIwYzdkNTVlYmNkNDhiNC4uODdlZGY4ZjQ2MzY1OTBmYmQwYTNkYmJjYzA4NmQz
ODYwZmIzNWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl1bTmV0d29ya1Nl
c3Npb25dIFN1cHBvcnQgQ09SUy1wcmVmbGlnaHRpbmcgb24gcmVkaXJlY3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzODYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMzODAxMzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV4cG9ydCBhIGNvdXBsZSBvZiBXZWJDb3JlIHN5bWJvbHMgc28gSSBj
YW4gdXNlIHRoZW0gaW4gV2ViS2l0Mi4KKworICAgICAgICBUZXN0czogaHR0cC93cHQvYmVhY29u
L2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZmFpbHVyZS5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mcm9tLWNyb3Nz
b3JpZ2luLXRvLXNhbWVvcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvYmVhY29u
L2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vzcy5odG1sCisKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbi5oOgorCiAyMDE3LTA4LTA5ICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY29waWVzIG9mIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6bV9zZXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2YTdhYzYzNGQzMDU3ZjM5YTE1ZGMwMWQ5
N2UyZTc0NzE5NTdkZDI1Li5jNzNlN2VmMWU5Y2M4ZTg2ODA0ZmEzMjI5MGNkYjE1MDI4NjI3MDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA4LTA5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl1bTmV0d29ya1Nlc3Npb25dIFN1cHBv
cnQgQ09SUy1wcmVmbGlnaHRpbmcgb24gcmVkaXJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzODYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMzODAxMzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IHRvIEJlYWNvbiBmb3IgZG9pbmcgQ09SUy1wcmVmbGlnaHRpbmcgdXBv
biByZWRpcmVjdCB0byBhIGRpZmZlcmVudAorICAgICAgICBkb21haW4uCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpQ
aW5nTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp+UGluZ0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpQaW5nTG9hZDo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQaW5n
TG9hZDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5n
TG9hZDo6bmVlZHNDT1JTUHJlZmxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OmRvQ09SU1ByZWZsaWdodCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKwogMjAxNy0wOC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIwMzkzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCmluZGV4IDVlODdiMWZl
OTEwYTUzMTQxZTFkMTEyNzA0ZWY2NGRmMDA4Njc5N2EuLjk0ZjIyMzA0M2I0MTMxYmI1NTcwODZi
MDdlNmM2MWY2YjczZTllMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgVVJMOwogYm9vbCBp
c1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgSFRUUEhlYWRlck1hcCYpOwogYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RN
ZXRob2RXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJik7CiAKLXZvaWQgdXBkYXRlUmVxdWVzdEZvckFj
Y2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlPcmlnaW4mLCBTdG9yZWRDcmVk
ZW50aWFscyk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250
cm9sKFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luJiwgU3RvcmVkQ3JlZGVudGlhbHMp
OwogV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVm
bGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgU3RyaW5nJik7CiAKIGJvb2wgaXNWYWxpZENyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29u
c3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggMGVhZDRiYzhi
ODhjN2FkMjA3ZTdkZjhjOGUwYzI1YzhmOGRmZTEzYy4uNjNiZWY0OGQ0MzQzMDUyOTZjNWU4NGQ2
Y2Q5NDU1NGFkYTg4Y2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVm
PFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVVbmlxdWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVVbmlxdWUoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCA0NDZiNjdkY2Fj
MWVmNDRiNTk2Y2I4NjA1NTYyY2MxMDY0OGQyNjJiLi42NTIyZDk4MjY4NDBjYmU4NDEzZGMzN2Mz
ZGJmYjNkODMxYWYyNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTU0LDYgKzU0LDcgQEAg
cHVibGljOgogCiAgICAgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyKFBhcmFtZXRlcnMmJiwg
Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIH5OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIo
KTsKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3Q7IH0KIAogICAgIHZv
aWQgc3RhcnRQcmVmbGlnaHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcAppbmRleCAyZGYwMTRjZTU0Y2YyM2RhOTk2ZWJkOTFhMTE2MmUxZTQzNzNhY2E3Li41
YmFlYmZiMGQ0ODAyMGRkMDlhZThmOGY5Yjc1YWZmMTQ4ZjU1YTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKICNp
bmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmg+CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYobV9wYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gUGluZ0xvYWQ6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQogCkBAIC00Miw2ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogUGlu
Z0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICA6IG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAgICwgbV90aW1l
b3V0VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6dGltZW91dFRpbWVyRmlyZWQpCisgICAgLCBtX3Nh
bWVPcmlnaW5SZXF1ZXN0KHNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSkpCiB7CiAgICAgLy8gSWYgdGhlIHNlcnZlciBuZXZlciByZXNwb25kcywg
dGhpcyBvYmplY3Qgd2lsbCBoYW5nIGFyb3VuZCBmb3JldmVyLgogICAgIC8vIFNldCBhIHZlcnkg
Z2VuZXJvdXMgdGltZW91dCwganVzdCBpbiBjYXNlLgpAQCAtNTAsMTEgKzUyLDE0IEBAIFBpbmdM
b2FkOjpQaW5nTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgaWYgKG5lZWRzQ09SU1ByZWZsaWdodChtX3BhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAg
ICAgIGRvQ09SU1ByZWZsaWdodChtX3BhcmFtZXRlcnMucmVxdWVzdCk7CiAgICAgZWxzZQotICAg
ICAgICBzdGFydE5ldHdvcmtMb2FkKCk7CisgICAgICAgIGxvYWRSZXF1ZXN0KG1fcGFyYW1ldGVy
cy5yZXF1ZXN0KTsKIH0KIAogUGluZ0xvYWQ6On5QaW5nTG9hZCgpCiB7CisgICAgaWYgKG1fcmVk
aXJlY3RIYW5kbGVyKQorICAgICAgICBtX3JlZGlyZWN0SGFuZGxlcih7IH0pOworCiAgICAgaWYg
KG1fdGFzaykgewogICAgICAgICBBU1NFUlQobV90YXNrLT5jbGllbnQoKSA9PSB0aGlzKTsKICAg
ICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOwpAQCAtNjIsMjIgKzY3LDUxIEBAIFBpbmdMb2Fk
Ojp+UGluZ0xvYWQoKQogICAgIH0KIH0KIAotdm9pZCBQaW5nTG9hZDo6c3RhcnROZXR3b3JrTG9h
ZCgpCit2b2lkIFBpbmdMb2FkOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZCIp
OwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3Jr
U2Vzc2lvbihtX3BhcmFtZXRlcnMuc2Vzc2lvbklEKSkgewotICAgICAgICBtX3Rhc2sgPSBOZXR3
b3JrRGF0YVRhc2s6OmNyZWF0ZSgqbmV0d29ya1Nlc3Npb24sICp0aGlzLCBtX3BhcmFtZXRlcnMp
OworICAgICAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOworICAgICAgICBs
b2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgbV90YXNrID0gTmV0d29y
a0RhdGFUYXNrOjpjcmVhdGUoKm5ldHdvcmtTZXNzaW9uLCAqdGhpcywgbG9hZFBhcmFtZXRlcnMp
OwogICAgICAgICBtX3Rhc2stPnJlc3VtZSgpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCitTZWN1cml0eU9yaWdp
biYgUGluZ0xvYWQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vcmln
aW4gPyAqbV9vcmlnaW4gOiAqbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbjsKK30KKwordm9pZCBQ
aW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiIpOwotICAgIC8vIEZJWE1FOiBEbyBh
IENPUlMgcHJlZmxpZ2h0IGlmIG5lY2Vzc2FyeS4KKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIHNob3VsZEZvbGxvd1JlZGlyZWN0cz8gJWQi
LCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKTsKKyAgICBpZiAoIW1fcGFyYW1l
dGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogRG8gQ1NQIGNoZWNr
LgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5zdXJlIHRoZSBudW1iZXIgb2YgcmVkaXJlY3Rz
IGRvZXMgbm90IGV4Y2VlZCAyMC4KLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX3BhcmFtZXRlcnMu
c2hvdWxkRm9sbG93UmVkaXJlY3RzID8gcmVxdWVzdCA6IFJlc291cmNlUmVxdWVzdCgpKTsKKyAg
ICBpZiAoIW5lZWRzQ09SU1ByZWZsaWdodChyZXF1ZXN0KSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHJlcXVp
cmVzIGEgQ09SUyBwcmVmbGlnaHQiKTsKKworICAgIC8vIFVzZSBhIHVuaXF1ZSBmb3Igc3Vic2Vx
dWVudCBsb2FkcyBpZiBuZWVkZWQuCisgICAgLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5v
cmcvI2NvbmNlcHQtaHR0cC1yZWRpcmVjdC1mZXRjaCAoU3RlcCAxMCkuCisgICAgQVNTRVJUKG1f
cGFyYW1ldGVycy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CisgICAgaWYgKCFz
ZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSkgJiYgIXBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCByZXF1ZXN0
LnVybCgpKSkKKyAgICAgICAgbV9vcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVl
KCk7CisKKyAgICBtX3NhbWVPcmlnaW5SZXF1ZXN0ID0gZmFsc2U7CisgICAgbV9yZWRpcmVjdEhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIC8vIExldCdzIGZldGNo
IHRoZSByZXF1ZXN0IHdpdGggdGhlIG9yaWdpbmFsIGhlYWRlcnMgKGVxdWl2YWxlbnQgdG8gcmVx
dWVzdCBjbG9uaW5nIHNwZWNpZmllZCBieSBmZXRjaCBhbGdvcml0aG0pLgorICAgIHJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkcyhtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwSGVhZGVyRmllbGRz
KCkpOworCisgICAgZG9DT1JTUHJlZmxpZ2h0KHJlcXVlc3QpOwogfQogCiB2b2lkIFBpbmdMb2Fk
OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTg3LDkgKzEy
MSw5IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZv
aWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3Bv
bnNlTmV0d29ya1Nlc3Npb24iKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbiAtIGh0dHBTdGF0dXNDb2RlOiAlZCIsIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6
UG9saWN5SWdub3JlKTsKICAgICBkZWxldGUgdGhpczsKIH0KQEAgLTEzMywzMCArMTY3LDMzIEBA
IHZvaWQgUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKCkKIAogYm9vbCBQaW5nTG9hZDo6bmVl
ZHNDT1JTUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsK
LSAgICBpZiAobV9wYXJhbWV0ZXJzLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKSB7
Ci0gICAgICAgIEFTU0VSVChtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luKTsKLSAgICAgICAgcmV0
dXJuICFtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkp
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcGFyYW1ldGVycy5tb2RlID09
IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gIW1fc2FtZU9yaWdpblJlcXVlc3QgfHwgIXNlY3VyaXR5T3JpZ2luKCkuY2FuUmVx
dWVzdChyZXF1ZXN0LnVybCgpKTsKIH0KIAogdm9pZCBQaW5nTG9hZDo6ZG9DT1JTUHJlZmxpZ2h0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkb0NPUlNQcmVmbGlnaHQiKTsKICAgICBBU1NFUlQoIW1fY29yc1ByZWZsaWdodENo
ZWNrZXIpOwotICAgIEFTU0VSVChtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luKTsKIAogICAgIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gewogICAg
ICAgICByZXF1ZXN0LAotICAgICAgICAqbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiwKKyAgICAg
ICAgc2VjdXJpdHlPcmlnaW4oKSwKICAgICAgICAgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwKICAg
ICAgICAgbV9wYXJhbWV0ZXJzLmFsbG93U3RvcmVkQ3JlZGVudGlhbHMKICAgICB9OwogICAgIG1f
Y29yc1ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcj4oV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXNdKE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6UmVzdWx0IHJlc3VsdCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkb0NPUlNQcmVmbGlnaHQgY29tcGxldGUsIHN1Y2Nlc3M6ICVkIiwgcmVzdWx0ID09IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6UmVzdWx0OjpTdWNjZXNzKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNzOiAl
ZCBmb3JSZWRpcmVjdD8gJWQiLCByZXN1bHQgPT0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpSZXN1bHQ6OlN1Y2Nlc3MsICEhbV9yZWRpcmVjdEhhbmRsZXIpOworICAgICAgICBhdXRvIGNv
cnNQcmVmbGlnaHRDaGVja2VyID0gV1RGTW92ZShtX2NvcnNQcmVmbGlnaHRDaGVja2VyKTsKICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdDo6
U3VjY2VzcykgewotICAgICAgICAgICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG51bGxwdHI7
Ci0gICAgICAgICAgICBzdGFydE5ldHdvcmtMb2FkKCk7CisgICAgICAgICAgICBSZXNvdXJjZVJl
cXVlc3QgYWN0dWFsUmVxdWVzdCA9IGNvcnNQcmVmbGlnaHRDaGVja2VyLT5vcmlnaW5hbFJlcXVl
c3QoKTsKKyAgICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKGFjdHVhbFJl
cXVlc3QsIHNlY3VyaXR5T3JpZ2luKCksIG1fcGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRp
YWxzKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlZGlyZWN0SGFuZGxlciA9IHN0ZDo6ZXhjaGFu
Z2UobV9yZWRpcmVjdEhhbmRsZXIsIG51bGxwdHIpKQorICAgICAgICAgICAgICAgIHJlZGlyZWN0
SGFuZGxlcihhY3R1YWxSZXF1ZXN0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBsb2FkUmVxdWVzdChhY3R1YWxSZXF1ZXN0KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBkZWxldGUgdGhpczsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaAppbmRleCA4ODcyZDJmNGJjMjU2YWQwY2NjODUyZDBjYjkyZjFiODQxYjc4YmM0Li5lYjFj
ZTA2NWQxN2EwZTQwYzc2MDJkZjMyZjg5MmVjM2YyZGIyYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC01MSwxNCArNTEsMTkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbDsKICAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7
CiAKLSAgICB2b2lkIHN0YXJ0TmV0d29ya0xvYWQoKTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgbmVlZHNDT1JTUHJlZmxp
Z2h0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIHZvaWQgZG9D
T1JTUHJlZmxpZ2h0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworCisgICAgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAgICAgCiAgICAg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogICAgIFJlZlB0cjxO
ZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1l
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPiBtX2Nv
cnNQcmVmbGlnaHRDaGVja2VyOworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4g
bV9vcmlnaW47CisgICAgYm9vbCBtX3NhbWVPcmlnaW5SZXF1ZXN0OworICAgIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXIgbV9yZWRpcmVjdEhhbmRsZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDZiMmIy
YjRhNDBmZTM3OGNjOGYxYjg3YzEzZGY4ZGQ1NDkxZmZjZS4uNWZkNTJmNDVlM2E0NGFjMjNmMmM4
MGIwOTM2ZWQzYTZiOGI2M2Q3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA4LTA5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl1bTmV0d29y
a1Nlc3Npb25dIFN1cHBvcnQgQ09SUy1wcmVmbGlnaHRpbmcgb24gcmVkaXJlY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzODYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMzODAxMzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAq
IGh0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXBy
ZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0
L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3NvcmlnaW4tdG8t
c2FtZW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2JlYWNv
bi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3NvcmlnaW4tdG8tc2FtZW9y
aWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXBy
ZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vzcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL2JlYWNvbi1wcmVm
bGlnaHQucHk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vcmVz
b3VyY2VzL3JlZGlyZWN0LnB5OiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorCiAyMDE3LTA4LTA5
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIFdQRSBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZh
aWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExOTMyZjcyZjZiMDY5OWE1NGM5ZTdlZDky
ZjJiN2E2Yzk0OGNkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9i
ZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBDT1JTIHByZWZsaWdodCBmYWlsdXJlIHRlc3QgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0
LXJlZGlyZWN0LWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3Jz
L2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDllZmEw
MWI2NzA2ZjBkMDlkODg4ODAxZDQ1MGIxMGMwNWI1MTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZmFp
bHVyZS5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxo
ZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+U2VuZEJlYWNvbiBD
T1JTIHByZWZsaWdodCBvbiByZWRpcmVjdCB0ZXN0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+
CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgordmFyIFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisK
K2Z1bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VS
Q0VTX0RJUiArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVw
X2Z1bmMoKCkgPT4geworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4gewor
ICAgICAgICByZXNwb25zZS50ZXh0KCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZl
KGJvZHkpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAg
dmFyIHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09V
UkNFU19ESVI7CisgIHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29k
ZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0w
JmNtZD1wdXQmaWQ9IiArIGlkKTsKKworICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0
aGUgb25seSBvbmVzIHRoYXQgbWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVy
bCA9IFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZsb2Nh
dGlvbj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAg
YXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVh
Y29uIFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihq
c29uID0+IHsKKyAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoanNvbik7CisgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0J10sIDEsICJSZWNlaXZlZCBwcmVmbGlnaHQiKQorICAg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZWZlcmVyJ10sIGRvY3VtZW50LlVS
TCwgIlByZWZsaWdodCByZWZlcmVyIGhlYWRlciIpCisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dFsncHJlZmxpZ2h0X3JlcXVlc3RlZF9tZXRob2QnXSwgIlBPU1QiLCAiUHJlZmxpZ2h0IHJlcXVl
c3RlZCBtZXRob2QiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ2JlYWNvbiddLCAwLCAi
RGlkIG5vdCByZWNlaXZlIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJDT1JTIHByZWZsaWdodCBm
YWlsdXJlIHRlc3QiKTsKK30KKworbGV0IGJsb2IgPSBuZXcgQmxvYihbIjEyMyJdLCB7dHlwZTog
ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9KTsKK3Rlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RT
dWNjZXNzKGJsb2IpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRp
cmVjdC1mcm9tLWNyb3Nzb3JpZ2luLXRvLXNhbWVvcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZnJvbS1j
cm9zc29yaWdpbi10by1zYW1lb3JpZ2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTQ0OTgy
NjlmNWQ0ZTBjOTQ1NGYyMGU4MTE1OGVkOTk1ZmVkNTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZnJv
bS1jcm9zc29yaWdpbi10by1zYW1lb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
KworUEFTUyBDT1JTIHByZWZsaWdodCBzdWNjZXNzIHRlc3QgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20t
Y3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVh
Y29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZnJvbS1jcm9zc29yaWdpbi10by1zYW1l
b3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FjNTRkYzFjM2NkNmNmYTI3MTBmMjQxZDllMDIxMjI1
M2M5YzRlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9j
b3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdp
bi5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+U2VuZEJlYWNvbiBDT1JT
IHByZWZsaWdodCBvbiByZWRpcmVjdCB0ZXN0IGZyb20gY3Jvc3Mgb3JpZ2luIHRvIHNhbWUgb3Jp
Z2luPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+
PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24v
dXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWlu
Zm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJFU09VUkNFU19ESVIgPSAi
L1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisKK2Z1bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwg
aWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJiZWFjb24tcHJlZmxpZ2h0
LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgZmV0Y2go
Y2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNwb25zZS50ZXh0KCkudGhl
bihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJvZHkpOworICAgICAgICB9KTsKKyAgICAg
IH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxp
Z2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAgdmFyIHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5m
bygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09VUkNFU19ESVI7CisgIHZhciBpZCA9IHNlbGYu
dG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudChnZXRfaG9zdF9pbmZv
KCkuSFRUUF9PUklHSU4gKyBSRVNPVVJDRVNfRElSICsgImJlYWNvbi1wcmVmbGlnaHQucHk/YWxs
b3dDb3JzPTEmY21kPXB1dCZpZD0iICsgaWQpOworCisgIC8vIDMwNyAmIDMwOCByZWRpcmVjdGlv
bnMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBtYWludGFpbiB0aGUgUE9TVCBtZXRob2QuCisgIHZh
ciB0ZXN0VXJsID0gdGVzdEJhc2UgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZs
b2NhdGlvbj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7Cisg
ICAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5k
QmVhY29uIFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhl
bihqc29uID0+IHsKKyAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoanNvbik7CisgICAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0J10sIDEsICJSZWNlaXZlZCBwcmVmbGlnaHQiKQor
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZWZlcmVyJ10sIGRvY3VtZW50
LlVSTCwgIlByZWZsaWdodCByZWZlcmVyIGhlYWRlciIpCisgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3VsdFsncHJlZmxpZ2h0X3JlcXVlc3RlZF9tZXRob2QnXSwgIlBPU1QiLCAiUHJlZmxpZ2h0IHJl
cXVlc3RlZCBtZXRob2QiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9v
cmlnaW4nXSwgIm51bGwiLCAiUmVjZWl2ZWQgYmVhY29uIikKKyAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0WydiZWFjb24nXSwgMSwgIlJlY2VpdmVkIGJlYWNvbiIpCisgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdFsnYmVhY29uX29yaWdpbiddLCAibnVsbCIsICJSZWNlaXZlZCBiZWFjb24iKQor
ICAgIH0pOworICB9LCAiQ09SUyBwcmVmbGlnaHQgc3VjY2VzcyB0ZXN0Iik7Cit9CisKK2xldCBi
bG9iID0gbmV3IEJsb2IoWyIxMjMiXSwge3R5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
fSk7Cit0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2VzcyhibG9iKTsKKyAgICA8L3Njcmlw
dD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
YmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vzcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVj
dC1zdWNjZXNzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTQ0OTgyNjlmNWQ0ZTBjOTQ1NGYy
MGU4MTE1OGVkOTk1ZmVkNTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vzcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ09SUyBwcmVmbGlnaHQgc3VjY2VzcyB0ZXN0IAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZs
aWdodC1yZWRpcmVjdC1zdWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24v
Y29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5
ZjYwODZmNmNlNjQxMzRmYjBiY2JjZmZhNGFiZWZmYWI2MWJjZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0
LXN1Y2Nlc3MuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
ICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlNlbmRCZWFj
b24gQ09SUyBwcmVmbGlnaHQgb24gcmVkaXJlY3QgdGVzdDwvdGl0bGU+CisgICAgPHNjcmlwdCBz
cmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxi
b2R5PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KK3ZhciBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy8i
OworCitmdW5jdGlvbiBwb2xsUmVzdWx0KHRlc3QsIGlkKSB7CisgIHZhciBjaGVja1VybCA9IFJF
U09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZsaWdodC5weT9jbWQ9Z2V0JmlkPSIgKyBpZDsKKwor
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgc3RlcF90aW1lb3V0KHRlc3Qu
c3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIGZldGNoKGNoZWNrVXJsKS50aGVuKHJlc3BvbnNlID0+
IHsKKyAgICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4oYm9keSA9PiB7CisgICAgICAgICAgcmVz
b2x2ZShib2R5KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KSwgMTAwMCk7CisgIH0p
OworfQorCitmdW5jdGlvbiB0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2Vzcyh3aGF0KSB7
CisgIHZhciB0ZXN0QmFzZSA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBS
RVNPVVJDRVNfRElSOworICB2YXIgaWQgPSBzZWxmLnRva2VuKCk7CisgIHZhciB0YXJnZXQgPSBl
bmNvZGVVUklDb21wb25lbnQodGVzdEJhc2UgKyAiYmVhY29uLXByZWZsaWdodC5weT9hbGxvd0Nv
cnM9MSZjbWQ9cHV0JmlkPSIgKyBpZCk7CisKKyAgLy8gMzA3ICYgMzA4IHJlZGlyZWN0aW9ucyBh
cmUgdGhlIG9ubHkgb25lcyB0aGF0IG1haW50YWluIHRoZSBQT1NUIG1ldGhvZC4KKyAgdmFyIHRl
c3RVcmwgPSBSRVNPVVJDRVNfRElSICsgInJlZGlyZWN0LnB5P3JlZGlyZWN0X3N0YXR1cz0zMDcm
bG9jYXRpb249IiArIHRhcmdldDsKKworICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewor
ICAgIGFzc2VydF90cnVlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRlc3RVcmwsIHdoYXQpLCAiU2Vu
ZEJlYWNvbiBTdWNjZWVkZWQiKTsKKyAgICByZXR1cm4gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgLnRo
ZW4oanNvbiA9PiB7CisgICAgICByZXN1bHQgPSBKU09OLnBhcnNlKGpzb24pOworICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAxLCAiUmVjZWl2ZWQgcHJlZmxpZ2h0IikK
KyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHRfcmVmZXJlciddLCBkb2N1bWVu
dC5VUkwsICJQcmVmbGlnaHQgcmVmZXJlciBoZWFkZXIiKQorICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXN1bHRbJ3ByZWZsaWdodF9yZXF1ZXN0ZWRfbWV0aG9kJ10sICJQT1NUIiwgIlByZWZsaWdodCBy
ZXF1ZXN0ZWQgbWV0aG9kIikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydiZWFjb24nXSwg
MSwgIlJlY2VpdmVkIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJDT1JTIHByZWZsaWdodCBzdWNj
ZXNzIHRlc3QiKTsKK30KKworbGV0IGJsb2IgPSBuZXcgQmxvYihbIjEyMyJdLCB7dHlwZTogImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9KTsKK3Rlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNj
ZXNzKGJsb2IpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL2JlYWNvbi1wcmVmbGlnaHQu
cHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL2JlYWNvbi1wcmVmbGln
aHQucHkKaW5kZXggY2NlNGNkMTE0M2JlMDk4ZGZhZjRiOGUyZTQzMTU4N2JmNzgyNzE0YS4uOWU2
NGU3NmZmZDZlM2I5Y2E5YTFhNWMwMzJkNjJlNTY1ZDVkNTg0OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24tcHJlZmxpZ2h0LnB5CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5w
eQpAQCAtMzUsMTEgKzM1LDEzIEBAIGRlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICAg
IHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X3JlcXVlc3RlZF9oZWFkZXJzJ10gPSByZXF1ZXN0Lmhl
YWRlcnMuZ2V0KCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMiLCAiIikKICAgICAgIHN0
YXNoZWRfZGF0YVsncHJlZmxpZ2h0X2Nvb2tpZV9oZWFkZXInXSA9IHJlcXVlc3QuaGVhZGVycy5n
ZXQoIkNvb2tpZSIsICIiKTsKICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X3JlZmVyZXIn
XSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoIlJlZmVyZXIiLCAiIikKKyAgICAgIHN0YXNoZWRfZGF0
YVsncHJlZmxpZ2h0X29yaWdpbiddID0gcmVxdWVzdC5oZWFkZXJzLmdldCgiT3JpZ2luIiwgIiIp
CiAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQodGVzdF9pZCwgc3Rhc2hlZF9kYXRhKQog
ICAgICAgcmV0dXJuIHJlc3BvbmRUb0NPUlNQcmVmbGlnaHQocmVxdWVzdCwgcmVzcG9uc2UpCiAg
ICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAiUE9TVCI6CiAgICAgICBzdGFzaGVkX2RhdGFbJ2Jl
YWNvbiddID0gMTsKICAgICAgIHN0YXNoZWRfZGF0YVsnYmVhY29uX2Nvb2tpZV9oZWFkZXInXSA9
IHJlcXVlc3QuaGVhZGVycy5nZXQoIkNvb2tpZSIsICIiKQorICAgICAgc3Rhc2hlZF9kYXRhWydi
ZWFjb25fb3JpZ2luJ10gPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJPcmlnaW4iLCAiIikKICAgICAg
IHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dCh0ZXN0X2lkLCBzdGFzaGVkX2RhdGEpCiAgICAgcmV0
dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L3BsYWluIildLCAiIgogICAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMvcmVkaXJlY3QucHkgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL3JlZGlyZWN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM5YzU3NGM0MDJmMDJhOWI1Yzk4ZDllZGZjNDY0NDI2ZTU3YWFjNTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL3JlZGlyZWN0LnB5CkBA
IC0wLDAgKzEsNjMgQEAKK2Zyb20gdXJsbGliIGltcG9ydCB1cmxlbmNvZGUKK2Zyb20gdXJscGFy
c2UgaW1wb3J0IHVybHBhcnNlCisKK2RlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKKyAgICBz
dGFzaGVkX2RhdGEgPSB7J2NvdW50JzogMCwgJ3ByZWZsaWdodCc6ICIwIn0KKyAgICBzdGF0dXMg
PSAzMDIKKyAgICBoZWFkZXJzID0gWygiQ29udGVudC1UeXBlIiwgInRleHQvcGxhaW4iKSwKKyAg
ICAgICAgICAgICAgICgiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNoZSIpLAorICAgICAgICAgICAg
ICAgKCJQcmFnbWEiLCAibm8tY2FjaGUiKSwKKyAgICAgICAgICAgICAgICgiQWNjZXNzLUNvbnRy
b2wtQWxsb3ctQ3JlZGVudGlhbHMiLCAidHJ1ZSIpXQorICAgIGhlYWRlcnMuYXBwZW5kKCgiQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgcmVxdWVzdC5oZWFkZXJzLmdldCgiT3JpZ2luIiwg
IioiKSkpCisgICAgdG9rZW4gPSBOb25lCisKKyAgICBpZiAidG9rZW4iIGluIHJlcXVlc3QuR0VU
OgorICAgICAgICB0b2tlbiA9IHJlcXVlc3QuR0VULmZpcnN0KCJ0b2tlbiIpCisgICAgICAgIGRh
dGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRva2VuKQorICAgICAgICBpZiBkYXRhOgor
ICAgICAgICAgICAgc3Rhc2hlZF9kYXRhID0gZGF0YQorCisgICAgaWYgcmVxdWVzdC5tZXRob2Qg
PT0gIk9QVElPTlMiOgorICAgICAgICByZXF1ZXN0ZWRfbWV0aG9kID0gcmVxdWVzdC5oZWFkZXJz
LmdldCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2QiLCBOb25lKQorICAgICAgICBoZWFk
ZXJzLmFwcGVuZCgoIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCByZXF1ZXN0ZWRfbWV0
aG9kKSkKKyAgICAgICAgcmVxdWVzdGVkX2hlYWRlcnMgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJB
Y2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMiLCBOb25lKQorICAgICAgICBoZWFkZXJzLmFw
cGVuZCgoIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCByZXF1ZXN0ZWRfaGVhZGVycykp
CisgICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0J10gPSAiMSIKKyAgICAgICAgI1ByZWZs
aWdodCBpcyBub3QgcmVkaXJlY3RlZDogcmV0dXJuIDIwMAorICAgICAgICBpZiBub3QgInJlZGly
ZWN0X3ByZWZsaWdodCIgaW4gcmVxdWVzdC5HRVQ6CisgICAgICAgICAgICBpZiB0b2tlbjoKKyAg
ICAgICAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHJlcXVlc3QuR0VULmZpcnN0KCJ0
b2tlbiIpLCBzdGFzaGVkX2RhdGEpCisgICAgICAgICAgICByZXR1cm4gMjAwLCBoZWFkZXJzLCAi
IgorCisgICAgaWYgInJlZGlyZWN0X3N0YXR1cyIgaW4gcmVxdWVzdC5HRVQ6CisgICAgICAgIHN0
YXR1cyA9IGludChyZXF1ZXN0LkdFVFsncmVkaXJlY3Rfc3RhdHVzJ10pCisKKyAgICBzdGFzaGVk
X2RhdGFbJ2NvdW50J10gKz0gMQorCisgICAgaWYgImxvY2F0aW9uIiBpbiByZXF1ZXN0LkdFVDoK
KyAgICAgICAgdXJsID0gcmVxdWVzdC5HRVRbJ2xvY2F0aW9uJ10KKyAgICAgICAgc2NoZW1lID0g
dXJscGFyc2UodXJsKS5zY2hlbWUKKyAgICAgICAgaWYgc2NoZW1lID09ICIiIG9yIHNjaGVtZSA9
PSAiaHR0cCIgb3Igc2NoZW1lID09ICJodHRwcyI6CisgICAgICAgICAgICB1cmwgKz0gIiYiIGlm
ICc/JyBpbiB1cmwgZWxzZSAiPyIKKyAgICAgICAgICAgICNrZWVwIHVybCBwYXJhbWV0ZXJzIGlu
IGxvY2F0aW9uCisgICAgICAgICAgICB1cmxfcGFyYW1ldGVycyA9IHt9CisgICAgICAgICAgICBm
b3IgaXRlbSBpbiByZXF1ZXN0LkdFVC5pdGVtcygpOgorICAgICAgICAgICAgICAgIHVybF9wYXJh
bWV0ZXJzW2l0ZW1bMF1dID0gaXRlbVsxXVswXQorICAgICAgICAgICAgdXJsICs9IHVybGVuY29k
ZSh1cmxfcGFyYW1ldGVycykKKyAgICAgICAgICAgICNtYWtlIHN1cmUgbG9jYXRpb24gY2hhbmdl
cyBkdXJpbmcgcmVkaXJlY3Rpb24gbG9vcAorICAgICAgICAgICAgdXJsICs9ICImY291bnQ9IiAr
IHN0cihzdGFzaGVkX2RhdGFbJ2NvdW50J10pCisgICAgICAgIGhlYWRlcnMuYXBwZW5kKCgiTG9j
YXRpb24iLCB1cmwpKQorCisgICAgaWYgInJlZGlyZWN0X3JlZmVycmVycG9saWN5IiBpbiByZXF1
ZXN0LkdFVDoKKyAgICAgICAgaGVhZGVycy5hcHBlbmQoKCJSZWZlcnJlci1Qb2xpY3kiLCByZXF1
ZXN0LkdFVFsncmVkaXJlY3RfcmVmZXJyZXJwb2xpY3knXSkpCisKKyAgICBpZiB0b2tlbjoKKyAg
ICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHJlcXVlc3QuR0VULmZpcnN0KCJ0b2tlbiIp
LCBzdGFzaGVkX2RhdGEpCisgICAgICAgIGlmICJtYXhfY291bnQiIGluIHJlcXVlc3QuR0VUOgor
ICAgICAgICAgICAgbWF4X2NvdW50ID0gIGludChyZXF1ZXN0LkdFVFsnbWF4X2NvdW50J10pCisg
ICAgICAgICAgICAjc3RvcCByZWRpcmVjdGluZyBhbmQgcmV0dXJuIGNvdW50CisgICAgICAgICAg
ICBpZiBzdGFzaGVkX2RhdGFbJ2NvdW50J10gPiBtYXhfY291bnQ6CisgICAgICAgICAgICAgICAg
IyAtMSBiZWNhdXNlIHRoZSBsYXN0IGlzIG5vdCBhIHJlZGlyZWN0aW9uCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0cihzdGFzaGVkX2RhdGFbJ2NvdW50J10gLSAxKQorCisgICAgcmV0dXJuIHN0
YXR1cywgaGVhZGVycywgIiIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317743</attachid>
            <date>2017-08-09 14:33:13 -0700</date>
            <delta_ts>2017-08-09 16:24:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175386-20170809143313.patch</filename>
            <type>text/plain</type>
            <size>32412</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI1NGNlMTcxNmYyMDZj
NDAwNzAyYzJlZWIwYzdkNTVlYmNkNDhiNC4uYTRhMTg5NTlkOTUwNzdkMTNiYjA3MTg5NGRjYmJj
NmU0YzFjZGVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl1bTmV0d29ya1Nl
c3Npb25dIFN1cHBvcnQgQ09SUy1wcmVmbGlnaHRpbmcgb24gcmVkaXJlY3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzODYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMzODAxMzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJs
ZXQuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxlIG9mIFdlYkNvcmUgc3ltYm9scyBzbyBJIGNh
biB1c2UgdGhlbSBpbiBXZWJLaXQyLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9iZWFjb24v
Y29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3Nv
cmlnaW4tdG8tc2FtZW9yaWdpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC9iZWFjb24v
Y29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLmh0bWwKKworICAgICAgICAqIGxv
YWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmg6CisKIDIwMTctMDgtMDkgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjb3BpZXMgb2YgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjptX3Nlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhN2FjNjM0ZDMwNTdmMzlhMTVkYzAxZDk3
ZTJlNzQ3MTk1N2RkMjUuLjNkZDRjYTMwY2UwYmNhYTUxYjg5ZTY3YmYzOGRmMzA4ODllNDA2YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMDgtMDkgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXVtOZXR3b3JrU2Vzc2lvbl0gU3VwcG9y
dCBDT1JTLXByZWZsaWdodGluZyBvbiByZWRpcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM4NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM4MDEzNzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAg
ICBBZGQgc3VwcG9ydCB0byBCZWFjb24gZm9yIGRvaW5nIENPUlMtcHJlZmxpZ2h0aW5nIHVwb24g
cmVkaXJlY3QgdG8gYSBkaWZmZXJlbnQKKyAgICAgICAgZG9tYWluLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6UGlu
Z0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6flBpbmdMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6UGluZ0xvYWQ6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6OnNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGluZ0xv
YWQ6Om5lZWRzQ09SU1ByZWZsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2Fk
Ojpkb0NPUlNQcmVmbGlnaHQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6
CisKIDIwMTctMDgtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMDM5My4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCA1ZTg3YjFmZTkx
MGE1MzE0MWUxZDExMjcwNGVmNjRkZjAwODY3OTdhLi45NGYyMjMwNDNiNDEzMWJiNTU3MDg2YjA3
ZTZjNjFmNmI3M2U5ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFVSTDsKIGJvb2wgaXNT
aW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmKTsKIGJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0TWV0
aG9kV2hpdGVsaXN0KGNvbnN0IFN0cmluZyYpOwogCi12b2lkIHVwZGF0ZVJlcXVlc3RGb3JBY2Nl
c3NDb250cm9sKFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luJiwgU3RvcmVkQ3JlZGVu
dGlhbHMpOworV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJv
bChSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdpbiYsIFN0b3JlZENyZWRlbnRpYWxzKTsK
IFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxp
Z2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0
IFN0cmluZyYpOwogCiBib29sIGlzVmFsaWRDcm9zc09yaWdpblJlZGlyZWN0aW9uVVJMKGNvbnN0
IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDBlYWQ0YmM4Yjg4
YzdhZDIwN2U3ZGY4YzhlMGMyNWM4ZjhkZmUxM2MuLjYzYmVmNDhkNDM0MzA1Mjk2YzVlODRkNmNk
OTQ1NTRhZGE4OGNjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZjxT
ZWN1cml0eU9yaWdpbj4gY3JlYXRlVW5pcXVlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlVW5pcXVlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggNDQ2YjY3ZGNhYzFl
ZjQ0YjU5NmNiODYwNTU2MmNjMTA2NDhkMjYyYi4uNjUyMmQ5ODI2ODQwY2JlODQxM2RjMzdjM2Ri
ZmIzZDgzMWFmMjU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC01NCw2ICs1NCw3IEBAIHB1
YmxpYzoKIAogICAgIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihQYXJhbWV0ZXJzJiYsIENv
bXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB+TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyKCk7
CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0OyB9CiAKICAgICB2b2lk
IHN0YXJ0UHJlZmxpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKaW5kZXggMmRmMDE0Y2U1NGNmMjNkYTk5NmViZDkxYTExNjJlMWU0MzczYWNhNy4uZWU4
MTE4ZWNmN2IzZWVmNGExZjIwNWEzMmI4MmJmYTIzMDc1MjFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgiCiAjaW5j
bHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oPgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0lGKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFBpbmdMb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKIApAQCAtNDIsNiArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFBpbmdM
b2FkOjpQaW5nTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgOiBtX3BhcmFtZXRlcnMoV1RGTW92ZShwYXJhbWV0ZXJzKSkKICAgICAsIG1fdGltZW91
dFRpbWVyKCp0aGlzLCAmUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKQorICAgICwgbV9pc1Nh
bWVPcmlnaW5SZXF1ZXN0KHNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSkpCiB7CiAgICAgLy8gSWYgdGhlIHNlcnZlciBuZXZlciByZXNwb25kcywg
dGhpcyBvYmplY3Qgd2lsbCBoYW5nIGFyb3VuZCBmb3JldmVyLgogICAgIC8vIFNldCBhIHZlcnkg
Z2VuZXJvdXMgdGltZW91dCwganVzdCBpbiBjYXNlLgpAQCAtNTAsMTEgKzUyLDE0IEBAIFBpbmdM
b2FkOjpQaW5nTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgaWYgKG5lZWRzQ09SU1ByZWZsaWdodChtX3BhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAg
ICAgIGRvQ09SU1ByZWZsaWdodChtX3BhcmFtZXRlcnMucmVxdWVzdCk7CiAgICAgZWxzZQotICAg
ICAgICBzdGFydE5ldHdvcmtMb2FkKCk7CisgICAgICAgIGxvYWRSZXF1ZXN0KG1fcGFyYW1ldGVy
cy5yZXF1ZXN0KTsKIH0KIAogUGluZ0xvYWQ6On5QaW5nTG9hZCgpCiB7CisgICAgaWYgKG1fcmVk
aXJlY3RIYW5kbGVyKQorICAgICAgICBtX3JlZGlyZWN0SGFuZGxlcih7IH0pOworCiAgICAgaWYg
KG1fdGFzaykgewogICAgICAgICBBU1NFUlQobV90YXNrLT5jbGllbnQoKSA9PSB0aGlzKTsKICAg
ICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOwpAQCAtNjIsMjIgKzY3LDUzIEBAIFBpbmdMb2Fk
Ojp+UGluZ0xvYWQoKQogICAgIH0KIH0KIAotdm9pZCBQaW5nTG9hZDo6c3RhcnROZXR3b3JrTG9h
ZCgpCit2b2lkIFBpbmdMb2FkOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZCIp
OwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3Jr
U2Vzc2lvbihtX3BhcmFtZXRlcnMuc2Vzc2lvbklEKSkgewotICAgICAgICBtX3Rhc2sgPSBOZXR3
b3JrRGF0YVRhc2s6OmNyZWF0ZSgqbmV0d29ya1Nlc3Npb24sICp0aGlzLCBtX3BhcmFtZXRlcnMp
OworICAgICAgICBhdXRvIGxvYWRQYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOworICAgICAgICBs
b2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgbV90YXNrID0gTmV0d29y
a0RhdGFUYXNrOjpjcmVhdGUoKm5ldHdvcmtTZXNzaW9uLCAqdGhpcywgV1RGTW92ZShsb2FkUGFy
YW1ldGVycykpOwogICAgICAgICBtX3Rhc2stPnJlc3VtZSgpOwogICAgIH0gZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCitTZWN1
cml0eU9yaWdpbiYgUGluZ0xvYWQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9vcmlnaW4gPyAqbV9vcmlnaW4gOiAqbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbjsKK30K
Kwordm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiIpOwotICAgIC8vIEZJ
WE1FOiBEbyBhIENPUlMgcHJlZmxpZ2h0IGlmIG5lY2Vzc2FyeS4KKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIHNob3VsZEZvbGxvd1JlZGly
ZWN0cz8gJWQiLCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKTsKKyAgICBpZiAo
IW1fcGFyYW1ldGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogRG8g
Q1NQIGNoZWNrLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5zdXJlIHRoZSBudW1iZXIgb2Yg
cmVkaXJlY3RzIGRvZXMgbm90IGV4Y2VlZCAyMC4KLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX3Bh
cmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzID8gcmVxdWVzdCA6IFJlc291cmNlUmVxdWVz
dCgpKTsKKyAgICBpZiAoIW5lZWRzQ09SU1ByZWZsaWdodChyZXF1ZXN0KSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGly
ZWN0IHJlcXVpcmVzIGEgQ09SUyBwcmVmbGlnaHQiKTsKKworICAgIC8vIFVzZSBhIHVuaXF1ZSBv
cmlnaW4gZm9yIHN1YnNlcXVlbnQgbG9hZHMgaWYgbmVlZGVkLgorICAgIC8vIGh0dHBzOi8vZmV0
Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWh0dHAtcmVkaXJlY3QtZmV0Y2ggKFN0ZXAgMTAp
LgorICAgIEFTU0VSVChtX3BhcmFtZXRlcnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNv
cnMpOworICAgIGlmICghc2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHJlZGlyZWN0UmVzcG9u
c2UudXJsKCkpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwocmVkaXJlY3RSZXNwb25z
ZS51cmwoKSwgcmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgaWYgKCFtX29yaWdpbiB8fCAhbV9v
cmlnaW4tPmlzVW5pcXVlKCkpCisgICAgICAgICAgICBtX29yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVVbmlxdWUoKTsKKyAgICB9CisKKyAgICBtX2lzU2FtZU9yaWdpblJlcXVlc3QgPSBm
YWxzZTsKKyAgICBtX3JlZGlyZWN0SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgLy8gTGV0J3MgZmV0Y2ggdGhlIHJlcXVlc3Qgd2l0aCB0aGUgb3JpZ2luYWwgaGVh
ZGVycyAoZXF1aXZhbGVudCB0byByZXF1ZXN0IGNsb25pbmcgc3BlY2lmaWVkIGJ5IGZldGNoIGFs
Z29yaXRobSkuCisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGRzKG1fcGFyYW1ldGVycy5y
ZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSk7CisKKyAgICBkb0NPUlNQcmVmbGlnaHQocmVxdWVz
dCk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtODcsOSArMTIzLDkgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXAKICAg
ICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0
d29ya1Nlc3Npb24oUmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VO
ZXR3b3JrU2Vzc2lvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbiIpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uIC0gaHR0cFN0
YXR1c0NvZGU6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwogICAgIGRlbGV0ZSB0aGlzOwog
fQpAQCAtMTMzLDMwICsxNjksMzMgQEAgdm9pZCBQaW5nTG9hZDo6dGltZW91dFRpbWVyRmlyZWQo
KQogCiBib29sIFBpbmdMb2FkOjpuZWVkc0NPUlNQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmIChtX3BhcmFtZXRlcnMubW9kZSA9PSBGZXRj
aE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKLSAgICAgICAgQVNTRVJUKG1fcGFyYW1ldGVycy5zb3Vy
Y2VPcmlnaW4pOwotICAgICAgICByZXR1cm4gIW1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4tPmNh
blJlcXVlc3QocmVxdWVzdC51cmwoKSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobV9wYXJhbWV0ZXJzLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhbV9pc1NhbWVPcmlnaW5SZXF1ZXN0IHx8
ICFzZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSk7CiB9CiAKIHZvaWQg
UGluZ0xvYWQ6OmRvQ09SU1ByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0Iik7CiAgICAg
QVNTRVJUKCFtX2NvcnNQcmVmbGlnaHRDaGVja2VyKTsKLSAgICBBU1NFUlQobV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbik7CiAKICAgICBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlBhcmFt
ZXRlcnMgcGFyYW1ldGVycyA9IHsKICAgICAgICAgcmVxdWVzdCwKLSAgICAgICAgKm1fcGFyYW1l
dGVycy5zb3VyY2VPcmlnaW4sCisgICAgICAgIHNlY3VyaXR5T3JpZ2luKCksCiAgICAgICAgIG1f
cGFyYW1ldGVycy5zZXNzaW9uSUQsCiAgICAgICAgIG1fcGFyYW1ldGVycy5hbGxvd1N0b3JlZENy
ZWRlbnRpYWxzCiAgICAgfTsKICAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KFdURk1vdmUocGFyYW1ldGVycyks
IFt0aGlzXShOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3VsdCByZXN1bHQpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0IGNvbXBsZXRlLCBz
dWNjZXNzOiAlZCIsIHJlc3VsdCA9PSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OlJlc3Vs
dDo6U3VjY2Vzcyk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRvQ09SU1ByZWZs
aWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgcmVzdWx0ID09IE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6UmVzdWx0OjpTdWNjZXNzLCAhIW1fcmVkaXJlY3RI
YW5kbGVyKTsKKyAgICAgICAgYXV0byBjb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IFdURk1vdmUobV9j
b3JzUHJlZmxpZ2h0Q2hlY2tlcik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyOjpSZXN1bHQ6OlN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIG1fY29yc1By
ZWZsaWdodENoZWNrZXIgPSBudWxscHRyOwotICAgICAgICAgICAgc3RhcnROZXR3b3JrTG9hZCgp
OworICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGFjdHVhbFJlcXVlc3QgPSBjb3JzUHJlZmxp
Z2h0Q2hlY2tlci0+b3JpZ2luYWxSZXF1ZXN0KCk7CisgICAgICAgICAgICB1cGRhdGVSZXF1ZXN0
Rm9yQWNjZXNzQ29udHJvbChhY3R1YWxSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbigpLCBtX3BhcmFt
ZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CisgICAgICAgICAgICBpZiAoYXV0byByZWRp
cmVjdEhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVkaXJlY3RIYW5kbGVyLCBudWxscHRyKSkK
KyAgICAgICAgICAgICAgICByZWRpcmVjdEhhbmRsZXIoYWN0dWFsUmVxdWVzdCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9hZFJlcXVlc3QoYWN0dWFsUmVxdWVzdCk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggODg3MmQyZjRiYzI1NmFkMGNjYzg1
MmQwY2I5MmYxYjg0MWI3OGJjNC4uMDE0NDQ5Njg5MmU3Y2RjMGEzMmMxNGMzZTFlMGEwNDA0YTQy
YzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTEsMTQg
KzUxLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5ub3RTaG93VVJMKCkgZmluYWw7CiAgICAg
dm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBzdGFydE5ldHdvcmtMb2FkKCk7
CisgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBib29sIG5lZWRzQ09SU1ByZWZsaWdodChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBjb25zdDsKICAgICB2b2lkIGRvQ09SU1ByZWZsaWdodChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKKworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9y
aWdpbigpIGNvbnN0OwogICAgIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1f
cGFyYW1ldGVyczsKICAgICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2Vi
Q29yZTo6VGltZXIgbV90aW1lb3V0VGltZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcj4gbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOworICAgIGJvb2wgbV9pc1NhbWVPcmln
aW5SZXF1ZXN0OworICAgIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgbV9yZWRpcmVjdEhhbmRs
ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDZiMmIyYjRhNDBmZTM3OGNjOGYxYjg3YzEzZGY4ZGQ1NDkx
ZmZjZS4uNjliNzQ2MjYzZmJjZTYzNmVhYjAzNmUyZDMzYmQ2NmVkNDJlNjEyYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE3LTA4LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgW0JlYWNvbl1bTmV0d29ya1Nlc3Npb25dIFN1cHBvcnQgQ09SUy1wcmVmbGln
aHRpbmcgb24gcmVkaXJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzODYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzODAxMzcwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQWRkIGxheW91dCB0
ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVm
bGlnaHQtcmVkaXJlY3QtZmFpbHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVk
aXJlY3QtZnJvbS1jcm9zc29yaWdpbi10by1zYW1lb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qt
ZnJvbS1jcm9zc29yaWdpbi10by1zYW1lb3JpZ2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LXN1Y2Nlc3MtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZs
aWdodC1yZWRpcmVjdC1zdWNjZXNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2Jl
YWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5weToKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIGh0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMvcmVkaXJlY3QucHk6IEFkZGVkLgorICAg
ICAgICAobWFpbik6CisKIDIwMTctMDgtMDkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgV1BFIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LWFycmF5YnVm
ZmVydmlldy1mYWlsdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9j
b3JzLXByZWZsaWdodC1hcnJheWJ1ZmZlcnZpZXctZmFpbHVyZS5odG1sCmluZGV4IDczYzNiMmRk
ZjE0MjZlYjRhZWVmNjFmNzczMGUxMGU2NDM3NDUwZTguLmM4M2FjZjVlYWViZTNjNGZhMGY4YjU5
NWYzOTRiYTRmYjBmNGMyYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNv
bi9jb3JzL2NvcnMtcHJlZmxpZ2h0LWFycmF5YnVmZmVydmlldy1mYWlsdXJlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtYXJyYXlidWZm
ZXJ2aWV3LWZhaWx1cmUuaHRtbApAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlvbiBwb2xsUmVzdWx0
KHRlc3QsIGlkKSB7CiAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICBzdGVw
X3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4gewogICAgICAgZmV0Y2goY2hlY2tVcmwpLnRo
ZW4ocmVzcG9uc2UgPT4gewotICAgICAgICByZXNwb25zZS50ZXh0KCkudGhlbihib2R5ID0+IHsK
KyAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oYm9keSA9PiB7CiAgICAgICAgICAgcmVzb2x2
ZShib2R5KTsKICAgICAgICAgfSk7CiAgICAgICB9KTsKQEAgLTMzLDggKzMzLDcgQEAgZnVuY3Rp
b24gdGVzdENPUlNQcmVmbGlnaHRGYWlsdXJlKHdoYXQpIHsKIAogICBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odGVzdCkgewogICAgIGFzc2VydF90cnVlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRlc3RV
cmwsIHdoYXQpLCAiU2VuZEJlYWNvbiBTdWNjZWVkZWQiKTsKLSAgICByZXR1cm4gcG9sbFJlc3Vs
dCh0ZXN0LCBpZCkgLnRoZW4oanNvbiA9PiB7Ci0gICAgICByZXN1bHQgPSBKU09OLnBhcnNlKGpz
b24pOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihyZXN1bHQgPT4gewog
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAxLCAiUmVjZWl2ZWQgcHJl
ZmxpZ2h0IikKICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHRfcmVmZXJlcidd
LCBkb2N1bWVudC5VUkwsICJQcmVmbGlnaHQgcmVmZXJlciBoZWFkZXIiKQogICAgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZXF1ZXN0ZWRfbWV0aG9kJ10sICJQT1NUIiwgIlBy
ZWZsaWdodCByZXF1ZXN0ZWQgbWV0aG9kIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LWFycmF5YnVmZmVydmlldy1zdWNjZXNzLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1hcnJh
eWJ1ZmZlcnZpZXctc3VjY2Vzcy5odG1sCmluZGV4IGM3MTEzMTM5NGE5MWVlMTRjYWI5MTE0YmQ0
MTFhYTQyZTAyZTA5N2UuLjA4M2Y5MWI1ZmZhNDAyODM3NTI2MDk4YmNiZDZjYTYzY2FkZDhhOTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxp
Z2h0LWFycmF5YnVmZmVydmlldy1zdWNjZXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtYXJyYXlidWZmZXJ2aWV3LXN1Y2Nlc3MuaHRt
bApAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlvbiBwb2xsUmVzdWx0KHRlc3QsIGlkKSB7CiAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVw
X2Z1bmMoKCkgPT4gewogICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4gewot
ICAgICAgICByZXNwb25zZS50ZXh0KCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgcmVzcG9uc2Uu
anNvbigpLnRoZW4oYm9keSA9PiB7CiAgICAgICAgICAgcmVzb2x2ZShib2R5KTsKICAgICAgICAg
fSk7CiAgICAgICB9KTsKQEAgLTMzLDggKzMzLDcgQEAgZnVuY3Rpb24gdGVzdENPUlNQcmVmbGln
aHRTdWNjZXNzKHdoYXQpIHsKIAogICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAg
IGFzc2VydF90cnVlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRlc3RVcmwsIHdoYXQpLCAiU2VuZEJl
YWNvbiBTdWNjZWVkZWQiKTsKLSAgICByZXR1cm4gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgLnRoZW4o
anNvbiA9PiB7Ci0gICAgICByZXN1bHQgPSBKU09OLnBhcnNlKGpzb24pOworICAgIHJldHVybiBw
b2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihyZXN1bHQgPT4gewogICAgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHRbJ3ByZWZsaWdodCddLCAxLCAiUmVjZWl2ZWQgcHJlZmxpZ2h0IikKICAgICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHRfcmVmZXJlciddLCBkb2N1bWVudC5VUkwsICJQ
cmVmbGlnaHQgcmVmZXJlciBoZWFkZXIiKQogICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3By
ZWZsaWdodF9yZXF1ZXN0ZWRfbWV0aG9kJ10sICJQT1NUIiwgIlByZWZsaWdodCByZXF1ZXN0ZWQg
bWV0aG9kIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2Nv
cnMtcHJlZmxpZ2h0LWJsb2ItZmFpbHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVh
Y29uL2NvcnMvY29ycy1wcmVmbGlnaHQtYmxvYi1mYWlsdXJlLmh0bWwKaW5kZXggMDYxZmNkMmNk
ZDJkOWU4ZjUzYmZmYmQ1NzNmMTk5ZWViNTQ5YjVlZi4uNmVkYTlhM2RiY2EwN2Y0N2NkOWY0MzZl
ZGRjMzUyYWJjOTAyYjM4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2NvcnMvY29ycy1wcmVmbGlnaHQtYmxvYi1mYWlsdXJlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtYmxvYi1mYWlsdXJlLmh0bWwKQEAg
LTE4LDcgKzE4LDcgQEAgZnVuY3Rpb24gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgewogICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgc3RlcF90aW1lb3V0KHRlc3Quc3RlcF9mdW5j
KCgpID0+IHsKICAgICAgIGZldGNoKGNoZWNrVXJsKS50aGVuKHJlc3BvbnNlID0+IHsKLSAgICAg
ICAgcmVzcG9uc2UudGV4dCgpLnRoZW4oYm9keSA9PiB7CisgICAgICAgIHJlc3BvbnNlLmpzb24o
KS50aGVuKGJvZHkgPT4gewogICAgICAgICAgIHJlc29sdmUoYm9keSk7CiAgICAgICAgIH0pOwog
ICAgICAgfSk7CkBAIC0zMyw4ICszMyw3IEBAIGZ1bmN0aW9uIHRlc3RDT1JTUHJlZmxpZ2h0RmFp
bHVyZSh3aGF0KSB7CiAKICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBhc3Nl
cnRfdHJ1ZShuYXZpZ2F0b3Iuc2VuZEJlYWNvbih0ZXN0VXJsLCB3aGF0KSwgIlNlbmRCZWFjb24g
U3VjY2VlZGVkIik7Ci0gICAgcmV0dXJuIHBvbGxSZXN1bHQodGVzdCwgaWQpIC50aGVuKGpzb24g
PT4gewotICAgICAgcmVzdWx0ID0gSlNPTi5wYXJzZShqc29uKTsKKyAgICByZXR1cm4gcG9sbFJl
c3VsdCh0ZXN0LCBpZCkgLnRoZW4ocmVzdWx0ID0+IHsKICAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0WydwcmVmbGlnaHQnXSwgMSwgIlJlY2VpdmVkIHByZWZsaWdodCIpCiAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0X3JlZmVyZXInXSwgZG9jdW1lbnQuVVJMLCAiUHJlZmxp
Z2h0IHJlZmVyZXIgaGVhZGVyIikKICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGln
aHRfcmVxdWVzdGVkX21ldGhvZCddLCAiUE9TVCIsICJQcmVmbGlnaHQgcmVxdWVzdGVkIG1ldGhv
ZCIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXBy
ZWZsaWdodC1ibG9iLXN1Y2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9j
b3JzL2NvcnMtcHJlZmxpZ2h0LWJsb2Itc3VjY2Vzcy5odG1sCmluZGV4IGEwZDkwOTI3OWNmYjAz
ZTQ0YWM4YTM3ZGVlZDY0ZDZhM2I3ODhlMjkuLmY2NGIzYjdjNTdhZTA4MmRlNjI1NjA4Y2UzMDdl
NzYyZmVjZWIzYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3Jz
L2NvcnMtcHJlZmxpZ2h0LWJsb2Itc3VjY2Vzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LWJsb2Itc3VjY2Vzcy5odG1sCkBAIC0xOCw3
ICsxOCw3IEBAIGZ1bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwgaWQpIHsKICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gewogICAgIHN0ZXBfdGltZW91dCh0ZXN0LnN0ZXBfZnVuYygoKSA9
PiB7CiAgICAgICBmZXRjaChjaGVja1VybCkudGhlbihyZXNwb25zZSA9PiB7Ci0gICAgICAgIHJl
c3BvbnNlLnRleHQoKS50aGVuKGJvZHkgPT4geworICAgICAgICByZXNwb25zZS5qc29uKCkudGhl
bihib2R5ID0+IHsKICAgICAgICAgICByZXNvbHZlKGJvZHkpOwogICAgICAgICB9KTsKICAgICAg
IH0pOwpAQCAtMzMsOCArMzMsNyBAQCBmdW5jdGlvbiB0ZXN0Q09SU1ByZWZsaWdodFN1Y2Nlc3Mo
d2hhdCkgewogCiAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgYXNzZXJ0X3Ry
dWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVhY29uIFN1Y2Nl
ZWRlZCIpOwotICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihqc29uID0+IHsK
LSAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoanNvbik7CisgICAgcmV0dXJuIHBvbGxSZXN1bHQo
dGVzdCwgaWQpIC50aGVuKHJlc3VsdCA9PiB7CiAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsn
cHJlZmxpZ2h0J10sIDEsICJSZWNlaXZlZCBwcmVmbGlnaHQiKQogICAgICAgYXNzZXJ0X2VxdWFs
cyhyZXN1bHRbJ3ByZWZsaWdodF9yZWZlcmVyJ10sIGRvY3VtZW50LlVSTCwgIlByZWZsaWdodCBy
ZWZlcmVyIGhlYWRlciIpCiAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0X3Jl
cXVlc3RlZF9tZXRob2QnXSwgIlBPU1QiLCAiUHJlZmxpZ2h0IHJlcXVlc3RlZCBtZXRob2QiKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGln
aHQtY29va2llLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXBy
ZWZsaWdodC1jb29raWUuaHRtbAppbmRleCBiNzk1N2VlZGQyYWYyOTZjMzNkNmZmYjk0NDllMmIy
NWU0MmE2MDU1Li4zZDQ5YzhhYWUwMmUxOGZjMWNmNWE3NWJiNGEzNTEzMjliZTkxYWRlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1j
b29raWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXBy
ZWZsaWdodC1jb29raWUuaHRtbApAQCAtMjEsNyArMjEsNyBAQCBmdW5jdGlvbiBwb2xsUmVzdWx0
KHRlc3QsIGlkKSB7CiAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICBzdGVw
X3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4gewogICAgICAgZmV0Y2goY2hlY2tVcmwpLnRo
ZW4ocmVzcG9uc2UgPT4gewotICAgICAgICByZXNwb25zZS50ZXh0KCkudGhlbihib2R5ID0+IHsK
KyAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oYm9keSA9PiB7CiAgICAgICAgICAgcmVzb2x2
ZShib2R5KTsKICAgICAgICAgfSk7CiAgICAgICB9KTsKQEAgLTQ2LDggKzQ2LDcgQEAgZnVuY3Rp
b24gdGVzdENPUlNQcmVmbGlnaHRTdWNjZXNzV2l0aENvb2tpZSh3aGF0KSB7CiAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgcmV0dXJuIGZldGNoQ09SU0Nvb2tpZSh0ZXN0QmFz
ZSwgInRlc3RDb29raWUiLCAiLyIpLnRoZW4oKCkgPT4gewogICAgICAgYXNzZXJ0X3RydWUobmF2
aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVhY29uIFN1Y2NlZWRlZCIp
OwotICAgICAgcmV0dXJuIHBvbGxSZXN1bHQodGVzdCwgaWQpLnRoZW4oanNvbiA9PiB7Ci0gICAg
ICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoanNvbik7CisgICAgICByZXR1cm4gcG9sbFJlc3VsdCh0
ZXN0LCBpZCkudGhlbihyZXN1bHQgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsn
cHJlZmxpZ2h0J10sIDEsICJSZWNlaXZlZCBwcmVmbGlnaHQiKQogICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdFsncHJlZmxpZ2h0X2Nvb2tpZV9oZWFkZXInXSwgIiIsICJQcmVmbGlnaHQgY29v
a2llIGhlYWRlciIpCiAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydiZWFjb24nXSwgMSwg
IlJlY2VpdmVkIGJlYWNvbiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZh
aWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExOTMyZjcyZjZiMDY5OWE1NGM5ZTdlZDky
ZjJiN2E2Yzk0OGNkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9i
ZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBDT1JTIHByZWZsaWdodCBmYWlsdXJlIHRlc3QgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0
LXJlZGlyZWN0LWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3Jz
L2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZhaWx1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTYzZGEw
YWY0ZTVjNjIyYTcwZjI2MjhjZDgwMWMyZTk0MWRiZTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZmFp
bHVyZS5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxo
ZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+U2VuZEJlYWNvbiBD
T1JTIHByZWZsaWdodCBvbiByZWRpcmVjdCB0ZXN0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+
CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgordmFyIFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisK
K2Z1bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VS
Q0VTX0RJUiArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVw
X2Z1bmMoKCkgPT4geworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4gewor
ICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZl
KGJvZHkpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAg
dmFyIHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09V
UkNFU19ESVI7CisgIHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29k
ZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0w
JmNtZD1wdXQmaWQ9IiArIGlkKTsKKworICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0
aGUgb25seSBvbmVzIHRoYXQgbWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVy
bCA9IFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZsb2Nh
dGlvbj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAg
YXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVh
Y29uIFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihy
ZXN1bHQgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAxLCAi
UmVjZWl2ZWQgcHJlZmxpZ2h0IikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGln
aHRfcmVmZXJlciddLCBkb2N1bWVudC5VUkwsICJQcmVmbGlnaHQgcmVmZXJlciBoZWFkZXIiKQor
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZXF1ZXN0ZWRfbWV0aG9kJ10s
ICJQT1NUIiwgIlByZWZsaWdodCByZXF1ZXN0ZWQgbWV0aG9kIikKKyAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0WydiZWFjb24nXSwgMCwgIkRpZCBub3QgcmVjZWl2ZSBiZWFjb24iKQorICAgIH0p
OworICB9LCAiQ09SUyBwcmVmbGlnaHQgZmFpbHVyZSB0ZXN0Iik7Cit9CisKK2xldCBibG9iID0g
bmV3IEJsb2IoWyIxMjMiXSwge3R5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSk7Cit0
ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2VzcyhibG9iKTsKKyAgICA8L3NjcmlwdD4KKyAg
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3QtZnJvbS1jcm9zc29yaWdpbi10by1zYW1lb3Jp
Z2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMt
cHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdpbi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTU0NDk4MjY5ZjVkNGUwYzk0NTRmMjBlODExNThlZDk5NWZlZDU5
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2Nv
cnMtcHJlZmxpZ2h0LXJlZGlyZWN0LWZyb20tY3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdpbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ09SUyBwcmVmbGlnaHQgc3VjY2VzcyB0
ZXN0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3Jz
LXByZWZsaWdodC1yZWRpcmVjdC1mcm9tLWNyb3Nzb3JpZ2luLXRvLXNhbWVvcmlnaW4uaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0
LWZyb20tY3Jvc3NvcmlnaW4tdG8tc2FtZW9yaWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMTA5M2Y1
OGMzZTVmMTM0N2I2MDIyYTk5NWFkMjFjYjVhMjZmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1mcm9t
LWNyb3Nzb3JpZ2luLXRvLXNhbWVvcmlnaW4uaHRtbApAQCAtMCwwICsxLDU0IEBACis8IWRvY3R5
cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgPHRpdGxlPlNlbmRCZWFjb24gQ09SUyBwcmVmbGlnaHQgb24gcmVkaXJlY3QgdGVzdCBmcm9t
IGNyb3NzIG9yaWdpbiB0byBzYW1lIG9yaWdpbjwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9L3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5Pgor
ICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KK3ZhciBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy8iOworCitm
dW5jdGlvbiBwb2xsUmVzdWx0KHRlc3QsIGlkKSB7CisgIHZhciBjaGVja1VybCA9IFJFU09VUkNF
U19ESVIgKyAiYmVhY29uLXByZWZsaWdodC5weT9jbWQ9Z2V0JmlkPSIgKyBpZDsKKworICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgc3RlcF90aW1lb3V0KHRlc3Quc3RlcF9m
dW5jKCgpID0+IHsKKyAgICAgIGZldGNoKGNoZWNrVXJsKS50aGVuKHJlc3BvbnNlID0+IHsKKyAg
ICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oYm9keSA9PiB7CisgICAgICAgICAgcmVzb2x2ZShi
b2R5KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KSwgMTAwMCk7CisgIH0pOworfQor
CitmdW5jdGlvbiB0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2Vzcyh3aGF0KSB7CisgIHZh
ciB0ZXN0QmFzZSA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBSRVNPVVJD
RVNfRElSOworICB2YXIgaWQgPSBzZWxmLnRva2VuKCk7CisgIHZhciB0YXJnZXQgPSBlbmNvZGVV
UklDb21wb25lbnQoZ2V0X2hvc3RfaW5mbygpLkhUVFBfT1JJR0lOICsgUkVTT1VSQ0VTX0RJUiAr
ICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9IiArIGlkKTsKKwor
ICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgbWFpbnRh
aW4gdGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVybCA9IHRlc3RCYXNlICsgInJlZGlyZWN0
LnB5P3JlZGlyZWN0X3N0YXR1cz0zMDcmbG9jYXRpb249IiArIHRhcmdldDsKKworICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIGFzc2VydF90cnVlKG5hdmlnYXRvci5zZW5kQmVh
Y29uKHRlc3RVcmwsIHdoYXQpLCAiU2VuZEJlYWNvbiBTdWNjZWVkZWQiKTsKKyAgICByZXR1cm4g
cG9sbFJlc3VsdCh0ZXN0LCBpZCkgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0WydwcmVmbGlnaHQnXSwgMSwgIlJlY2VpdmVkIHByZWZsaWdodCIpCisgICAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0X3JlZmVyZXInXSwgZG9jdW1lbnQuVVJMLCAi
UHJlZmxpZ2h0IHJlZmVyZXIgaGVhZGVyIikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0Wydw
cmVmbGlnaHRfcmVxdWVzdGVkX21ldGhvZCddLCAiUE9TVCIsICJQcmVmbGlnaHQgcmVxdWVzdGVk
IG1ldGhvZCIpCisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0X29yaWdpbidd
LCAibnVsbCIsICJSZWNlaXZlZCBiZWFjb24iKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRb
J2JlYWNvbiddLCAxLCAiUmVjZWl2ZWQgYmVhY29uIikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0WydiZWFjb25fb3JpZ2luJ10sICJudWxsIiwgIlJlY2VpdmVkIGJlYWNvbiIpCisgICAgfSk7
CisgIH0sICJDT1JTIHByZWZsaWdodCBzdWNjZXNzIHRlc3QiKTsKK30KKworbGV0IGJsb2IgPSBu
ZXcgQmxvYihbIjEyMyJdLCB7dHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9KTsKK3Rl
c3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKGJsb2IpOworICAgIDwvc2NyaXB0PgorICA8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24v
Y29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZGlyZWN0LXN1Y2Nl
c3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NDQ5ODI2OWY1ZDRlMGM5NDU0ZjIwZTgxMTU4
ZWQ5OTVmZWQ1OTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vY29ycy9jb3JzLXByZWZsaWdodC1yZWRpcmVjdC1zdWNjZXNzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKKworUEFTUyBDT1JTIHByZWZsaWdodCBzdWNjZXNzIHRlc3QgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJl
ZGlyZWN0LXN1Y2Nlc3MuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb3JzL2Nv
cnMtcHJlZmxpZ2h0LXJlZGlyZWN0LXN1Y2Nlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDdmZWNkYWNh
M2MxNzE1MDNlOWY0NzhkYzQ2YTY3MGY1MDhmNjczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVkaXJlY3Qtc3VjY2Vz
cy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+U2VuZEJlYWNvbiBDT1JT
IHByZWZsaWdodCBvbiByZWRpcmVjdCB0ZXN0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgordmFyIFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisKK2Z1
bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VT
X0RJUiArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1
bmMoKCkgPT4geworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAg
ICAgICByZXNwb25zZS5qc29uKCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJv
ZHkpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAgdmFy
IHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09VUkNF
U19ESVI7CisgIHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29kZVVS
SUNvbXBvbmVudCh0ZXN0QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNt
ZD1wdXQmaWQ9IiArIGlkKTsKKworICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUg
b25seSBvbmVzIHRoYXQgbWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVybCA9
IFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZsb2NhdGlv
bj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgYXNz
ZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVhY29u
IFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihyZXN1
bHQgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAxLCAiUmVj
ZWl2ZWQgcHJlZmxpZ2h0IikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHRf
cmVmZXJlciddLCBkb2N1bWVudC5VUkwsICJQcmVmbGlnaHQgcmVmZXJlciBoZWFkZXIiKQorICAg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodF9yZXF1ZXN0ZWRfbWV0aG9kJ10sICJQ
T1NUIiwgIlByZWZsaWdodCByZXF1ZXN0ZWQgbWV0aG9kIikKKyAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0WydiZWFjb24nXSwgMSwgIlJlY2VpdmVkIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJD
T1JTIHByZWZsaWdodCBzdWNjZXNzIHRlc3QiKTsKK30KKworbGV0IGJsb2IgPSBuZXcgQmxvYihb
IjEyMyJdLCB7dHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9KTsKK3Rlc3RDT1JTUHJl
ZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKGJsb2IpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2Vz
L2JlYWNvbi1wcmVmbGlnaHQucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3Vy
Y2VzL2JlYWNvbi1wcmVmbGlnaHQucHkKaW5kZXggY2NlNGNkMTE0M2JlMDk4ZGZhZjRiOGUyZTQz
MTU4N2JmNzgyNzE0YS4uOWU2NGU3NmZmZDZlM2I5Y2E5YTFhNWMwMzJkNjJlNTY1ZDVkNTg0OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24t
cHJlZmxpZ2h0LnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMv
YmVhY29uLXByZWZsaWdodC5weQpAQCAtMzUsMTEgKzM1LDEzIEBAIGRlZiBtYWluKHJlcXVlc3Qs
IHJlc3BvbnNlKToKICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X3JlcXVlc3RlZF9oZWFk
ZXJzJ10gPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRl
cnMiLCAiIikKICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X2Nvb2tpZV9oZWFkZXInXSA9
IHJlcXVlc3QuaGVhZGVycy5nZXQoIkNvb2tpZSIsICIiKTsKICAgICAgIHN0YXNoZWRfZGF0YVsn
cHJlZmxpZ2h0X3JlZmVyZXInXSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoIlJlZmVyZXIiLCAiIikK
KyAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0X29yaWdpbiddID0gcmVxdWVzdC5oZWFkZXJz
LmdldCgiT3JpZ2luIiwgIiIpCiAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQodGVzdF9p
ZCwgc3Rhc2hlZF9kYXRhKQogICAgICAgcmV0dXJuIHJlc3BvbmRUb0NPUlNQcmVmbGlnaHQocmVx
dWVzdCwgcmVzcG9uc2UpCiAgICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAiUE9TVCI6CiAgICAg
ICBzdGFzaGVkX2RhdGFbJ2JlYWNvbiddID0gMTsKICAgICAgIHN0YXNoZWRfZGF0YVsnYmVhY29u
X2Nvb2tpZV9oZWFkZXInXSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoIkNvb2tpZSIsICIiKQorICAg
ICAgc3Rhc2hlZF9kYXRhWydiZWFjb25fb3JpZ2luJ10gPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJP
cmlnaW4iLCAiIikKICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dCh0ZXN0X2lkLCBzdGFz
aGVkX2RhdGEpCiAgICAgcmV0dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L3BsYWluIildLCAi
IgogICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMv
cmVkaXJlY3QucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2VzL3JlZGly
ZWN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM5YzU3NGM0MDJmMDJhOWI1Yzk4ZDllZGZjNDY0NDI2ZTU3YWFj
NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3Vy
Y2VzL3JlZGlyZWN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKK2Zyb20gdXJsbGliIGltcG9ydCB1cmxl
bmNvZGUKK2Zyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlCisKK2RlZiBtYWluKHJlcXVlc3Qs
IHJlc3BvbnNlKToKKyAgICBzdGFzaGVkX2RhdGEgPSB7J2NvdW50JzogMCwgJ3ByZWZsaWdodCc6
ICIwIn0KKyAgICBzdGF0dXMgPSAzMDIKKyAgICBoZWFkZXJzID0gWygiQ29udGVudC1UeXBlIiwg
InRleHQvcGxhaW4iKSwKKyAgICAgICAgICAgICAgICgiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNo
ZSIpLAorICAgICAgICAgICAgICAgKCJQcmFnbWEiLCAibm8tY2FjaGUiKSwKKyAgICAgICAgICAg
ICAgICgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMiLCAidHJ1ZSIpXQorICAgIGhl
YWRlcnMuYXBwZW5kKCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgcmVxdWVzdC5oZWFk
ZXJzLmdldCgiT3JpZ2luIiwgIioiKSkpCisgICAgdG9rZW4gPSBOb25lCisKKyAgICBpZiAidG9r
ZW4iIGluIHJlcXVlc3QuR0VUOgorICAgICAgICB0b2tlbiA9IHJlcXVlc3QuR0VULmZpcnN0KCJ0
b2tlbiIpCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRva2VuKQor
ICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgc3Rhc2hlZF9kYXRhID0gZGF0YQorCisgICAg
aWYgcmVxdWVzdC5tZXRob2QgPT0gIk9QVElPTlMiOgorICAgICAgICByZXF1ZXN0ZWRfbWV0aG9k
ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2QiLCBO
b25lKQorICAgICAgICBoZWFkZXJzLmFwcGVuZCgoIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhv
ZHMiLCByZXF1ZXN0ZWRfbWV0aG9kKSkKKyAgICAgICAgcmVxdWVzdGVkX2hlYWRlcnMgPSByZXF1
ZXN0LmhlYWRlcnMuZ2V0KCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMiLCBOb25lKQor
ICAgICAgICBoZWFkZXJzLmFwcGVuZCgoIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCBy
ZXF1ZXN0ZWRfaGVhZGVycykpCisgICAgICAgIHN0YXNoZWRfZGF0YVsncHJlZmxpZ2h0J10gPSAi
MSIKKyAgICAgICAgI1ByZWZsaWdodCBpcyBub3QgcmVkaXJlY3RlZDogcmV0dXJuIDIwMAorICAg
ICAgICBpZiBub3QgInJlZGlyZWN0X3ByZWZsaWdodCIgaW4gcmVxdWVzdC5HRVQ6CisgICAgICAg
ICAgICBpZiB0b2tlbjoKKyAgICAgICAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHJl
cXVlc3QuR0VULmZpcnN0KCJ0b2tlbiIpLCBzdGFzaGVkX2RhdGEpCisgICAgICAgICAgICByZXR1
cm4gMjAwLCBoZWFkZXJzLCAiIgorCisgICAgaWYgInJlZGlyZWN0X3N0YXR1cyIgaW4gcmVxdWVz
dC5HRVQ6CisgICAgICAgIHN0YXR1cyA9IGludChyZXF1ZXN0LkdFVFsncmVkaXJlY3Rfc3RhdHVz
J10pCisKKyAgICBzdGFzaGVkX2RhdGFbJ2NvdW50J10gKz0gMQorCisgICAgaWYgImxvY2F0aW9u
IiBpbiByZXF1ZXN0LkdFVDoKKyAgICAgICAgdXJsID0gcmVxdWVzdC5HRVRbJ2xvY2F0aW9uJ10K
KyAgICAgICAgc2NoZW1lID0gdXJscGFyc2UodXJsKS5zY2hlbWUKKyAgICAgICAgaWYgc2NoZW1l
ID09ICIiIG9yIHNjaGVtZSA9PSAiaHR0cCIgb3Igc2NoZW1lID09ICJodHRwcyI6CisgICAgICAg
ICAgICB1cmwgKz0gIiYiIGlmICc/JyBpbiB1cmwgZWxzZSAiPyIKKyAgICAgICAgICAgICNrZWVw
IHVybCBwYXJhbWV0ZXJzIGluIGxvY2F0aW9uCisgICAgICAgICAgICB1cmxfcGFyYW1ldGVycyA9
IHt9CisgICAgICAgICAgICBmb3IgaXRlbSBpbiByZXF1ZXN0LkdFVC5pdGVtcygpOgorICAgICAg
ICAgICAgICAgIHVybF9wYXJhbWV0ZXJzW2l0ZW1bMF1dID0gaXRlbVsxXVswXQorICAgICAgICAg
ICAgdXJsICs9IHVybGVuY29kZSh1cmxfcGFyYW1ldGVycykKKyAgICAgICAgICAgICNtYWtlIHN1
cmUgbG9jYXRpb24gY2hhbmdlcyBkdXJpbmcgcmVkaXJlY3Rpb24gbG9vcAorICAgICAgICAgICAg
dXJsICs9ICImY291bnQ9IiArIHN0cihzdGFzaGVkX2RhdGFbJ2NvdW50J10pCisgICAgICAgIGhl
YWRlcnMuYXBwZW5kKCgiTG9jYXRpb24iLCB1cmwpKQorCisgICAgaWYgInJlZGlyZWN0X3JlZmVy
cmVycG9saWN5IiBpbiByZXF1ZXN0LkdFVDoKKyAgICAgICAgaGVhZGVycy5hcHBlbmQoKCJSZWZl
cnJlci1Qb2xpY3kiLCByZXF1ZXN0LkdFVFsncmVkaXJlY3RfcmVmZXJyZXJwb2xpY3knXSkpCisK
KyAgICBpZiB0b2tlbjoKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHJlcXVlc3Qu
R0VULmZpcnN0KCJ0b2tlbiIpLCBzdGFzaGVkX2RhdGEpCisgICAgICAgIGlmICJtYXhfY291bnQi
IGluIHJlcXVlc3QuR0VUOgorICAgICAgICAgICAgbWF4X2NvdW50ID0gIGludChyZXF1ZXN0LkdF
VFsnbWF4X2NvdW50J10pCisgICAgICAgICAgICAjc3RvcCByZWRpcmVjdGluZyBhbmQgcmV0dXJu
IGNvdW50CisgICAgICAgICAgICBpZiBzdGFzaGVkX2RhdGFbJ2NvdW50J10gPiBtYXhfY291bnQ6
CisgICAgICAgICAgICAgICAgIyAtMSBiZWNhdXNlIHRoZSBsYXN0IGlzIG5vdCBhIHJlZGlyZWN0
aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihzdGFzaGVkX2RhdGFbJ2NvdW50J10gLSAx
KQorCisgICAgcmV0dXJuIHN0YXR1cywgaGVhZGVycywgIiIK
</data>

          </attachment>
      

    </bug>

</bugzilla>