<?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>183213</bug_id>
          
          <creation_ts>2018-02-28 08:59:30 -0800</creation_ts>
          <short_desc>Reduce use of NetworkingContext in WebKit</short_desc>
          <delta_ts>2018-02-28 11:55:30 -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>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1402620</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-02-28 08:59:30 -0800</bug_when>
    <thetext>Reduce use of NetworkingContext in WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402622</commentid>
    <comment_count>1</comment_count>
      <attachid>334746</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-02-28 09:02:03 -0800</bug_when>
    <thetext>Created attachment 334746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402640</commentid>
    <comment_count>2</comment_count>
      <attachid>334747</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-02-28 09:50:25 -0800</bug_when>
    <thetext>Created attachment 334747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402644</commentid>
    <comment_count>3</comment_count>
      <attachid>334748</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-02-28 09:54:32 -0800</bug_when>
    <thetext>Created attachment 334748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402682</commentid>
    <comment_count>4</comment_count>
      <attachid>334748</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-28 11:54:03 -0800</bug_when>
    <thetext>Comment on attachment 334748
Patch

Clearing flags on attachment: 334748

Committed r229100: &lt;https://trac.webkit.org/changeset/229100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402683</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-28 11:54:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402684</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-28 11:55:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/37994943&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334746</attachid>
            <date>2018-02-28 09:02:03 -0800</date>
            <delta_ts>2018-02-28 09:50:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183213-20180228090202.patch</filename>
            <type>text/plain</type>
            <size>25196</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzc1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE4LTAyLTI4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVz
