<?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>202285</bug_id>
          
          <creation_ts>2019-09-26 14:00:12 -0700</creation_ts>
          <short_desc>Remove unused WebProcessPool::setCanHandleHTTPSServerTrustEvaluation</short_desc>
          <delta_ts>2019-11-22 17:13:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1574619</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-26 14:00:12 -0700</bug_when>
    <thetext>Remove unused WebProcessPool::setCanHandleHTTPSServerTrustEvaluation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574620</commentid>
    <comment_count>1</comment_count>
      <attachid>379678</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-26 14:06:24 -0700</bug_when>
    <thetext>Created attachment 379678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574644</commentid>
    <comment_count>2</comment_count>
      <attachid>379684</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-26 14:59:13 -0700</bug_when>
    <thetext>Created attachment 379684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574741</commentid>
    <comment_count>3</comment_count>
      <attachid>379684</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-26 23:14:21 -0700</bug_when>
    <thetext>Comment on attachment 379684
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:580
&gt; +            auto decisionHandler = makeBlockPtr([_session = makeWeakPtr(_session.get()), completionHandler = makeBlockPtr(completionHandler), taskIdentifier, networkDataTask = RefPtr&lt;NetworkDataTaskCocoa&gt;(networkDataTask)](NSURLAuthenticationChallenge *challenge, OSStatus trustResult) mutable {

makeRefPtr(networkDataTask)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574802</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-27 07:34:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/r250422</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574803</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-27 07:35:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/55781362&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592975</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-22 13:25:24 -0800</bug_when>
    <thetext>Reverted in http://trac.webkit.org/r252796
Needs more investigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593109</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-22 17:13:34 -0800</bug_when>
    <thetext>Relanded in http://trac.webkit.org/r252819</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379678</attachid>
            <date>2019-09-26 14:06:24 -0700</date>
            <delta_ts>2019-09-26 14:59:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202285-20190926140623.patch</filename>
            <type>text/plain</type>
            <size>32724</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAzNzcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA5LTI2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjI4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBTUEkg
dG8gc2V0IHRoaXMgd2FzIGRlcHJlY2F0ZWQgaW4gcjI1MDM3NyB3aXRoIGEgcmVwbGFjZW1lbnQg
dGhhdCB3YXMgYWRvcHRlZCBpbiByZGFyOi8vcHJvYmxlbS81NTczMTEzNQorICAgICAgICBJIHJl
bW92ZWQgYSBsYXlvdXQgdGVzdCB1c2luZyB0aGUgb2xkIFNQSSBhbmQgcmVwbGFjZWQgaXQgd2l0
aCBhIG1vcmUgcHJlY2lzZSBBUEkgdGVzdCB2ZXJpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBu
ZXcgU1BJCisgICAgICAgIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBvZiBOU1VS
TFNlc3Npb24ncyBfc3RyaWN0VHJ1c3RFdmFsdWF0ZTpxdWV1ZTpjb21wbGV0aW9uSGFuZGxlcjoK
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0
RXZhbHVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6
ZGlkUmVjZWl2ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKGNhbk5T
VVJMU2Vzc2lvblRydXN0RXZhbHVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRs
ZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAxOS0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCByZXBsYWNlbWVudCBTUEkgb24g
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gZm9yIGVuYWJsaW5nIHNwZWN1bGF0aXZl
IGNhY2hlIHZhbGlkYXRpb24gYW5kIElQQy1mcmVlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjUwMzUxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw4ICszMDcsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1ByCiAKICAgICBzZXRDYWNoZU1vZGVsKHBh
cmFtZXRlcnMuY2FjaGVNb2RlbCwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5KTsKIAotICAg
IHNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHBhcmFtZXRlcnMuY2FuSGFu
ZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOwotCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hv
dWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIG1fc2hvdWxkVXNlVGVzdGlu
Z05ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHRydWU7CiAgICAgICAgIG1fZGVmYXVsdE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IG5ld1Rlc3RpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpOwpAQCAtMTk5NiwxMSArMTk5NCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbCB2YWx1ZSkKLXsKLSAg
ICBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gdmFsdWU7Ci19Ci0KIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBj
YWxsYmFja0lEKQogewogICAgIFN0YXRpc3RpY3NEYXRhIGRhdGE7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyNTAzNTAp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3OCw4ICsxNzgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnN1cmVTZXNz
aW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICNl
bmRpZgogCi0gICAgYm9vbCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb247IH0KLQog
ICAgIHZvaWQgcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOwogICAgIHZvaWQgcHJvY2Vz
c1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kKCk7CkBAIC00MTEsNyArNDA5LDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsLCBTdHJpbmcg
b3ZlcnJpZGVDYWNoZVN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hU
VFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IFN0cmluZyYgaG9zdCk7Ci0gICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0
RXZhbHVhdGlvbihib29sKTsKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKHVp
bnQzMl90IGNhY2hlc1RvQ2xlYXIpOwogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNh
dGVGb3JXZWJTb2NrZXQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTQ3
Nyw3ICs0NzQsNiBAQCBwcml2YXRlOgogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgQ2Fj
aGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVz
c3VyZUhhbmRsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaXNrQ2FjaGVJc0Rpc2FibGVkRm9y
VGVzdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RF
dmFsdWF0aW9uIHsgdHJ1ZSB9OwogICAgIFN0cmluZyBtX3VpUHJvY2Vzc0J1bmRsZUlkZW50aWZp
ZXI7CiAgICAgRG93bmxvYWRNYW5hZ2VyIG1fZG93bmxvYWRNYW5hZ2VyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDI1MDM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3
LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIFN5bmNB
bGxDb29raWVzKCkKIAogICAgIEFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGUsIFN0cmluZyBob3N0KQotICAgIFNl
dENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgdmFsdWUpCiAgICAgCiAg
ICAgR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjUwMzUx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6Ok5ldHdvcgogdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7Ci0gICAgZW5jb2RlciA8PCBjYW5IYW5k
bGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKICNlbmRpZgpAQCAtOTcsOCArOTYsNiBA
QCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiB7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNhY2hlTW9kZWwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoTkVU
V09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24pKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjUwMzUx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIHN0cnVjdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBD
OjpEZWNvZGVyJiwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAogICAgIENh
Y2hlTW9kZWwgY2FjaGVNb2RlbCB7IENhY2hlTW9kZWw6OkRvY3VtZW50Vmlld2VyIH07Ci0gICAg
Ym9vbCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiB7IHRydWUgfTsKIAogI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBib29s
IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsgZmFsc2Ug
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1MDM3NykKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTM4LDExICs1MzgsNiBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3NpCiB9CiAKICNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNU
UlVTVEVWQUxVQVRFKQotc3RhdGljIGJvb2wgY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0ZSgp
Ci17Ci0gICAgcmV0dXJuIFtOU1VSTFNlc3Npb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfc3RyaWN0VHJ1c3RFdmFsdWF0ZTogcXVldWU6IGNvbXBsZXRpb25IYW5kbGVyOildOwotfQot
CiBzdGF0aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3Jr
U2Vzc2lvbkNvY29hICpzZXNzaW9uLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFs
bGVuZ2UsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgc2Vzc2lvbi0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdGFza0lk
ZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0gcmV0YWluUHRyKGNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2Uuc2VydmVyVHJ1c3QpXSAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50
aWFsKSBtdXRhYmxlIHsKQEAgLTU3OCwyNSArNTczLDI0IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlh
bCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVz
dF0pOwogCiAgICAgICAgIC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0
Zm9ybS1sZXZlbCBpZiByZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFuZCB0byB1
c2UgQVRTIGRlZmF1bHRzLgotICAgICAgICBpZiAoIV9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vzcygp
LmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKCkgfHwgX3Nlc3Npb24tPmZhc3RT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKF9zZXNzaW9uLT5m
YXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCgpKSB7CiAjaWYgSEFWRShDRk5FVFdPUktf
TlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkKLSAgICAgICAgICAgIGlmIChjYW5OU1VS
TFNlc3Npb25UcnVzdEV2YWx1YXRlKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvKiBuZXR3b3Jr
RGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza107Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKG5ldHdvcmtEYXRhVGFzayk7Ci0gICAgICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW19zZXNzaW9uID0gbWFrZVdlYWtQdHIoX3Nlc3Npb24uZ2V0KCkp
LCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHRh
c2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sgPSBSZWZQdHI8TmV0d29ya0RhdGFUYXNrQ29j
b2E+KG5ldHdvcmtEYXRhVGFzayldKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAg
ICBhdXRvIHRhc2sgPSBXVEZNb3ZlKG5ldHdvcmtEYXRhVGFzayk7Ci0gICAgICAgICAgICAgICAg
ICAgIGF1dG8qIHNlc3Npb24gPSBfc2Vzc2lvbi5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHRydXN0UmVzdWx0ID09IG5vRXJyIHx8ICFzZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9y
bURlZmF1bHRIYW5kbGluZywgbmlsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKHNlc3Npb24sIGNoYWxsZW5nZSwgdGFza0lkZW50aWZpZXIsIHRhc2su
Z2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICBbTlNVUkxTZXNzaW9uIF9zdHJpY3RUcnVzdEV2YWx1YXRlOmNoYWxs
ZW5nZSBxdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdLnVuZGVybHlpbmdRdWV1ZSBj
b21wbGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgYXV0byogbmV0d29y
a0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdOworICAgICAgICAgICAgQVNTRVJU
KG5ldHdvcmtEYXRhVGFzayk7CisgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihbX3Nlc3Npb24gPSBtYWtlV2Vha1B0cihfc2Vzc2lvbi5nZXQoKSksIGNvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFza0lkZW50
aWZpZXIsIG5ldHdvcmtEYXRhVGFzayA9IFJlZlB0cjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4obmV0
d29ya0RhdGFUYXNrKV0oTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBP
U1N0YXR1cyB0cnVzdFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byB0YXNr
ID0gV1RGTW92ZShuZXR3b3JrRGF0YVRhc2spOworICAgICAgICAgICAgICAgIGF1dG8qIHNlc3Np
b24gPSBfc2Vzc2lvbi5nZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAodHJ1c3RSZXN1bHQgPT0g
bm9FcnIgfHwgIXNlc3Npb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihzZXNzaW9uLCBjaGFsbGVuZ2Us
IHRhc2tJZGVudGlmaWVyLCB0YXNrLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIFtOU1VSTFNlc3Npb24gX3N0cmljdFRydXN0
RXZhbHVhdGU6Y2hhbGxlbmdlIHF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV0udW5k
ZXJseWluZ1F1ZXVlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cisg
ICAgICAgICAgICByZXR1cm47CisjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5p
bCk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KICAgICBfc2Vzc2lvbi0+Y29udGludWVEaWRS
ZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdGFza0lkZW50aWZpZXIsIFtzZWxmIGV4aXN0aW5n
VGFzazp0YXNrXSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZp
c2lvbiAyNTAzNTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw3ICs0OTAsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5jYWNoZU1vZGVs
ID0gTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwoKTsKLSAgICBw
YXJhbWV0ZXJzLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gbV9jYW5IYW5k
bGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKIAogICAgIGZvciAoYXV0byYgc2NoZW1lIDog
Z2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkpCiAgICAgICAgIHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNj
aGVtZSk7CkBAIC0xNTA4LDE1ICsxNTA3LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG9t
YWluUmVsYXhhdGlvbgogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSh1cmxTY2hlbWUpKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2
YWx1YXRpb24oYm9vbCB2YWx1ZSkKLXsKLSAgICBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RF
dmFsdWF0aW9uID0gdmFsdWU7Ci0gICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhbkhh
bmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHZhbHVlKSwgMCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNM
b2NhbChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVy
QXNMb2NhbC5hZGQodXJsU2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjUwMzUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9s
aWN5KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRl
bkZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldENhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0xvY2FsKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNj
ZXNzKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJ
c29sYXRlZChjb25zdCBTdHJpbmcmKTsKQEAgLTcwOCw3ICs3MDcsNiBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQgeyB0cnVlIH07CiAKLSAgICBib29s
IG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24geyB0cnVlIH07CiAgICAgYm9v
bCBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2ggeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDM1MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4MSw3ICszODEsNiBAQCB2b2lkIFdLQ29udGV4dFNldERvbWFpblJlbGF4YXRp
b25Gb3JiaWRkCiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2
YWx1YXRpb24oV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdmFsdWUpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uKHZhbHVlKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1
dG9tYXRpY2FsbHkoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bQkocmV2aXNpb24gMjUwMzUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNiBAQCAtICh2
b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9uCiAKIC0gKHZvaWQpX3NldENhbkhh
bmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOihCT09MKXZhbHVlCiB7Ci0gICAgX3Byb2Nl
c3NQb29sLT5zZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbih2YWx1ZSk7CiB9
CiAKIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29va2llQWNj
ZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAzOTYp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAx
OS0wOS0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlbW92ZSB1bnVzZWQgV2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBTU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDIyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1t
OgorICAgICAgICAoLVtTZXJ2ZXJUcnVzdERlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdh
dGlvbjpdKToKKyAgICAgICAgKC1bU2VydmVyVHJ1c3REZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQ
cm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtTZXJ2ZXJUcnVz
dERlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXSk6CisgICAgICAgICgtW1NlcnZl
clRydXN0RGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl0p
OgorICAgICAgICAoLVtTZXJ2ZXJUcnVzdERlbGVnYXRlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q291bnRdKToKKyAgICAgICAgKC1bU2VydmVyVHJ1c3REZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0
d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXJ2ZXJU
cnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdv
cmtQcm9jZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXJ2ZXJUcnVz
dEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1
YXRpb25Jbk5ldHdvcmtQcm9jZXNzIGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOS0wOS0yNiAgSm9u
YXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVzdWx0cy53ZWJr
aXQub3JnOiBVc2UgY3Vyc29yOiBwb2ludGVyIGZvciBjbGlja2FibGUgZWxlbWVudHMKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdl
Lm1tCShyZXZpc2lvbiAyNTAzNTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsMTEgQEAKICNp
bXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29y
ZFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRXJyb3JSZWNv
dmVyeUF0dGVtcHRpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1BsYXRmb3JtLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKQEAgLTI4
NCwxNyArMjg4LDQ3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeUNlcnRpZmljYXRlQW5kUHVibGljS2UK
IH0KIAogQGludGVyZmFjZSBTZXJ2ZXJUcnVzdERlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlPgorLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKKy0gKE5T
RXJyb3IgKil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yOworLSAoc2l6
ZV90KWF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnQ7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlv
biBTZXJ2ZXJUcnVzdERlbGVnYXRlCitAaW1wbGVtZW50YXRpb24gU2VydmVyVHJ1c3REZWxlZ2F0
ZSB7CisgICAgc2l6ZV90IF9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvdW50OworICAgIGJvb2wg
X25hdmlnYXRpb25GaW5pc2hlZDsKKyAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Byb3Zpc2lvbmFs
TmF2aWdhdGlvbkZhaWxlZEVycm9yOworfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgogewotICAgIG5hdmln
YXRpb25GaW5pc2hlZCA9IHRydWU7CisgICAgX25hdmlnYXRpb25GaW5pc2hlZCA9IHRydWU7Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24g
d2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9u
RmFpbGVkRXJyb3IgPSBlcnJvcjsKK30KKworLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbgoreworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmX25hdmlnYXRpb25GaW5pc2hl
ZCk7Cit9CisKKy0gKE5TRXJyb3IgKil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bkVycm9yCit7CisgICAgd2hpbGUgKCFfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3Ip
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmV0dXJu
IF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvci5hdXRvcmVsZWFzZSgpOworfQorCist
IChzaXplX3QpYXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudAoreworICAgIHJldHVybiBfYXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudDsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKiBfTnVsbGFibGUgY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKIHsK
KyAgICBfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudCsrOwogICAgIFNlY1RydXN0UmVmIHRy
dXN0ID0gY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdDsKICAgICB2ZXJpZnlD
ZXJ0aWZpY2F0ZUFuZFB1YmxpY0tleSh0cnVzdCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3Jl
ZGVudGlhbEZvclRydXN0OnRydXN0XSk7CkBAIC0zMjEsOSArMzU1LDM5IEBAIFRFU1QoV2ViS2l0
LCBTZXJ2ZXJUcnVzdCkKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vbG9jYWxob3N0OiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwotICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlzaGVkKTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgdmVyaWZ5Q2VydGlmaWNhdGVBbmRQ
dWJsaWNLZXkoW3dlYlZpZXcgc2VydmVyVHJ1c3RdKTsKKyAgICBFWFBFQ1RfRVEoW2RlbGVnYXRl
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnRdLCAxdSk7Cit9CisKK1RFU1QoV2ViS2l0LCBG
YXN0U2VydmVyVHJ1c3QpCit7CisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklD
VFJVU1RFVkFMVUFURSkKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6
OkhUVFBTLCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0spOworI2Vsc2UKKyAgICBUQ1BTZXJ2ZXIg
c2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wqIHNzbCkgeworICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc3NsKTsKKyAgICB9KTsKKyNlbmRpZgorICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gKmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGRhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQgPSBZRVM7CisgICAgY29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1NlcnZlclRydXN0RGVsZWdhdGUgbmV3XSk7CisgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly9sb2NhbGhvc3Q6JWQv
Iiwgc2VydmVyLnBvcnQoKV1dXV07CisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NU
UklDVFJVU1RFVkFMVUFURSkKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b25dOworICAgIEVYUEVDVF9FUShbZGVsZWdhdGUgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3Vu
dF0sIDF1bGwpOworI2Vsc2UKKyAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9y
RGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W2Vycm9yLnVzZXJJbmZvW19XS1JlY292ZXJ5QXR0ZW1wdGVyRXJyb3JLZXldIGNsYXNzTmFtZV0s
IEAiV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIiKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvclNlcnZlckNlcnRpZmljYXRlVW50cnVzdGVkKTsKKyAgICBFWFBF
Q1RfRVEoW2RlbGVnYXRlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnRdLCAwdWxsKTsKKyNl
bmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjUwMzUwKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNTYsNyArMTA1Niw2IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNp
c3QKICAgICBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogCiAgICAgbV9kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24gPSBmYWxzZTsKLSAgICBtX3NlcnZl
clRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAgICAgbV9zaG91bGREaXNt
aXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7CiAKICAgICAvLyBSZXNl
dCBtYWluIHBhZ2UgYmFjayB0byBhYm91dDpibGFuawpAQCAtMjM1MSw4ICsyMzUwLDYgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgICAgICAvLyBBbnkgbm9u
LWVtcHR5IGNyZWRlbnRpYWwgc2lnbmFscyB0byBhY2NlcHQgdGhlIHNlcnZlciB0cnVzdC4gU2lu
Y2UgdGhlIGNyb3NzLXBsYXRmb3JtIEFQSQogICAgICAgICAvLyBkb2Vzbid0IGV4cG9zZSBhIHdh
eSB0byBjcmVhdGUgYSBjcmVkZW50aWFsIGZyb20gc2VydmVyIHRydXN0LCB3ZSB1c2UgYSBwYXNz
d29yZCBjcmVkZW50aWFsLgogCi0gICAgICAgIG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJh
Y2tDYWxsc0NvdW50Kys7Ci0KICAgICAgICAgaWYgKG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGUp
IHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9
IGFkb3B0V0soV0tDcmVkZW50aWFsQ3JlYXRlKHRvV0soImFjY2VwdCBzZXJ2ZXIgdHJ1c3QiKS5n
ZXQoKSwgdG9XSygiIikuZ2V0KCksIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAg
ICAgICAgICAgIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyVXNlQ3JlZGVudGlhbChk
ZWNpc2lvbkxpc3RlbmVyLCBjcmVkZW50aWFsLmdldCgpKTsKQEAgLTM1NjEsMTEgKzM1NTgsNiBA
QCBib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFRlc3RDb250cm9sbGVyOjpjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlv
bkluTmV0d29ya1Byb2Nlc3MoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9p
ZCBUZXN0Q29udHJvbGxlcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24oY29uc3QgU3RyaW5nJiwg
Ym9vbCkKIHsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDI1MDM1MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDkgKzMwOCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEFsbG93ZWRNZW51QWN0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQg
aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRpc21pc3Nl
c0F1dG9tYXRpY2FsbHkpOwogCi0gICAgYm9vbCBjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbklu
TmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKLSAgICB1aW50NjRfdCBzZXJ2ZXJUcnVzdEV2YWx1YXRp
b25DYWxsYmFja0NhbGxzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlclRydXN0RXZhbHVh
dGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsgfQotCiAgICAgdm9pZCBzZXRTaG91bGREaXNtaXNzSmF2
YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5KGJvb2wpOwogICAgIHZvaWQgaGFuZGxlSmF2YVNj
cmlwdEFsZXJ0KFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyUmVmKTsKICAg
ICB2b2lkIGFib3J0TW9kYWwoKTsKQEAgLTU5Miw3ICs1ODksNiBAQCBwcml2YXRlOgogICAgIH07
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQWJhbmRvbmVkRG9jdW1lbnRJbmZvPiBtX2FiYW5kb25l
ZERvY3VtZW50SW5mbzsKIAotICAgIHVpbnQ2NF90IG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2Fs
bGJhY2tDYWxsc0NvdW50IHsgMCB9OwogICAgIGJvb2wgbV9zaG91bGREaXNtaXNzSmF2YVNjcmlw
dEFsZXJ0c0FzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzQW55U1NM
Q2VydGlmaWNhdGUgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZFN3YXBUb0VwaGVtZXJhbFNl
c3Npb25Pbk5leHROYXZpZ2F0aW9uIHsgZmFsc2UgfTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCShyZXZpc2lvbiAyNTAzNTApCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxNCwy
MyArMTYxNCw2IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmQKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uIikpIHsKLSAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S0Jvb2xlYW5HZXRUeXBlSUQoKSk7Ci0gICAgICAgIGF1dG8gY2FuSGFuZGxlID0gV0tCb29sZWFu
R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpOwotICAgICAg
ICBXS0NvbnRleHRTZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBjYW5IYW5kbGUpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIkNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2Vz
cyIpKSB7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNhbkRvU2VydmVyVHJ1
c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJTZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQiKSkgewotICAgICAg
ICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNr
Q2FsbHNDb3VudCgpKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTaG91bGREaXNtaXNz
SmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5IikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CiAgICAgICAgIFdL
Qm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkp
OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNTAzNTApCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAw
LDMxICsyOTAwLDYgQEAgYm9vbCBUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNoYWluKEpTUwog
ICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRDYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sIGNhbkhhbmRsZSkKLXsKLSAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlv
biIpKTsKLSAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoY2FuSGFuZGxlKSk7Ci0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKLX0KLQotYm9vbCBUZXN0UnVu
bmVyOjpjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKQotewotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3Jr
UHJvY2VzcyIpKTsKLSAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7Ci0gICAgV0tC
dW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwg
JnJldHVybkRhdGEpOwotICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jv
b2xlYW5HZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0V0so
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOwotfQotCi11bnNp
Z25lZCBsb25nIFRlc3RSdW5uZXI6OnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHND
b3VudCgpCi17Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2VydmVyVHJ1c3RFdmFsdWF0aW9u
Q2FsbGJhY2tDYWxsc0NvdW50IikpOwotICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0
cjsKLSAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCBudWxscHRyLCAmcmV0dXJuRGF0YSk7Ci0gICAgQVNTRVJUKFdLR2V0VHlwZUlEKHJldHVybkRh
dGEpID09IFdLVUludDY0R2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBXS1VJbnQ2NEdldFZhbHVl
KGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7Ci19
Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3lu
Y2hyb25vdXNseShib29sIHNob3VsZERpc21pc3NBc3luY2hyb25vdXNseSkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJTaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91
c2x5IikpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDI1MDM1MCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTEs
MTAgKzQ5MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1Jl
ZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICBib29s
IGtleUV4aXN0c0luS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBh
cHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAKLSAgICB2b2lkIHNldENhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKGJvb2wgY2FuSGFuZGxlKTsKLSAgICBib29sIGNhbkRvU2VydmVyVHJ1
c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpOwotICAgIHVuc2lnbmVkIGxvbmcgc2VydmVy
VHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KCk7Ci0KICAgICAvLyBBZCBDbGljayBB
dHRyaWJ1dGlvbi4KICAgICB2b2lkIGR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICB2b2lk
IGNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwJKHJldmlzaW9uIDI1MDM1MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxMCAr
MzY0LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgdGVybWluYXRlTmV0d29y
a1Byb2Nlc3MoKTsKICAgICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CiAK
LSAgICB2b2lkIHNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2xlYW4g
Y2FuSGFuZGxlKTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjYW5Eb1NlcnZlclRy
dXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3M7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50OwotCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Q7CiAK
ICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhvYmplY3QgY2FsbGJhY2spOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQkocmV2aXNpb24gMjUwMzUwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsMTUgKzQx
MSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFsbG93c0FueVNTTENlcnQKICAgICBbZ2xv
YmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50IHNldEFsbG93QW55U1NMQ2VydGlmaWNh
dGU6IGFsbG93c107CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmNhbkRvU2VydmVyVHJ1c3RF
dmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpIGNvbnN0Ci17Ci0jaWYgSEFWRShDRk5FVFdPUktf
TlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNl
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIHZvaWQgVGVzdENvbnRyb2xsZXI6Omlu
c3RhbGxDdXN0b21NZW51QWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBkaXNtaXNzZXNB
dXRvbWF0aWNhbGx5KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTAzNTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxOS0wOS0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIyODUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRl
LXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24uaHRtbDogUmVtb3ZlZC4KKwogMjAxOS0wOS0yNSAg
QWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgUmUtc3lu
YyB3ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCIGZyb20gdXBzdHJlYW0KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNTAzNTApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIENlcnRpZmljYXRlIHZhbGlkYXRpb24gaW4g
TmV0d29yayBQcm9jZXNzIAotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0
aWZpY2F0ZS12YWxpZGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi5odG1sCShyZXZpc2lvbiAyNTAzNTApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLmh0bWwJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08dGl0bGU+Q2VydGlmaWNhdGUgdmFsaWRhdGlvbiBpbiBOZXR3b3JrIFByb2Nlc3M8
L3RpdGxlPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotZnVuY3Rpb24gd2l0aF9pZnJhbWUodXJsKSB7
Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKLSAgICAgICAgdmFy
IGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Ci0gICAgICAgIGZyYW1l
LmNsYXNzTmFtZSA9ICd0ZXN0LWlmcmFtZSc7Ci0gICAgICAgIGZyYW1lLnNyYyA9IHVybDsKLSAg
ICAgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoZnJhbWUpOyB9OwotICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKLSAgICB9KTsKLX0KLQotYXN5
bmMgZnVuY3Rpb24gZG9UZXN0KCkKLXsKLSAgICBhc3NlcnRfdHJ1ZSghIXdpbmRvdy50ZXN0UnVu
bmVyLCAiVGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyIik7Ci0KLSAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyLmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gVGhpcyBzaG91bGQgdHJpZ2dlciBuZXR3b3JrIHByb2Nlc3Mg
c2VydmVyIHRydXN0IGV2YWx1YXRpb24uCi0gICAgd2luZG93LnRlc3RSdW5uZXIuc2V0Q2FuSGFu
ZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oZmFsc2UpOwotCi0gICAgLy8gQ3Jhc2ggbmV0
d29yayBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB3ZSBjcmVhdGUgbmV3IEhUVFBTIGNvbm5lY3Rpb25z
LgotICAgIHdpbmRvdy50ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0KLSAg
ICBjb25zdCBjdXJyZW50Q2FsbGJhY2tDb3VudHMgPSB3aW5kb3cudGVzdFJ1bm5lci5zZXJ2ZXJU
cnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQ7Ci0KLSAgICBjb25zdCBpZnJhbWUgPSBh
d2FpdCB3aXRoX2lmcmFtZSgiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MyIpOwotICAgIGlmcmFtZS5y
ZW1vdmUoKTsKLQotICAgIGFzc2VydF9lcXVhbHMod2luZG93LnRlc3RSdW5uZXIuc2VydmVyVHJ1
c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50IC0gY3VycmVudENhbGxiYWNrQ291bnRzLCAx
KTsKLX0KLQotZG9UZXN0KCkudGhlbihkb25lLCAoZSkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCJ0
ZXN0IGZhaWxlZDogIiArIGUpOyBkb25lKCk7IH0pOwotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379684</attachid>
            <date>2019-09-26 14:59:13 -0700</date>
            <delta_ts>2019-09-26 23:14:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202285-20190926145912.patch</filename>
            <type>text/plain</type>
            <size>30327</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAzOTYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA5LTI2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVudXNl
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjI4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBTUEkg
dG8gc2V0IHRoaXMgd2FzIGRlcHJlY2F0ZWQgaW4gcjI1MDM3NyB3aXRoIGEgcmVwbGFjZW1lbnQg
dGhhdCB3YXMgYWRvcHRlZCBpbiByZGFyOi8vcHJvYmxlbS81NTczMTEzNQorICAgICAgICBJIHJl
bW92ZWQgYSBsYXlvdXQgdGVzdCB1c2luZyB0aGUgb2xkIFNQSSBhbmQgcmVwbGFjZWQgaXQgd2l0
aCBhIG1vcmUgcHJlY2lzZSBBUEkgdGVzdCB2ZXJpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBu
ZXcgU1BJCisgICAgICAgIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBvZiBOU1VS
TFNlc3Npb24ncyBfc3RyaWN0VHJ1c3RFdmFsdWF0ZTpxdWV1ZTpjb21wbGV0aW9uSGFuZGxlcjoK
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0
RXZhbHVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6
ZGlkUmVjZWl2ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKGNhbk5T
VVJMU2Vzc2lvblRydXN0RXZhbHVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRs
ZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAxOS0wOS0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViUGFnZTo6YmVnaW5QcmludGluZyB3
aGVuIG1fcHJpbnRDb250ZXh0IGJlY29tZXMgbnVsbCBkdWUgdG8gc3luY2hyb25vdXMgbGF5b3V0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjUwMzUxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw4ICszMDcsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1ByCiAKICAgICBzZXRDYWNoZU1vZGVs
KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5KTsKIAot
ICAgIHNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHBhcmFtZXRlcnMuY2Fu
SGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOwotCiAgICAgaWYgKHBhcmFtZXRlcnMu
c2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIG1fc2hvdWxkVXNlVGVz
dGluZ05ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHRydWU7CiAgICAgICAgIG1fZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IG5ld1Rlc3RpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOwpAQCAtMTk5NiwxMSArMTk5NCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldENhY2hlTW9kZWwoQ2FjaGUKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbCB2YWx1ZSkKLXsK
LSAgICBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gdmFsdWU7Ci19Ci0K
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRf
dCBjYWxsYmFja0lEKQogewogICAgIFN0YXRpc3RpY3NEYXRhIGRhdGE7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyNTAz
NTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3OCw4ICsxNzgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnN1cmVT
ZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsK
ICNlbmRpZgogCi0gICAgYm9vbCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb247IH0K
LQogICAgIHZvaWQgcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOwogICAgIHZvaWQgcHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kKCk7CkBAIC00MTEsNyArNDA5
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsLCBTdHJp
bmcgb3ZlcnJpZGVDYWNoZVN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIHZvaWQgYWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYs
IGNvbnN0IFN0cmluZyYgaG9zdCk7Ci0gICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRy
dXN0RXZhbHVhdGlvbihib29sKTsKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGlj
cyh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5z
KHVpbnQzMl90IGNhY2hlc1RvQ2xlYXIpOwogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JXZWJTb2NrZXQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAg
LTQ3Nyw3ICs0NzQsNiBAQCBwcml2YXRlOgogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsg
Q2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaXNrQ2FjaGVJc0Rpc2FibGVk
Rm9yVGVzdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1
c3RFdmFsdWF0aW9uIHsgdHJ1ZSB9OwogICAgIFN0cmluZyBtX3VpUHJvY2Vzc0J1bmRsZUlkZW50
aWZpZXI7CiAgICAgRG93bmxvYWRNYW5hZ2VyIG1fZG93bmxvYWRNYW5hZ2VyOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1MDM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIFN5
bmNBbGxDb29raWVzKCkKIAogICAgIEFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGUsIFN0cmluZyBob3N0KQotICAg
IFNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgdmFsdWUpCiAgICAg
CiAgICAgR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjUw
MzUxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6Ok5ldHdvcgogdm9pZCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7Ci0gICAgZW5jb2RlciA8PCBjYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNI
RV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKICNlbmRpZgpAQCAtOTcsOCArOTYs
NiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiB7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNhY2hlTW9kZWwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuSGFuZGxlSFRUUFNTZXJ2
ZXJUcnVzdEV2YWx1YXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlk
YXRpb24pKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjUw
MzUxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
SVBDOjpEZWNvZGVyJiwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAogICAg
IENhY2hlTW9kZWwgY2FjaGVNb2RlbCB7IENhY2hlTW9kZWw6OkRvY3VtZW50Vmlld2VyIH07Ci0g
ICAgYm9vbCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiB7IHRydWUgfTsKIAog
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBi
b29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsgZmFs
c2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1MDM3NykKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTM4LDExICs1MzgsNiBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJM
U2Vzc2lvbiAqKXNlc3NpCiB9CiAKICNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RS
SUNUUlVTVEVWQUxVQVRFKQotc3RhdGljIGJvb2wgY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0
ZSgpCi17Ci0gICAgcmV0dXJuIFtOU1VSTFNlc3Npb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfc3RyaWN0VHJ1c3RFdmFsdWF0ZTogcXVldWU6IGNvbXBsZXRpb25IYW5kbGVyOildOwot
fQotCiBzdGF0aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3
b3JrU2Vzc2lvbkNvY29hICpzZXNzaW9uLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpj
aGFsbGVuZ2UsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgc2Vzc2lvbi0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdGFz
a0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0gcmV0YWluUHRyKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3QpXSAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKSBtdXRhYmxlIHsKQEAgLTU3OCwyNSArNTczLDI0IEBAIC0gKHZvaWQpVVJMU2Vzc2lv
bjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOwogCiAgICAgICAgIC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBw
bGF0Zm9ybS1sZXZlbCBpZiByZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFuZCB0
byB1c2UgQVRTIGRlZmF1bHRzLgotICAgICAgICBpZiAoIV9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vz
cygpLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKCkgfHwgX3Nlc3Npb24tPmZh
c3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKF9zZXNzaW9u
LT5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCgpKSB7CiAjaWYgSEFWRShDRk5FVFdP
UktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkKLSAgICAgICAgICAgIGlmIChjYW5O
U1VSTFNlc3Npb25UcnVzdEV2YWx1YXRlKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvKiBuZXR3
b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza107Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKG5ldHdvcmtEYXRhVGFzayk7Ci0gICAgICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoW19zZXNzaW9uID0gbWFrZVdlYWtQdHIoX3Nlc3Npb24uZ2V0
KCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sgPSBSZWZQdHI8TmV0d29ya0RhdGFUYXNr
Q29jb2E+KG5ldHdvcmtEYXRhVGFzayldKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNo
YWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRhc2sgPSBXVEZNb3ZlKG5ldHdvcmtEYXRhVGFzayk7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8qIHNlc3Npb24gPSBfc2Vzc2lvbi5nZXQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHRydXN0UmVzdWx0ID09IG5vRXJyIHx8ICFzZXNzaW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVy
Zm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uKHNlc3Npb24sIGNoYWxsZW5nZSwgdGFza0lkZW50aWZpZXIsIHRh
c2suZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICBbTlNVUkxTZXNzaW9uIF9zdHJpY3RUcnVzdEV2YWx1YXRlOmNo
YWxsZW5nZSBxdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdLnVuZGVybHlpbmdRdWV1
ZSBjb21wbGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgYXV0byogbmV0
d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdOworICAgICAgICAgICAgQVNT
RVJUKG5ldHdvcmtEYXRhVGFzayk7CisgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihbX3Nlc3Npb24gPSBtYWtlV2Vha1B0cihfc2Vzc2lvbi5nZXQoKSksIGNv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFza0lk
ZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzayA9IFJlZlB0cjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4o
bmV0d29ya0RhdGFUYXNrKV0oTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
LCBPU1N0YXR1cyB0cnVzdFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byB0
YXNrID0gV1RGTW92ZShuZXR3b3JrRGF0YVRhc2spOworICAgICAgICAgICAgICAgIGF1dG8qIHNl
c3Npb24gPSBfc2Vzc2lvbi5nZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAodHJ1c3RSZXN1bHQg
PT0gbm9FcnIgfHwgIXNlc3Npb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5p
bCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihzZXNzaW9uLCBjaGFsbGVu
Z2UsIHRhc2tJZGVudGlmaWVyLCB0YXNrLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIFtOU1VSTFNlc3Npb24gX3N0cmljdFRy
dXN0RXZhbHVhdGU6Y2hhbGxlbmdlIHF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV0u
dW5kZXJseWluZ1F1ZXVlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07
CisgICAgICAgICAgICByZXR1cm47CisjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2Us
IG5pbCk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KICAgICBfc2Vzc2lvbi0+Y29udGludWVE
aWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdGFza0lkZW50aWZpZXIsIFtzZWxmIGV4aXN0
aW5nVGFzazp0YXNrXSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBk
aXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJs
ZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShy
ZXZpc2lvbiAyNTAzNTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw3ICs0OTAsNiBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5jYWNoZU1v
ZGVsID0gTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwoKTsKLSAg
ICBwYXJhbWV0ZXJzLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uID0gbV9jYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKIAogICAgIGZvciAoYXV0byYgc2NoZW1l
IDogZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkpCiAgICAgICAg
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5k
KHNjaGVtZSk7CkBAIC0xNTA4LDE1ICsxNTA3LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0
RG9tYWluUmVsYXhhdGlvbgogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6U2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSh1cmxTY2hlbWUp
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVz
dEV2YWx1YXRpb24oYm9vbCB2YWx1ZSkKLXsKLSAgICBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1
c3RFdmFsdWF0aW9uID0gdmFsdWU7Ci0gICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpIHsKLSAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENh
bkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHZhbHVlKSwgMCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1l
QXNMb2NhbChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsKICAgICBtX3NjaGVtZXNUb1JlZ2lz
dGVyQXNMb2NhbC5hZGQodXJsU2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjUwMzUwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5
UG9saWN5KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJp
ZGRlbkZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldENhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hl
bWVBc0xvY2FsKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3Bs
YXlJc29sYXRlZChjb25zdCBTdHJpbmcmKTsKQEAgLTcwOCw3ICs3MDcsNiBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQgeyB0cnVlIH07CiAKLSAgICBi
b29sIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24geyB0cnVlIH07CiAgICAg
Ym9vbCBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2ggeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDM1
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4MSw3ICszODEsNiBAQCB2b2lkIFdLQ29udGV4dFNldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkCiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVz
dEV2YWx1YXRpb24oV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdmFsdWUpCiB7Ci0gICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RF
dmFsdWF0aW9uKHZhbHVlKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRQcmV3YXJtc1Byb2Nlc3Nl
c0F1dG9tYXRpY2FsbHkoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgdmFsdWUpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQkocmV2aXNpb24gMjUwMzUwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNiBAQCAt
ICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9uCiAKIC0gKHZvaWQpX3NldENh
bkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOihCT09MKXZhbHVlCiB7Ci0gICAgX3By
b2Nlc3NQb29sLT5zZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbih2YWx1ZSk7
CiB9CiAKIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29va2ll
QWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAz
OTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAor
MjAxOS0wOS0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlbW92ZSB1bnVzZWQgV2ViUHJvY2Vzc1Bvb2w6OnNldENhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDIyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdl
Lm1tOgorICAgICAgICAoLVtTZXJ2ZXJUcnVzdERlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2
aWdhdGlvbjpdKToKKyAgICAgICAgKC1bU2VydmVyVHJ1c3REZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtTZXJ2ZXJU
cnVzdERlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXSk6CisgICAgICAgICgtW1Nl
cnZlclRydXN0RGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJv
cl0pOgorICAgICAgICAoLVtTZXJ2ZXJUcnVzdERlbGVnYXRlIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ291bnRdKToKKyAgICAgICAgKC1bU2VydmVyVHJ1c3REZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbklu
TmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXJ2
ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5l
dHdvcmtQcm9jZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXJ2ZXJU
cnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2
YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzIGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOS0wOS0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoKSB0byB0dXJuIG9uIFBhZ2UgQ2FjaGUKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdl
Lm1tCShyZXZpc2lvbiAyNTAzNTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsMTEgQEAKICNp
bXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29y
ZFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRXJyb3JSZWNv
dmVyeUF0dGVtcHRpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1BsYXRmb3JtLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKQEAgLTI4
NCwxNyArMjg4LDQ3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeUNlcnRpZmljYXRlQW5kUHVibGljS2UK
IH0KIAogQGludGVyZmFjZSBTZXJ2ZXJUcnVzdERlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlPgorLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKKy0gKE5T
RXJyb3IgKil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yOworLSAoc2l6
ZV90KWF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnQ7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlv
biBTZXJ2ZXJUcnVzdERlbGVnYXRlCitAaW1wbGVtZW50YXRpb24gU2VydmVyVHJ1c3REZWxlZ2F0
ZSB7CisgICAgc2l6ZV90IF9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvdW50OworICAgIGJvb2wg
X25hdmlnYXRpb25GaW5pc2hlZDsKKyAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Byb3Zpc2lvbmFs
TmF2aWdhdGlvbkZhaWxlZEVycm9yOworfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgogewotICAgIG5hdmln
YXRpb25GaW5pc2hlZCA9IHRydWU7CisgICAgX25hdmlnYXRpb25GaW5pc2hlZCA9IHRydWU7Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24g
d2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9u
RmFpbGVkRXJyb3IgPSBlcnJvcjsKK30KKworLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbgoreworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmX25hdmlnYXRpb25GaW5pc2hl
ZCk7Cit9CisKKy0gKE5TRXJyb3IgKil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bkVycm9yCit7CisgICAgd2hpbGUgKCFfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3Ip
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmV0dXJu
IF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvci5hdXRvcmVsZWFzZSgpOworfQorCist
IChzaXplX3QpYXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudAoreworICAgIHJldHVybiBfYXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudDsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKiBfTnVsbGFibGUgY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKIHsK
KyAgICBfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudCsrOwogICAgIFNlY1RydXN0UmVmIHRy
dXN0ID0gY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdDsKICAgICB2ZXJpZnlD
ZXJ0aWZpY2F0ZUFuZFB1YmxpY0tleSh0cnVzdCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3Jl
ZGVudGlhbEZvclRydXN0OnRydXN0XSk7CkBAIC0zMjEsOSArMzU1LDM5IEBAIFRFU1QoV2ViS2l0
LCBTZXJ2ZXJUcnVzdCkKICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vbG9jYWxob3N0OiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwotICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlzaGVkKTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCiAgICAgdmVyaWZ5Q2VydGlmaWNhdGVBbmRQ
dWJsaWNLZXkoW3dlYlZpZXcgc2VydmVyVHJ1c3RdKTsKKyAgICBFWFBFQ1RfRVEoW2RlbGVnYXRl
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnRdLCAxdSk7Cit9CisKK1RFU1QoV2ViS2l0LCBG
YXN0U2VydmVyVHJ1c3QpCit7CisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklD
VFJVU1RFVkFMVUFURSkKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6
OkhUVFBTLCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0spOworI2Vsc2UKKyAgICBUQ1BTZXJ2ZXIg
c2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wqIHNzbCkgeworICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc3NsKTsKKyAgICB9KTsKKyNlbmRpZgorICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gKmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGRhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQgPSBZRVM7CisgICAgY29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1NlcnZlclRydXN0RGVsZWdhdGUgbmV3XSk7CisgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly9sb2NhbGhvc3Q6JWQv
Iiwgc2VydmVyLnBvcnQoKV1dXV07CisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NU
UklDVFJVU1RFVkFMVUFURSkKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b25dOworICAgIEVYUEVDVF9FUShbZGVsZWdhdGUgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3Vu
dF0sIDF1bGwpOworI2Vsc2UKKyAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9y
RGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W2Vycm9yLnVzZXJJbmZvW19XS1JlY292ZXJ5QXR0ZW1wdGVyRXJyb3JLZXldIGNsYXNzTmFtZV0s
IEAiV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIiKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvclNlcnZlckNlcnRpZmljYXRlVW50cnVzdGVkKTsKKyAgICBFWFBF
Q1RfRVEoW2RlbGVnYXRlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnRdLCAwdWxsKTsKKyNl
bmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjUwMzUwKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1NjEsMTEgKzM1NjEsNiBAQCBib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNo
YWluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRlc3RDb250cm9sbGVyOjpjYW5Eb1Nl
cnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKSBjb25zdAotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rp
b24oY29uc3QgU3RyaW5nJiwgYm9vbCkKIHsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDI1MDM1MCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDcgKzMwOCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93ZWRNZW51QWN0aW9ucyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOwogICAgIHZvaWQgaW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24oY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHkpOwogCi0gICAgYm9vbCBjYW5Eb1NlcnZl
clRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKICAgICB1aW50NjRfdCBz
ZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsgfQogCiAgICAgdm9pZCBz
ZXRTaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5KGJvb2wpOwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDI1
MDM1MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjE0LDE4ICsxNjE0LDYgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBU
ZXN0SW52b2NhdGlvbjo6ZAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0Q2FuSGFuZGxl
SFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24iKSkgewotICAgICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKLSAgICAgICAgYXV0byBj
YW5IYW5kbGUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1l
c3NhZ2VCb2R5KSk7Ci0gICAgICAgIFdLQ29udGV4dFNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1
c3RFdmFsdWF0aW9uKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCksIGNhbkhh
bmRsZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FuRG9TZXJ2ZXJUcnVzdEV2YWx1
YXRpb25Jbk5ldHdvcmtQcm9jZXNzIikpIHsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PiByZXN1bHQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuY2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkpKTsKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2Fs
bHNDb3VudCIpKSB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRv
cHRXSyhXS1VJbnQ2NENyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2VydmVyVHJ1
c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KCkpKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMjUwMzUwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkw
MCwyMiArMjkwMCw2IEBAIGJvb2wgVGVzdFJ1bm5lcjo6a2V5RXhpc3RzSW5LZXljaGFpbihKU1MK
ICAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxXS0Jvb2xl
YW5SZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2Fu
SGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbCBjYW5IYW5kbGUpCi17Ci0gICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24iKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0
V0soV0tCb29sZWFuQ3JlYXRlKGNhbkhhbmRsZSkpOwotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Ci19Ci0KLWJvb2wgVGVzdFJ1
bm5lcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkKLXsKLSAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29y
a1Byb2Nlc3MiKSk7Ci0gICAgV0tUeXBlUmVmIHJldHVybkRhdGEgPSBudWxscHRyOwotICAgIFdL
QnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIs
ICZyZXR1cm5EYXRhKTsKLSAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tC
b29sZWFuR2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdL
KHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKLX0KLQogdW5z
aWduZWQgbG9uZyBUZXN0UnVubmVyOjpzZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxz
Q291bnQoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNlcnZlclRydXN0RXZhbHVhdGlv
bkNhbGxiYWNrQ2FsbHNDb3VudCIpKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAyNTAzNTApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDkxLDggKzQ5MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFuVXBLZXlj
aGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFz
ZTY0KTsKICAgICBib29sIGtleUV4aXN0c0luS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVs
LCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAKLSAgICB2b2lkIHNldENhbkhh
bmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgY2FuSGFuZGxlKTsKLSAgICBib29s
IGNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpOwogICAgIHVuc2ln
bmVkIGxvbmcgc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KCk7CiAKICAg
ICAvLyBBZCBDbGljayBBdHRyaWJ1dGlvbi4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAkocmV2aXNpb24gMjUwMzUwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDggKzM2
NCw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOwogCi0g
ICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sZWFuIGNh
bkhhbmRsZSk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2FuRG9TZXJ2ZXJUcnVz
dEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIHNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGRpZENhbmNlbENsaWVudFJlZGlyZWN0OwpJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbQkocmV2aXNpb24gMjUwMzUwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsMTUgKzQxMSw2
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFsbG93c0FueVNTTENlcnQKICAgICBbZ2xvYmFs
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50IHNldEFsbG93QW55U1NMQ2VydGlmaWNhdGU6
IGFsbG93c107CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFs
dWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpIGNvbnN0Ci17Ci0jaWYgSEFWRShDRk5FVFdPUktfTlNV
UkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIHZvaWQgVGVzdENvbnRyb2xsZXI6Omluc3Rh
bGxDdXN0b21NZW51QWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBkaXNtaXNzZXNBdXRv
bWF0aWNhbGx5KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTAzNTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxOS0wOS0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgV2ViUHJvY2Vzc1Bvb2w6OnNldENh
bkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIyODUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3Ns
L2NlcnRpZmljYXRlLXZhbGlkYXRpb24uaHRtbDogUmVtb3ZlZC4KKwogMjAxOS0wOS0yNSAgQWxl
eGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgUmUtc3luYyB3
ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCIGZyb20gdXBzdHJlYW0KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlk
YXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNTAzNTApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDMgKzAsMCBAQAotCi1QQVNTIENlcnRpZmljYXRlIHZhbGlkYXRpb24gaW4gTmV0
d29yayBQcm9jZXNzIAotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZp
Y2F0ZS12YWxpZGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi5odG1sCShyZXZpc2lvbiAyNTAzNTApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08dGl0bGU+Q2VydGlmaWNhdGUgdmFsaWRhdGlvbiBpbiBOZXR3b3JrIFByb2Nlc3M8L3Rp
dGxlPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotZnVuY3Rpb24gd2l0aF9pZnJhbWUodXJsKSB7Ci0g
ICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKLSAgICAgICAgdmFyIGZy
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Ci0gICAgICAgIGZyYW1lLmNs
YXNzTmFtZSA9ICd0ZXN0LWlmcmFtZSc7Ci0gICAgICAgIGZyYW1lLnNyYyA9IHVybDsKLSAgICAg
ICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoZnJhbWUpOyB9OwotICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKLSAgICB9KTsKLX0KLQotYXN5bmMg
ZnVuY3Rpb24gZG9UZXN0KCkKLXsKLSAgICBhc3NlcnRfdHJ1ZSghIXdpbmRvdy50ZXN0UnVubmVy
LCAiVGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyIik7Ci0KLSAgICBpZiAoIXdpbmRvdy50ZXN0UnVu
bmVyLmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gVGhpcyBzaG91bGQgdHJpZ2dlciBuZXR3b3JrIHByb2Nlc3Mgc2Vy
dmVyIHRydXN0IGV2YWx1YXRpb24uCi0gICAgd2luZG93LnRlc3RSdW5uZXIuc2V0Q2FuSGFuZGxl
SFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oZmFsc2UpOwotCi0gICAgLy8gQ3Jhc2ggbmV0d29y
ayBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB3ZSBjcmVhdGUgbmV3IEhUVFBTIGNvbm5lY3Rpb25zLgot
ICAgIHdpbmRvdy50ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7Ci0KLSAgICBj
b25zdCBjdXJyZW50Q2FsbGJhY2tDb3VudHMgPSB3aW5kb3cudGVzdFJ1bm5lci5zZXJ2ZXJUcnVz
dEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQ7Ci0KLSAgICBjb25zdCBpZnJhbWUgPSBhd2Fp
dCB3aXRoX2lmcmFtZSgiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MyIpOwotICAgIGlmcmFtZS5yZW1v
dmUoKTsKLQotICAgIGFzc2VydF9lcXVhbHMod2luZG93LnRlc3RSdW5uZXIuc2VydmVyVHJ1c3RF
dmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50IC0gY3VycmVudENhbGxiYWNrQ291bnRzLCAxKTsK
LX0KLQotZG9UZXN0KCkudGhlbihkb25lLCAoZSkgPT4geyBhc3NlcnRfdW5yZWFjaGVkKCJ0ZXN0
IGZhaWxlZDogIiArIGUpOyBkb25lKCk7IH0pOwotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4K
</data>
<flag name="review"
          id="395415"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>