ZSBvZiBOZXR3b3JraW5nQ29udGV4dCBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzIxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldHdvcmtpbmdDb250ZXh0IGlzIGludGVuZGVkIHRv
IGJlIHVzZWQgb25seSB3aXRoIFJlc291cmNlSGFuZGxlLCB3aGljaCBpcyBub3cgb25seSB1c2Vk
IGluIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlu
a0xvYWRlcjo6bG9hZExpbmspOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cHJveHlTZXJ2ZXJzRm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJv
eHlTZXJ2ZXJDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3h5U2VydmVyc0ZvclVSTCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwcm94eVNlcnZlcnNGb3JVUkwpOgorCiAyMDE4LTAxLTI5ICBFbWls
aW8gQ29ib3Mgw4FsdmFyZXogIDxlbWlsaW9AY3Jpc2FsLmlvPgogCiAgICAgICAgIFRyaXZpYWxs
eSBjbGVhbnVwIHN0ZDo6b3B0aW9uYWwgdXNhZ2UgaW4gUmVuZGVyQmxvY2tGbG93LgpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODI2LDcgKzI4MjYsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
CiAKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
Lm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KSkgewogICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAgICAgICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KG5ldHdvcmtpbmdDb250ZXh0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2Us
IGJ1ZmZlcik7CisgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVx
dWVzdCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGVy
cm9yLCByZXNwb25zZSwgYnVmZmVyKTsKICAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+
YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3
UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1Jl
cXVlc3QsIHJlc3BvbnNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAJ
KHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIGJvb2wgTGlua0xvYWRlcjo6bG9h
ZExpbmsoY29uc3QgTGlua1JlbEEKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y3Jvc3NPcmlnaW4sICJhbm9ueW1vdXMiKSAmJiBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmNh
bkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGhyZWYpKSkKICAgICAgICAgICAgIHN0b3Jh
Z2VDcmVkZW50aWFsc1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsK
ICAgICAgICAgQVNTRVJUKGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLm5ldHdvcmtpbmdDb250
ZXh0KCkpOwotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+
cHJlY29ubmVjdFRvKCpkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4
dCgpLCBocmVmLCBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3ksIFt3ZWFrRG9jdW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVXZWFrUHRyKCksIGhyZWZdKFJlc291cmNlRXJyb3IgZXJyb3IpIHsKKyAgICAg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnByZWNvbm5lY3RUbyhk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKSwgaHJlZiwgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5
LCBbd2Vha0RvY3VtZW50ID0gZG9jdW1lbnQuY3JlYXRlV2Vha1B0cigpLCBocmVmXShSZXNvdXJj
ZUVycm9yIGVycm9yKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtEb2N1bWVudCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVn
eS5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5
OwogY2xhc3MgRnJhbWU7CitjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7
CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjsKIGNsYXNzIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyQ2xpZW50OwotY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBGZXRjaE9wdGlvbnM7CiBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBMb2FkZXJTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNv
dXJjZShGcmFtZSYsIENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiYmKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0
b3I8Y2hhcj4mIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBk
YXRhKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZGVyKiwgYm9v
bCkgPSAwOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBv
cmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBs
ZXRpb25IYW5kbGVyJiYgPSB7IH0pID0gMDsKIAogICAgIHVzaW5nIFByZWNvbm5lY3RDb21wbGV0
aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJik+Owot
ICAgIHZpcnR1YWwgdm9pZCBwcmVjb25uZWN0VG8oTmV0d29ya2luZ0NvbnRleHQmLCBjb25zdCBV
UkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiwgY29u
c3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUo
Y29uc3QgU0hBMTo6RGlnZXN0JiBib2R5S2V5LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgJKHJldmlzaW9u
IDIyNzY4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gUmV0
dXJuIGEgdmVjdG9yIG9mIHByb3h5IHNlcnZlcnMgZm9yIHRoZSBnaXZlbiBVUkwuCi1XRUJDT1JF
X0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwm
LCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopOworV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFByb3h5
U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJik7CiAKIC8vIENvbnZlcnRzIHRo
ZSBnaXZlbiB2ZWN0b3Igb2YgcHJveHkgc2VydmVycyB0byBhIFBBQyBzdHJpbmcsIGFzIGRlc2Ny
aWJlZCBpbgogLy8gaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwNjA0MjQwMDUwMzcvd3Au
bmV0c2NhcGUuY29tL2VuZy9tb3ppbGxhLzIuMC9yZWxub3Rlcy9kZW1vL3Byb3h5LWxpdmUuaHRt
bApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNG
TmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Byb3h5U2VydmVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgYWRkUHJveHlTZXJ2ZXJzRm9yVVJMKFZl
Y3RvcgogICAgIHByb2Nlc3NQcm94eVNlcnZlcnMocHJveHlTZXJ2ZXJzLCBwcm94aWVzRm9yVVJM
LmdldCgpLCBjZlVSTC5nZXQoKSk7CiB9CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2
ZXJzRm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCitWZWN0
b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyczsKICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1
cmwuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlT
ZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3Rv
cjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudC4KICAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1By
b3h5U2VydmVyU291cC5jcHAJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmVjdG9yPFByb3h5U2Vy
dmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRl
eHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJikK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIHJldHVybiBWZWN0b3I8UHJveHlTZXJ2
ZXI+KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI5MDkyKQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0wMi0yOCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVj
ZSB1c2Ugb2YgTmV0d29ya2luZ0NvbnRleHQgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMyMTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnByb3hpZXNGb3JVUkwpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorCiAyMDE4LTAyLTI3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSB0YXJn
ZXQgdHJpcGxlIGlzIHByb3BhZ2F0ZWQgY29ycmVjdGx5IHRvIERlcml2ZWRTb3VyY2VzLm1ha2UK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDUsMTMgKzQwNSw5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6Om5ldHdvcmtQ
cm9jZXNzQ3IKICAgICAgICAgcHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyKGludGVybmFsRXJy
b3IoVVJMKCkpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyByZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQordm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJh
bWVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZl
Y3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJD
b250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQp
OwotICAgIC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAi
RW1wdHlGcmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJh
bWVMb2FkZXJDbGllbnQuCi0gICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3Qg
ZXhpc3QgYW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGll
bnQsCi0gICAgLy8gYnV0IGluIHRoZSBtZWFudGltZSB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSBub3Qg
dG8gbWlzLWNhc3QuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID0gd2ViQ29udGV4dC0+d2ViRnJhbWVMb2FkZXJDbGllbnQoKTsKKyAgICBXZWJGcmFtZUxv
YWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50
KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFt
ZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKICAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogMDsKIApA
QCAtNDI1LDcgKzQyMSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5
bmMKICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAgICBsb2FkUGFyYW1ldGVycy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIGxv
YWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBjbGllbnRDcmVkZW50aWFsUG9s
aWN5OwotICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QgPSBjb250ZXh0LT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KCk7CisgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCA9IGZyYW1lTG9hZGVyLm5ldHdvcmtpbmdDb250ZXh0KCktPnNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwog
CkBAIC01MDUsMTQgKzUwMSwxMyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQ
aW5nTG9hCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpLCBXVEZNb3Zl
KHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhO
ZXR3b3JraW5nQ29udGV4dCYgY29udGV4dCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgdWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlm
aWVyKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
cnMuYWRkKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IAotICAgIGF1dG8mIHdlYkNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Jj4oY29udGV4dCk7Ci0gICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB3ZWJD
b250ZXh0LndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJD
bGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKICAg
ICBpZiAoIXdlYkZyYW1lTG9hZGVyQ2xpZW50KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGludGVybmFsRXJyb3IodXJsKSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAkocmV2
aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgfldlYkxvYWRlclN0cmF0ZWd5KCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBsb2FkUmVzb3Vy
Y2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4m
Jik+JiYpIGZpbmFsOwotICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6
RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgZmlu
YWw7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwog
ICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGJvb2wp
IGZpbmFsOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFBpbmdMb2Fk
KFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgY29uc3QgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogCi0gICAg
dm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQmLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6
OkZyYW1lTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKICAgICB2b2lkIHN0b3JlRGVyaXZlZERh
dGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUhhc2gsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vdXNlRXZlbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KQEAgLTE1NzYsOSArMTU3NSw3IEBAIGZsb2F0IFBs
dWdpblZpZXc6OmNvbnRlbnRzU2NhbGVGYWN0b3IoKQogICAgIAogU3RyaW5nIFBsdWdpblZpZXc6
OnByb3hpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgY29uc3QgRnJh
bWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZnJhbWUoKSA/ICZmcmFtZSgpLT5sb2FkZXIoKSA6IDA7
Ci0gICAgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBmcmFtZUxvYWRlciA/IGZy
YW1lTG9hZGVyLT5uZXR3b3JraW5nQ29udGV4dCgpIDogMDsKLSAgICBWZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChVUkwoVVJMKCksIHVybFN0cmlu
ZyksIGNvbnRleHQpOworICAgIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzID0gcHJv
eHlTZXJ2ZXJzRm9yVVJMKFVSTChVUkwoKSwgdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIHRvU3Ry
aW5nKHByb3h5U2VydmVycyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDIyNzY4MikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSlNGaWxlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9KU1JhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob2RlVHJhdmVyc2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDItMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtp
bmdDb250ZXh0IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgzMjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
OgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cHJlY29ubmVjdFRv
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoK
KwogMjAxOC0wMS0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVzZSBDb21wbGV0aW9uSGFuZGxlcnMgZm9yIFJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAkocmV2aXNpb24gMjI3NTkwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsOSArMTA1LDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdQog
ICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZywg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRh
dGEpCit2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAg
IFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnRleHQsIHJlcXVl
c3QsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOworICAg
IFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGZyYW1lTG9hZGVyLm5l
dHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEZyYW1lJiBmcmFtZSwgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXJDbGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzdGFydFBpbmcKICAgICBuZXcgUGluZ0hhbmRsZShmcmFt
ZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRp
YWxzICE9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIG9wdGlvbnMucmVkaXJlY3Qg
PT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9sbG93LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8o
TmV0d29ya2luZ0NvbnRleHQmLCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
UHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpCit2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIFdlYlJlc291cmNlTG9h
ZFNjaGVkdWxlcigpOwogCiAgICAgdm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwotICAgIHZv
aWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZl
Y3RvcjxjaGFyPiYpIGZpbmFsOworICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShX
ZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBjcm9z
c09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIGNvbnN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAK
LSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25u
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oV2Vi
Q29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
CiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5h
bCB7IH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NTkw
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTgtMDItMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtpbmdDb250ZXh0
IGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgzMjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0UHJveHkpOgorICAg
ICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJO
ZXRzY2FwZVBsdWdpblZpZXcgZ2V0VmFyaWFibGU6Zm9yVVJMOnZhbHVlOmxlbmd0aDpdKToKKwog
MjAxOC0wMS0yNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSB1bnVzZWQgUVRLaXQgcHJlZmVyZW5jZQpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0JKHJldmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYyLDcgKzIx
NjIsNyBAQCAtIChOUEVycm9yKWdldFZhcmlhYmxlOihOUE5VUkxWYXJpYWJsZSl2CiAgICAgICAg
ICAgICBpZiAoIVVSTCkKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgVmVj
dG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwoVVJMLCAw
KTsKKyAgICAgICAgICAgIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzID0gcHJveHlT
ZXJ2ZXJzRm9yVVJMKFVSTCk7CiAgICAgICAgICAgICBDU3RyaW5nIHByb3hpZXNVVEY4ID0gdG9T
dHJpbmcocHJveHlTZXJ2ZXJzKS51dGY4KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICp2
YWx1ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihOUE5fTWVtQWxsb2MocHJveGllc1VURjgubGVuZ3Ro
KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHJl
dmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTYxNyw3
ICsxNjE3LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFBybwogICAg
IGlmICghdXJsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBWZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTCh1cmwsIDApOworICAgIFZlY3Rv
cjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzID0gcHJveHlTZXJ2ZXJzRm9yVVJMKHVybCk7CiAg
ICAgV1RGOjpDU3RyaW5nIHByb3h5U3RyaW5nVVRGOCA9IHRvU3RyaW5nKHByb3h5U2VydmVycyku
dXRmOCgpOwogCiAgICAgcHJveHlMZW5ndGggPSBwcm94eVN0cmluZ1VURjgubGVuZ3RoKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc1OTApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxOC0wMi0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya2luZ0NvbnRleHQgaW4gV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMyMTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRWYWx1
ZUZvclVSTCk6CisKIDIwMTgtMDEtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYW5vdGhlciBhdHRlbXB0IHRvIGZpeCB0aGUg
V2luZG93cyBidWlsZCBhZnRlciByMjI3NDc5LgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMjc1OTApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjk4LDEwICsxMjk4LDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZUZvclVS
TChOUE5VUgogICAgIGNhc2UgTlBOVVJMVlByb3h5OiB7CiAgICAgICAgIFVSTCB1KG1fcGFyZW50
RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKICAgICAgICAgaWYgKHUuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBnZXRGcmFtZShwYXJlbnRGcmFtZSgp
LCBtX2VsZW1lbnQpOwotICAgICAgICAgICAgY29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVy
ID0gZnJhbWUgPyAmZnJhbWUtPmxvYWRlcigpIDogMDsKLSAgICAgICAgICAgIGNvbnN0IE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0ID0gZnJhbWVMb2FkZXIgPyBmcmFtZUxvYWRlci0+bmV0d29y
a2luZ0NvbnRleHQoKSA6IDA7Ci0gICAgICAgICAgICBjb25zdCBDU3RyaW5nIHByb3h5U3RyID0g
dG9TdHJpbmcocHJveHlTZXJ2ZXJzRm9yVVJMKHUsIGNvbnRleHQpKS51dGY4KCk7CisgICAgICAg
ICAgICBjb25zdCBDU3RyaW5nIHByb3h5U3RyID0gdG9TdHJpbmcocHJveHlTZXJ2ZXJzRm9yVVJM
KHUpKS51dGY4KCk7CiAgICAgICAgICAgICBpZiAoIXByb3h5U3RyLmlzTnVsbCgpKSB7CiAgICAg
ICAgICAgICAgICAgY29uc3QgaW50IHNpemUgPSBwcm94eVN0ci5sZW5ndGgoKTsKICAgICAgICAg
ICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDxjaGFyKj4oTlBOX01lbUFsbG9jKHNpemUrMSkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334747</attachid>
            <date>2018-02-28 09:50:25 -0800</date>
            <delta_ts>2018-02-28 09:54:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183213-20180228095024.patch</filename>
            <type>text/plain</type>
            <size>30763</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzc1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE4LTAyLTI4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVz
ZSBvZiBOZXR3b3JraW5nQ29udGV4dCBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzIxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldHdvcmtpbmdDb250ZXh0IGlzIGludGVuZGVkIHRv
IGJlIHVzZWQgb25seSB3aXRoIFJlc291cmNlSGFuZGxlLCB3aGljaCBpcyBub3cgb25seSB1c2Vk
IGluIFdlYktpdExlZ2FjeS4KKyAgICAgICAgTm93IHRoYXQgd2UgZG9uJ3QgdXNlIFJlc291cmNl
SGFuZGxlIGluIHRoZSBXZWJQcm9jZXNzLCBldmVyeXRoaW5nIHRoYXQgd2FzIGRvbmUgdGhyb3Vn
aCB0aGUgTmV0d29ya2luZ0NvbnRleHQKKyAgICAgICAgY2FuIG5vdyBiZSBkb25lIGEgY2xlYW5l
ciB3YXkgd2l0aCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnByb3h5U2VydmVyc0ZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm94
eVNlcnZlcnNGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNl
cnZlclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJveHlTZXJ2ZXJzRm9yVVJMKToKKwog
MjAxOC0wMS0yOSAgRW1pbGlvIENvYm9zIMOBbHZhcmV6ICA8ZW1pbGlvQGNyaXNhbC5pbz4KIAog
ICAgICAgICBUcml2aWFsbHkgY2xlYW51cCBzdGQ6Om9wdGlvbmFsIHVzYWdlIGluIFJlbmRlckJs
b2NrRmxvdy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjI3NjgyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgyNiw3ICsyODI2LDcgQEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlUwogCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9y
LCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0g
ICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShuZXR3b3JraW5nQ29udGV4dCgpLCBpZGVudGlmaWVyLCBuZXdS
ZXF1ZXN0LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
ZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOworICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlk
ZW50aWZpZXIsIG5ld1JlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7CiAgICAgICAgICAgICBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5n
KCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCBib29s
IExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBCiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNyb3NzT3JpZ2luLCAiYW5vbnltb3VzIikgJiYgZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShocmVmKSkpCiAg
ICAgICAgICAgICBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2U7CiAgICAgICAgIEFTU0VSVChkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIo
KS5uZXR3b3JraW5nQ29udGV4dCgpKTsKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPnByZWNvbm5lY3RUbygqZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCku
bmV0d29ya2luZ0NvbnRleHQoKSwgaHJlZiwgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5LCBbd2Vh
a0RvY3VtZW50ID0gZG9jdW1lbnQuY3JlYXRlV2Vha1B0cigpLCBocmVmXShSZXNvdXJjZUVycm9y
IGVycm9yKSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgp
LT5wcmVjb25uZWN0VG8oZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCksIGhyZWYsIHN0b3JhZ2VD
cmVkZW50aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0ZVdlYWtQdHIo
KSwgaHJlZl0oUmVzb3VyY2VFcnJvciBlcnJvcikgewogICAgICAgICAgICAgaWYgKCF3ZWFrRG9j
dW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZyYW1lOworY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CiBjbGFz
cyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudDsKLWNsYXNzIE5ldHdvcmtpbmdDb250
ZXh0OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFZlY3RvcjxjaGFyPiYgZGF0YSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNv
dXJjZUxvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNv
dXJjZUxvYWRlciosIGJvb2wpID0gMDsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzdGFydFBpbmdMb2FkKEZyYW1lJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgY29uc3QgRmV0Y2hPcHRpb25z
JiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmID0geyB9KSA9IDA7CiAKICAgICB1c2luZyBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlY29ubmVjdFRvKE5ldHdvcmtpbmdD
b250ZXh0JiwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZWNvbm5lY3RUbyhG
cmFtZUxvYWRlciYsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25u
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlRGVy
aXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUtleSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
PSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNl
cnZlci5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3h5U2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0
ZToKIH07CiAKIC8vIFJldHVybiBhIHZlY3RvciBvZiBwcm94eSBzZXJ2ZXJzIGZvciB0aGUgZ2l2
ZW4gVVJMLgotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNG
b3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKTsKK1dFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYpOwog
CiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdmVjdG9yIG9mIHByb3h5IHNlcnZlcnMgdG8gYSBQQUMg
c3RyaW5nLCBhcyBkZXNjcmliZWQgaW4KIC8vIGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIw
MDYwNDI0MDA1MDM3L3dwLm5ldHNjYXBlLmNvbS9lbmcvbW96aWxsYS8yLjAvcmVsbm90ZXMvZGVt
by9wcm94eS1saXZlLmh0bWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAkocmV2aXNpb24gMjI3NjgyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIGFkZFByb3h5
U2VydmVyc0ZvclVSTChWZWN0b3IKICAgICBwcm9jZXNzUHJveHlTZXJ2ZXJzKHByb3h5U2VydmVy
cywgcHJveGllc0ZvclVSTC5nZXQoKSwgY2ZVUkwuZ2V0KCkpOwogfQogCi1WZWN0b3I8UHJveHlT
ZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgTmV0d29ya2lu
Z0NvbnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnM7CiAgICAg
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJD
dXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJv
eHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5n
Q29udGV4dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBV
UkwmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIFZlY3RvcjxQcm94
eVNlcnZlcj4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Q
cm94eVNlcnZlclNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9y
VVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KICAgICByZXR1cm4g
VmVjdG9yPFByb3h5U2VydmVyPigpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTA5MikKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTgtMDItMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtpbmdDb250ZXh0IGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMjEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpwcm94aWVzRm9yVVJM
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKwog
MjAxOC0wMi0yNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFbnN1cmUgdGFyZ2V0IHRyaXBsZSBpcyBwcm9wYWdhdGVkIGNvcnJlY3RseSB0byBEZXJp
dmVkU291cmNlcy5tYWtlCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIldlYkVycm9y
cy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCIKLSNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgpAQCAtNDA1LDE1ICs0MDQsMjAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6bmV0d29ya1Byb2Nlc3NDcgogICAgICAgICBwcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIo
aW50ZXJuYWxFcnJvcihVUkwoKSkpOwogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25l
ZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENs
aWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
CitzdGF0aWMgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KEZy
YW1lKiBmcmFtZSkKIHsKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJDb250ZXh0
ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQpOwotICAg
IC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAiRW1wdHlG
cmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuCi0gICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3QgZXhpc3Qg
YW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGllbnQsCi0g
ICAgLy8gYnV0IGluIHRoZSBtZWFudGltZSB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSBub3QgdG8gbWlz
LWNhc3QuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0g
d2ViQ29udGV4dC0+d2ViRnJhbWVMb2FkZXJDbGllbnQoKTsKLSAgICBXZWJGcmFtZSogd2ViRnJh
bWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFt
ZSgpIDogMDsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogMDsKKyAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnJlZmVycmVy
UG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3sK
KyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2Vi
RnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJG
cmFtZSgpIDogbnVsbHB0cjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJG
cmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSByZXNv
dXJjZUxvYWRJZGVudGlmaWVyOwpAQCAtNDI1LDcgKzQyOSw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmMKICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsK
ICAgICBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kg
PSBjbGllbnRDcmVkZW50aWFsUG9saWN5OwotICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBjb250ZXh0LT5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCk7CisgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3Qod2ViRnJhbWUgPyB3ZWJGcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxs
cHRyKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwogCkBAIC00NDgsMzQgKzQ1MiwyMiBAQCBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpCiAKIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0IEZl
dGNoT3B0aW9ucyYgb3B0aW9ucywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBjYWxsIHRvIGNyZWF0ZVBp
bmdIYW5kbGUgbWlnaHQgYmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBlbXB0eSBEb2N1bWVudCBjcmVh
dGlvbiBiZWZvcmUgYSBOZXR3b3JraW5nQ29udGV4dCBleGlzdHMuCi0gICAgLy8gSXQgaXMgbm90
IGNsZWFyIHRoYXQgd2Ugc2hvdWxkIHNlbmQgcGluZyBsb2FkcyBkdXJpbmcgdGhhdCBwcm9jZXNz
IGFueXdheXMuCi0gICAgYXV0byogbmV0d29ya2luZ0NvbnRleHQgPSBmcmFtZS5sb2FkZXIoKS5u
ZXR3b3JraW5nQ29udGV4dCgpOwotICAgIGlmICghbmV0d29ya2luZ0NvbnRleHQpIHsKLSAgICAg
ICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
aW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSwgeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdlYkNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29ya2luZ0NvbnRleHQpOwotICAg
IFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHdlYkNvbnRleHQt
PndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7Ci0KICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAgICBpZiAoY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbEVycm9yKHJlcXVl
c3QudXJsKCkpLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFt
ZXRlcnMuaWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBsb2FkUGFy
YW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmln
aW4gPSAmZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMuc2Vz
c2lvbklEID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+c2Vz
c2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIGxvYWRQ
YXJhbWV0ZXJzLnNlc3Npb25JRCA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+c2Vzc2lv
bklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogICAgIGxvYWRQYXJh
bWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gb3B0aW9ucy5jcmVkZW50aWFscyA9PSBG
ZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0ID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKICAgICBsb2FkUGFyYW1l
dGVycy5tb2RlID0gb3B0aW9ucy5tb2RlOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxv
d1JlZGlyZWN0cyA9IG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6
Rm9sbG93OwotICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QgPSBuZXR3b3JraW5nQ29udGV4dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0KCZmcmFtZSk7CiAgICAgaWYgKCFkb2N1bWVudC0+c2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKICAgICAgICAgaWYgKGF1dG8gKiBjb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpCiAgICAg
ICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJp
dHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwpAQCAtNTA1LDE0ICs0OTcsMTMgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUGluZ0xvYQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGVycm9yKSwgV1RGTW92ZShyZXNwb25zZSkpOwogfQogCi12b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oTmV0d29ya2luZ0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXIm
IGZyYW1lTG9hZGVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzLmFkZChwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBhdXRvJiB3ZWJDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCY+KGNvbnRleHQpOwotICAgIGF1dG8q
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gd2ViQ29udGV4dC53ZWJGcmFtZUxvYWRlckNsaWVudCgp
OworICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVu
dChmcmFtZUxvYWRlci5jbGllbnQoKSk7CiAgICAgaWYgKCF3ZWJGcmFtZUxvYWRlckNsaWVudCkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbEVycm9yKHVybCkpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH5XZWJMb2FkZXJTdHJhdGVneSgpIGZpbmFs
OwogICAgIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25l
ZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgZmluYWw7CisgICAgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXIqLCBib29sKSBmaW5hbDsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVx
dWVzdEhlYWRlcnMsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRf
dCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAg
ICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVp
bnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYp
OwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3Qm
IGJvZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CkBA
IC0xNTc2LDkgKzE1NzUsNyBAQCBmbG9hdCBQbHVnaW5WaWV3Ojpjb250ZW50c1NjYWxlRmFjdG9y
KCkKICAgICAKIFN0cmluZyBQbHVnaW5WaWV3Ojpwcm94aWVzRm9yVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQogewotICAgIGNvbnN0IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGZyYW1l
KCkgPyAmZnJhbWUoKS0+bG9hZGVyKCkgOiAwOwotICAgIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0ID0gZnJhbWVMb2FkZXIgPyBmcmFtZUxvYWRlci0+bmV0d29ya2luZ0NvbnRleHQo
KSA6IDA7Ci0gICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZl
cnNGb3JVUkwoVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBjb250ZXh0KTsKKyAgICBWZWN0b3I8UHJv
eHlTZXJ2ZXI+IHByb3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChVUkwoVVJMKCksIHVy
bFN0cmluZykpOwogICAgIHJldHVybiB0b1N0cmluZyhwcm94eVNlcnZlcnMpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEl0
ZW1JbmZvLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0pTRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
aW5nQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZVRyYXZlcnNhbC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
LSNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZVJlbmRlclN0eWxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg+CkBAIC02ODMsOCArNjgyLDkgQEAgYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTAogICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QqIHJlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVy
bF07CiAgICAgW3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3RyaW5nKil1c2VyQWdlbnQodXJsKSBmb3JI
VFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAq
Y2FjaGVkUmVzcG9uc2U7Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNl
c3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4
dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQotICAgICAgICBjYWNoZWRS
ZXNwb25zZSA9IGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVz
dCk7CisgICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKGNvcmVQYWdlKCktPnNlc3Npb25JRCgpKTsKKyAgICBpZiAoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbiA/IHN0b3JhZ2VT
ZXNzaW9uLT5wbGF0Zm9ybVNlc3Npb24oKSA6IG51bGxwdHIpCisgICAgICAgIGNhY2hlZFJlc3Bv
bnNlID0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHBsYXRmb3JtU2Vzc2lvbiwgcmVxdWVzdCk7
CiAgICAgZWxzZQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRV
UkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFtyZXF1ZXN0
IHJlbGVhc2VdOwpAQCAtNjk3LDggKzY5Nyw5IEBAIHN0YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNl
ICpjYWNoZWRSZXNwb24KICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVz
dCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxd
KTsKICAgICBbcmVxdWVzdCBzZXRWYWx1ZTooTlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdlbnQo
dXJsKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAKLSAgICBpZiAoQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCku
cGxhdGZvcm1TZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBjYWNoZWRSZXNwb25zZUZvclJlcXVl
c3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZ2V0KCkpOworICAgIGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbih3ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcGxh
dGZvcm1TZXNzaW9uID0gc3RvcmFnZVNlc3Npb24gPyBzdG9yYWdlU2Vzc2lvbi0+cGxhdGZvcm1T
ZXNzaW9uKCkgOiBudWxscHRyKQorICAgICAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2VGb3JSZXF1
ZXN0KHBsYXRmb3JtU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAKICAgICByZXR1cm4gW1tOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5n
ZXQoKV07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NTkwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxOC0wMi0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya2luZ0NvbnRleHQgaW4gV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMyMTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAyMDE4LTAxLTIzICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIENv
bXBsZXRpb25IYW5kbGVycyBmb3IgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAy
Mjc1OTApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw5ICsxMDUsOSBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAgUmVzb3VyY2VIYW5kbGU6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29udGV4dCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGU6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZnJhbWVMb2FkZXIubmV0d29ya2luZ0NvbnRleHQoKSwg
cmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVh
bUxvYWQoRnJhbWUmIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCYgY2xp
ZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnN0YXJ0UGluZwogICAgIG5ldyBQaW5nSGFuZGxlKGZyYW1lLmxvYWRlcigpLm5ldHdvcmtp
bmdDb250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgIT0gRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6T21pdCwgb3B0aW9ucy5yZWRpcmVjdCA9PSBGZXRjaE9wdGlvbnM6OlJl
ZGlyZWN0OjpGb2xsb3csIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnByZWNvbm5lY3RUbyhOZXR3b3JraW5nQ29udGV4dCYs
IGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8o
RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29u
bmVjdENvbXBsZXRpb25IYW5kbGVyJiYpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaAkocmV2aXNpb24gMjI3NTkwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKICAg
ICB2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgdW5zaWduZWQgbG9uZywgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikgZmluYWw7
CisgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVy
JiwgdW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
VmVjdG9yPGNoYXI+JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXIqLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNl
aXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJl
Y3RVUkwpIGZpbmFsOwpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0
UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwg
UGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAotICAgIHZvaWQgcHJlY29ubmVj
dFRvKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3JlRGVy
aXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsIHsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc1OTApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
OC0wMi0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya2luZ0NvbnRleHQgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMyMTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRQcm94eSk6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBn
ZXRWYXJpYWJsZTpmb3JVUkw6dmFsdWU6bGVuZ3RoOl0pOgorCiAyMDE4LTAxLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBRVEtpdCBwcmVmZXJlbmNlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gMjI3
NTkwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNjIsNyArMjE2Miw3IEBAIC0gKE5QRXJyb3Ip
Z2V0VmFyaWFibGU6KE5QTlVSTFZhcmlhYmxlKXYKICAgICAgICAgICAgIGlmICghVVJMKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHBy
b3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChVUkwsIDApOworICAgICAgICAgICAgVmVj
dG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwoVVJMKTsK
ICAgICAgICAgICAgIENTdHJpbmcgcHJveGllc1VURjggPSB0b1N0cmluZyhwcm94eVNlcnZlcnMp
LnV0ZjgoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KE5QTl9NZW1BbGxvYyhwcm94aWVzVVRGOC5sZW5ndGgoKSkpOwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjI3NTkwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCBib29sIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0UHJvCiAgICAgaWYgKCF1cmwpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzID0g
cHJveHlTZXJ2ZXJzRm9yVVJMKHVybCwgMCk7CisgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94
eVNlcnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwodXJsKTsKICAgICBXVEY6OkNTdHJpbmcgcHJv
eHlTdHJpbmdVVEY4ID0gdG9TdHJpbmcocHJveHlTZXJ2ZXJzKS51dGY4KCk7CiAKICAgICBwcm94
eUxlbmd0aCA9IHByb3h5U3RyaW5nVVRGOC5sZW5ndGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTAyLTI4ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVk
dWNlIHVzZSBvZiBOZXR3b3JraW5nQ29udGV4dCBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzIxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKToKKwogMjAxOC0w
MS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBhbm90aGVyIGF0dGVtcHQgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkIGFmdGVy
IHIyMjc0NzkuCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAJKHJldmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTgsMTAgKzEyOTgs
NyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKE5QTlVSCiAgICAgY2FzZSBO
UE5VUkxWUHJveHk6IHsKICAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+
YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7Ci0gICAg
ICAgICAgICBjb25zdCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBmcmFtZSA/ICZmcmFtZS0+
bG9hZGVyKCkgOiAwOwotICAgICAgICAgICAgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQgPSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVyLT5uZXR3b3JraW5nQ29udGV4dCgpIDogMDsK
LSAgICAgICAgICAgIGNvbnN0IENTdHJpbmcgcHJveHlTdHIgPSB0b1N0cmluZyhwcm94eVNlcnZl
cnNGb3JVUkwodSwgY29udGV4dCkpLnV0ZjgoKTsKKyAgICAgICAgICAgIGNvbnN0IENTdHJpbmcg
cHJveHlTdHIgPSB0b1N0cmluZyhwcm94eVNlcnZlcnNGb3JVUkwodSkpLnV0ZjgoKTsKICAgICAg
ICAgICAgIGlmICghcHJveHlTdHIuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgc2l6ZSA9IHByb3h5U3RyLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICp2YWx1ZSA9IHN0
YXRpY19jYXN0PGNoYXIqPihOUE5fTWVtQWxsb2Moc2l6ZSsxKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334748</attachid>
            <date>2018-02-28 09:54:32 -0800</date>
            <delta_ts>2018-02-28 11:54:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183213-20180228095431.patch</filename>
            <type>text/plain</type>
            <size>30763</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzc1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE4LTAyLTI4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVz
ZSBvZiBOZXR3b3JraW5nQ29udGV4dCBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzIxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldHdvcmtpbmdDb250ZXh0IGlzIGludGVuZGVkIHRv
IGJlIHVzZWQgb25seSB3aXRoIFJlc291cmNlSGFuZGxlLCB3aGljaCBpcyBub3cgb25seSB1c2Vk
IGluIFdlYktpdExlZ2FjeS4KKyAgICAgICAgTm93IHRoYXQgd2UgZG9uJ3QgdXNlIFJlc291cmNl
SGFuZGxlIGluIHRoZSBXZWJQcm9jZXNzLCBldmVyeXRoaW5nIHRoYXQgd2FzIGRvbmUgdGhyb3Vn
aCB0aGUgTmV0d29ya2luZ0NvbnRleHQKKyAgICAgICAgY2FuIG5vdyBiZSBkb25lIGEgY2xlYW5l
ciB3YXkgd2l0aCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToKKyAgICAgICAgKiBsb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnByb3h5U2VydmVyc0ZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm94
eVNlcnZlcnNGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNl
cnZlclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJveHlTZXJ2ZXJzRm9yVVJMKToKKwog
MjAxOC0wMS0yOSAgRW1pbGlvIENvYm9zIMOBbHZhcmV6ICA8ZW1pbGlvQGNyaXNhbC5pbz4KIAog
ICAgICAgICBUcml2aWFsbHkgY2xlYW51cCBzdGQ6Om9wdGlvbmFsIHVzYWdlIGluIFJlbmRlckJs
b2NrRmxvdy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjI3NjgyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgyNiw3ICsyODI2LDcgQEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlUwogCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9y
LCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0g
ICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShuZXR3b3JraW5nQ29udGV4dCgpLCBpZGVudGlmaWVyLCBuZXdS
ZXF1ZXN0LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
ZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOworICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlk
ZW50aWZpZXIsIG5ld1JlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7CiAgICAgICAgICAgICBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5n
KCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCBib29s
IExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBCiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNyb3NzT3JpZ2luLCAiYW5vbnltb3VzIikgJiYgZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShocmVmKSkpCiAg
ICAgICAgICAgICBzdG9yYWdlQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2U7CiAgICAgICAgIEFTU0VSVChkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIo
KS5uZXR3b3JraW5nQ29udGV4dCgpKTsKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPnByZWNvbm5lY3RUbygqZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCku
bmV0d29ya2luZ0NvbnRleHQoKSwgaHJlZiwgc3RvcmFnZUNyZWRlbnRpYWxzUG9saWN5LCBbd2Vh
a0RvY3VtZW50ID0gZG9jdW1lbnQuY3JlYXRlV2Vha1B0cigpLCBocmVmXShSZXNvdXJjZUVycm9y
IGVycm9yKSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgp
LT5wcmVjb25uZWN0VG8oZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCksIGhyZWYsIHN0b3JhZ2VD
cmVkZW50aWFsc1BvbGljeSwgW3dlYWtEb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0ZVdlYWtQdHIo
KSwgaHJlZl0oUmVzb3VyY2VFcnJvciBlcnJvcikgewogICAgICAgICAgICAgaWYgKCF3ZWFrRG9j
dW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZyYW1lOworY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CiBjbGFz
cyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudDsKLWNsYXNzIE5ldHdvcmtpbmdDb250
ZXh0OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFZlY3RvcjxjaGFyPiYgZGF0YSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNv
dXJjZUxvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNv
dXJjZUxvYWRlciosIGJvb2wpID0gMDsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzdGFydFBpbmdMb2FkKEZyYW1lJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgY29uc3QgRmV0Y2hPcHRpb25z
JiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmID0geyB9KSA9IDA7CiAKICAgICB1c2luZyBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlY29ubmVjdFRvKE5ldHdvcmtpbmdD
b250ZXh0JiwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZWNvbm5lY3RUbyhG
cmFtZUxvYWRlciYsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25u
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlRGVy
aXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUtleSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
PSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNl
cnZlci5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3h5U2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0
ZToKIH07CiAKIC8vIFJldHVybiBhIHZlY3RvciBvZiBwcm94eSBzZXJ2ZXJzIGZvciB0aGUgZ2l2
ZW4gVVJMLgotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNG
b3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKTsKK1dFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYpOwog
CiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdmVjdG9yIG9mIHByb3h5IHNlcnZlcnMgdG8gYSBQQUMg
c3RyaW5nLCBhcyBkZXNjcmliZWQgaW4KIC8vIGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIw
MDYwNDI0MDA1MDM3L3dwLm5ldHNjYXBlLmNvbS9lbmcvbW96aWxsYS8yLjAvcmVsbm90ZXMvZGVt
by9wcm94eS1saXZlLmh0bWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAkocmV2aXNpb24gMjI3NjgyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIGFkZFByb3h5
U2VydmVyc0ZvclVSTChWZWN0b3IKICAgICBwcm9jZXNzUHJveHlTZXJ2ZXJzKHByb3h5U2VydmVy
cywgcHJveGllc0ZvclVSTC5nZXQoKSwgY2ZVUkwuZ2V0KCkpOwogfQogCi1WZWN0b3I8UHJveHlT
ZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgTmV0d29ya2lu
Z0NvbnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnM7CiAgICAg
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJD
dXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJv
eHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5n
Q29udGV4dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBV
UkwmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIFZlY3RvcjxQcm94
eVNlcnZlcj4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Q
cm94eVNlcnZlclNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9y
VVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KICAgICByZXR1cm4g
VmVjdG9yPFByb3h5U2VydmVyPigpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTA5MikKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTgtMDItMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtpbmdDb250ZXh0IGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMjEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpwcm94aWVzRm9yVVJM
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKwog
MjAxOC0wMi0yNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFbnN1cmUgdGFyZ2V0IHRyaXBsZSBpcyBwcm9wYWdhdGVkIGNvcnJlY3RseSB0byBEZXJp
dmVkU291cmNlcy5tYWtlCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDIyNzY4
MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIldlYkVycm9y
cy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCIKLSNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgpAQCAtNDA1LDE1ICs0MDQsMjAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6bmV0d29ya1Byb2Nlc3NDcgogICAgICAgICBwcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIo
aW50ZXJuYWxFcnJvcihVUkwoKSkpOwogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25l
ZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENs
aWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
CitzdGF0aWMgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KEZy
YW1lKiBmcmFtZSkKIHsKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KiB3ZWJDb250ZXh0
ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCo+KGNvbnRleHQpOwotICAg
IC8vIEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAiRW1wdHlG
cmFtZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuCi0gICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3QgZXhpc3Qg
YW5kIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGllbnQsCi0g
ICAgLy8gYnV0IGluIHRoZSBtZWFudGltZSB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSBub3QgdG8gbWlz
LWNhc3QuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0g
d2ViQ29udGV4dC0+d2ViRnJhbWVMb2FkZXJDbGllbnQoKTsKLSAgICBXZWJGcmFtZSogd2ViRnJh
bWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFt
ZSgpIDogMDsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogMDsKKyAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnJlZmVycmVy
UG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3sK
KyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2Vi
RnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJG
cmFtZSgpIDogbnVsbHB0cjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJG
cmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSByZXNv
dXJjZUxvYWRJZGVudGlmaWVyOwpAQCAtNDI1LDcgKzQyOSw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmMKICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsK
ICAgICBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kg
PSBjbGllbnRDcmVkZW50aWFsUG9saWN5OwotICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBjb250ZXh0LT5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCk7CisgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3Qod2ViRnJhbWUgPyB3ZWJGcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxs
cHRyKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwogCkBAIC00NDgsMzQgKzQ1MiwyMiBAQCBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpCiAKIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0IEZl
dGNoT3B0aW9ucyYgb3B0aW9ucywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBjYWxsIHRvIGNyZWF0ZVBp
bmdIYW5kbGUgbWlnaHQgYmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBlbXB0eSBEb2N1bWVudCBjcmVh
dGlvbiBiZWZvcmUgYSBOZXR3b3JraW5nQ29udGV4dCBleGlzdHMuCi0gICAgLy8gSXQgaXMgbm90
IGNsZWFyIHRoYXQgd2Ugc2hvdWxkIHNlbmQgcGluZyBsb2FkcyBkdXJpbmcgdGhhdCBwcm9jZXNz
IGFueXdheXMuCi0gICAgYXV0byogbmV0d29ya2luZ0NvbnRleHQgPSBmcmFtZS5sb2FkZXIoKS5u
ZXR3b3JraW5nQ29udGV4dCgpOwotICAgIGlmICghbmV0d29ya2luZ0NvbnRleHQpIHsKLSAgICAg
ICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
aW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSwgeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQqIHdlYkNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Kj4obmV0d29ya2luZ0NvbnRleHQpOwotICAg
IFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHdlYkNvbnRleHQt
PndlYkZyYW1lTG9hZGVyQ2xpZW50KCk7Ci0KICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAgICBpZiAoY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbEVycm9yKHJlcXVl
c3QudXJsKCkpLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFt
ZXRlcnMuaWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBsb2FkUGFy
YW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmln
aW4gPSAmZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMuc2Vz
c2lvbklEID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+c2Vz
c2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIGxvYWRQ
YXJhbWV0ZXJzLnNlc3Npb25JRCA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+c2Vzc2lv
bklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogICAgIGxvYWRQYXJh
bWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gb3B0aW9ucy5jcmVkZW50aWFscyA9PSBG
ZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0ID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKICAgICBsb2FkUGFyYW1l
dGVycy5tb2RlID0gb3B0aW9ucy5tb2RlOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxv
d1JlZGlyZWN0cyA9IG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6
Rm9sbG93OwotICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QgPSBuZXR3b3JraW5nQ29udGV4dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0KCZmcmFtZSk7CiAgICAgaWYgKCFkb2N1bWVudC0+c2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKICAgICAgICAgaWYgKGF1dG8gKiBjb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpCiAgICAg
ICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJp
dHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwpAQCAtNTA1LDE0ICs0OTcsMTMgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUGluZ0xvYQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGVycm9yKSwgV1RGTW92ZShyZXNwb25zZSkpOwogfQogCi12b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oTmV0d29ya2luZ0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXIm
IGZyYW1lTG9hZGVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzLmFkZChwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBhdXRvJiB3ZWJDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCY+KGNvbnRleHQpOwotICAgIGF1dG8q
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gd2ViQ29udGV4dC53ZWJGcmFtZUxvYWRlckNsaWVudCgp
OworICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVu
dChmcmFtZUxvYWRlci5jbGllbnQoKSk7CiAgICAgaWYgKCF3ZWJGcmFtZUxvYWRlckNsaWVudCkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnRlcm5hbEVycm9yKHVybCkpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgJKHJldmlzaW9uIDIyNzY4MikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH5XZWJMb2FkZXJTdHJhdGVneSgpIGZpbmFs
OwogICAgIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25l
ZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgZmluYWw7CisgICAgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXIqLCBib29sKSBmaW5hbDsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVx
dWVzdEhlYWRlcnMsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRf
dCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAg
ICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVp
bnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYp
OwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3Qm
IGJvZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CkBA
IC0xNTc2LDkgKzE1NzUsNyBAQCBmbG9hdCBQbHVnaW5WaWV3Ojpjb250ZW50c1NjYWxlRmFjdG9y
KCkKICAgICAKIFN0cmluZyBQbHVnaW5WaWV3Ojpwcm94aWVzRm9yVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQogewotICAgIGNvbnN0IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGZyYW1l
KCkgPyAmZnJhbWUoKS0+bG9hZGVyKCkgOiAwOwotICAgIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0ID0gZnJhbWVMb2FkZXIgPyBmcmFtZUxvYWRlci0+bmV0d29ya2luZ0NvbnRleHQo
KSA6IDA7Ci0gICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZl
cnNGb3JVUkwoVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBjb250ZXh0KTsKKyAgICBWZWN0b3I8UHJv
eHlTZXJ2ZXI+IHByb3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChVUkwoVVJMKCksIHVy
bFN0cmluZykpOwogICAgIHJldHVybiB0b1N0cmluZyhwcm94eVNlcnZlcnMpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjI3NjgyKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEl0
ZW1JbmZvLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0pTRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
aW5nQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZVRyYXZlcnNhbC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCShyZXZpc2lvbiAyMjc2ODIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
LSNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZVJlbmRlclN0eWxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg+CkBAIC02ODMsOCArNjgyLDkgQEAgYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTAogICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QqIHJlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVy
bF07CiAgICAgW3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3RyaW5nKil1c2VyQWdlbnQodXJsKSBmb3JI
VFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAq
Y2FjaGVkUmVzcG9uc2U7Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNl
c3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4
dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQotICAgICAgICBjYWNoZWRS
ZXNwb25zZSA9IGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVz
dCk7CisgICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKGNvcmVQYWdlKCktPnNlc3Npb25JRCgpKTsKKyAgICBpZiAoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbiA/IHN0b3JhZ2VT
ZXNzaW9uLT5wbGF0Zm9ybVNlc3Npb24oKSA6IG51bGxwdHIpCisgICAgICAgIGNhY2hlZFJlc3Bv
bnNlID0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHBsYXRmb3JtU2Vzc2lvbiwgcmVxdWVzdCk7
CiAgICAgZWxzZQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRV
UkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFtyZXF1ZXN0
IHJlbGVhc2VdOwpAQCAtNjk3LDggKzY5Nyw5IEBAIHN0YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNl
ICpjYWNoZWRSZXNwb24KICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVz
dCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxd
KTsKICAgICBbcmVxdWVzdCBzZXRWYWx1ZTooTlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdlbnQo
dXJsKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAKLSAgICBpZiAoQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCku
cGxhdGZvcm1TZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBjYWNoZWRSZXNwb25zZUZvclJlcXVl
c3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZ2V0KCkpOworICAgIGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbih3ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcGxh
dGZvcm1TZXNzaW9uID0gc3RvcmFnZVNlc3Npb24gPyBzdG9yYWdlU2Vzc2lvbi0+cGxhdGZvcm1T
ZXNzaW9uKCkgOiBudWxscHRyKQorICAgICAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2VGb3JSZXF1
ZXN0KHBsYXRmb3JtU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAKICAgICByZXR1cm4gW1tOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5n
ZXQoKV07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NTkwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxOC0wMi0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya2luZ0NvbnRleHQgaW4gV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMyMTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAyMDE4LTAxLTIzICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIENv
bXBsZXRpb25IYW5kbGVycyBmb3IgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAy
Mjc1OTApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw5ICsxMDUsOSBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAgUmVzb3VyY2VIYW5kbGU6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29udGV4dCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGU6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZnJhbWVMb2FkZXIubmV0d29ya2luZ0NvbnRleHQoKSwg
cmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVh
bUxvYWQoRnJhbWUmIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCYgY2xp
ZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnN0YXJ0UGluZwogICAgIG5ldyBQaW5nSGFuZGxlKGZyYW1lLmxvYWRlcigpLm5ldHdvcmtp
bmdDb250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgIT0gRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6T21pdCwgb3B0aW9ucy5yZWRpcmVjdCA9PSBGZXRjaE9wdGlvbnM6OlJl
ZGlyZWN0OjpGb2xsb3csIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnByZWNvbm5lY3RUbyhOZXR3b3JraW5nQ29udGV4dCYs
IGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwcmVjb25uZWN0VG8o
RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29u
bmVjdENvbXBsZXRpb25IYW5kbGVyJiYpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaAkocmV2aXNpb24gMjI3NTkwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKICAg
ICB2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgdW5zaWduZWQgbG9uZywgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikgZmluYWw7
CisgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVy
JiwgdW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
VmVjdG9yPGNoYXI+JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXIqLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNl
aXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJl
Y3RVUkwpIGZpbmFsOwpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0
UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwg
UGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAotICAgIHZvaWQgcHJlY29ubmVj
dFRvKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3JlRGVy
aXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsIHsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc1OTApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
OC0wMi0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya2luZ0NvbnRleHQgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMyMTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRQcm94eSk6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBn
ZXRWYXJpYWJsZTpmb3JVUkw6dmFsdWU6bGVuZ3RoOl0pOgorCiAyMDE4LTAxLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBRVEtpdCBwcmVmZXJlbmNlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gMjI3
NTkwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNjIsNyArMjE2Miw3IEBAIC0gKE5QRXJyb3Ip
Z2V0VmFyaWFibGU6KE5QTlVSTFZhcmlhYmxlKXYKICAgICAgICAgICAgIGlmICghVVJMKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHBy
b3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChVUkwsIDApOworICAgICAgICAgICAgVmVj
dG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwoVVJMKTsK
ICAgICAgICAgICAgIENTdHJpbmcgcHJveGllc1VURjggPSB0b1N0cmluZyhwcm94eVNlcnZlcnMp
LnV0ZjgoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KE5QTl9NZW1BbGxvYyhwcm94aWVzVVRGOC5sZW5ndGgoKSkpOwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjI3NTkwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCBib29sIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0UHJvCiAgICAgaWYgKCF1cmwpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzID0g
cHJveHlTZXJ2ZXJzRm9yVVJMKHVybCwgMCk7CisgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94
eVNlcnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwodXJsKTsKICAgICBXVEY6OkNTdHJpbmcgcHJv
eHlTdHJpbmdVVEY4ID0gdG9TdHJpbmcocHJveHlTZXJ2ZXJzKS51dGY4KCk7CiAKICAgICBwcm94
eUxlbmd0aCA9IHByb3h5U3RyaW5nVVRGOC5sZW5ndGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTAyLTI4ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVk
dWNlIHVzZSBvZiBOZXR3b3JraW5nQ29udGV4dCBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzIxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKToKKwogMjAxOC0w
MS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBhbm90aGVyIGF0dGVtcHQgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkIGFmdGVy
IHIyMjc0NzkuCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAJKHJldmlzaW9uIDIyNzU5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTgsMTAgKzEyOTgs
NyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKE5QTlVSCiAgICAgY2FzZSBO
UE5VUkxWUHJveHk6IHsKICAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+
YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7Ci0gICAg
ICAgICAgICBjb25zdCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBmcmFtZSA/ICZmcmFtZS0+
bG9hZGVyKCkgOiAwOwotICAgICAgICAgICAgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQgPSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVyLT5uZXR3b3JraW5nQ29udGV4dCgpIDogMDsK
LSAgICAgICAgICAgIGNvbnN0IENTdHJpbmcgcHJveHlTdHIgPSB0b1N0cmluZyhwcm94eVNlcnZl
cnNGb3JVUkwodSwgY29udGV4dCkpLnV0ZjgoKTsKKyAgICAgICAgICAgIGNvbnN0IENTdHJpbmcg
cHJveHlTdHIgPSB0b1N0cmluZyhwcm94eVNlcnZlcnNGb3JVUkwodSkpLnV0ZjgoKTsKICAgICAg
ICAgICAgIGlmICghcHJveHlTdHIuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgc2l6ZSA9IHByb3h5U3RyLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICp2YWx1ZSA9IHN0
YXRpY19jYXN0PGNoYXIqPihOUE5fTWVtQWxsb2Moc2l6ZSsxKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>