<?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>102983</bug_id>
          
          <creation_ts>2012-11-21 15:00:47 -0800</creation_ts>
          <short_desc>CollectionType and DynamicNodeList::NodeListType should be merged</short_desc>
          <delta_ts>2012-11-21 22:19:10 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>78909</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>koivisto</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>773328</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-21 15:00:47 -0800</bug_when>
    <thetext>CollectionType and DynamicNodeList::NodeListType should be merged</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773331</commentid>
    <comment_count>1</comment_count>
      <attachid>175530</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-21 15:06:18 -0800</bug_when>
    <thetext>Created attachment 175530
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773337</commentid>
    <comment_count>2</comment_count>
      <attachid>175532</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-21 15:13:46 -0800</bug_when>
    <thetext>Created attachment 175532
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773348</commentid>
    <comment_count>3</comment_count>
      <attachid>175532</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-21 15:30:04 -0800</bug_when>
    <thetext>Comment on attachment 175532
cleanup

Attachment 175532 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14961137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773358</commentid>
    <comment_count>4</comment_count>
      <attachid>175532</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-21 15:35:54 -0800</bug_when>
    <thetext>Comment on attachment 175532
cleanup

Attachment 175532 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14950159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773359</commentid>
    <comment_count>5</comment_count>
      <attachid>175538</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-21 15:36:42 -0800</bug_when>
    <thetext>Created attachment 175538
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773360</commentid>
    <comment_count>6</comment_count>
      <attachid>175538</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-21 15:38:07 -0800</bug_when>
    <thetext>Comment on attachment 175538
Patch for landing

Let me wait for GTK+ and EFL EWSs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773567</commentid>
    <comment_count>7</comment_count>
      <attachid>175538</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 22:19:06 -0800</bug_when>
    <thetext>Comment on attachment 175538
Patch for landing

Clearing flags on attachment: 175538

Committed r135476: &lt;http://trac.webkit.org/changeset/135476&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773568</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 22:19:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175530</attachid>
            <date>2012-11-21 15:06:18 -0800</date>
            <delta_ts>2012-11-21 15:13:44 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-102983-20121121150405.patch</filename>
            <type>text/plain</type>
            <size>26280</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEyLTExLTIxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbGxlY3Rpb25UeXBlIGFuZCBE
eW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBzaG91bGQgYmUgbWVyZ2VkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5ODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZWQgRHluYW1pY05vZGVM
aXN0OjpOb2RlTGlzdFR5cGUgKGZvciBsaXZlIE5vZGVMaXN0KSBpbnRvIENvbGxlY3Rpb25UeXBl
LgorCisgICAgICAgICogZG9tL0NsYXNzTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xhc3NOb2RlTGlzdDo6fkNsYXNzTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1bnJlZ2lzdGVyTm9kZUxpc3RDYWNoZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9EeW5h
bWljTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVC
YXNlOjppbnZhbGlkYXRlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0
Q2FjaGVCYXNlOjppbnZhbGlkYXRlSWROYW1lQ2FjaGVNYXBzKToKKyAgICAgICAgKiBkb20vRHlu
YW1pY05vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljTm9kZUxpc3RDYWNoZUJh
c2U6OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWlj
Tm9kZUxpc3RDYWNoZUJhc2U6Omhhc0lkTmFtZUNhY2hlKTogQWRkZWQuIFJldHVybnMgaWZmIHRo
aXMgaXMgYSBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6aW52YWxpZGF0ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNO
b2RlTGlzdDo6RHluYW1pY05vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3Q6OkR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9NaWNy
b0RhdGFJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb0RhdGFJdGVtTGlzdDo6
fk1pY3JvRGF0YUl0ZW1MaXN0KToKKyAgICAgICAgKiBkb20vTmFtZU5vZGVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6fk5hbWVOb2RlTGlzdCk6CisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpyYWRpb05vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnByb3Bl
cnR5Tm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRDYWNoZVdpdGhBdG9taWNOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpjYWNoZVdpdGhBdG9taWNOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRDYWNoZVdpdGhOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpyZW1vdmVDYWNoZVdpdGhBdG9taWNO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpyZW1vdmVDYWNoZVdp
dGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpuYW1lZE5vZGVM
aXN0S2V5KToKKyAgICAgICAgKiBkb20vUHJvcGVydHlOb2RlTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9wZXJ0eU5vZGVMaXN0Ojp+UHJvcGVydHlOb2RlTGlzdCk6CisgICAgICAgICog
ZG9tL1RhZ05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRhZ05vZGVMaXN0Ojp+VGFn
Tm9kZUxpc3QpOgorICAgICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRPbmx5SW5jbHVkZURp
cmVjdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RUeXBlRnJvbUNvbGxlY3Rpb25U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5h
bWVBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQWNjZXB0YWJsZUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppdGVyYXRlRm9yTmV4
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppdGVt
QmVmb3JlT3JBZnRlcik6CisgICAgICAgICogaHRtbC9MYWJlbGFibGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxhYmVsYWJsZUVsZW1lbnQ6OmxhYmVscyk6CisgICAgICAgICogaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYWJlbHNOb2RlTGlzdDo6
fkxhYmVsc05vZGVMaXN0KToKKyAgICAgICAgKiBodG1sL1JhZGlvTm9kZUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6flJhZGlvTm9kZUxpc3QpOgorCiAyMDEyLTEx
LTIxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1MzM4LCByMTM1MzU5LCBhbmQgcjEzNTM3OC4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDEzNTQyNykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBDbGFzc05vZGVMaXN0OjpDbGFzc05vZGVMaXN0KFBhc3NSZWZQdHI8
CiAKIENsYXNzTm9kZUxpc3Q6On5DbGFzc05vZGVMaXN0KCkKIHsKLSAgICBvd25lck5vZGUoKS0+
bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aE5hbWUodGhpcywgRHluYW1pY05vZGVMaXN0OjpD
bGFzc05vZGVMaXN0VHlwZSwgbV9vcmlnaW5hbENsYXNzTmFtZXMpOworICAgIG93bmVyTm9kZSgp
LT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoTmFtZSh0aGlzLCBDbGFzc05vZGVMaXN0VHlw
ZSwgbV9vcmlnaW5hbENsYXNzTmFtZXMpOwogfSAKIAogYm9vbCBDbGFzc05vZGVMaXN0Ojpub2Rl
TWF0Y2hlcyhFbGVtZW50KiB0ZXN0Tm9kZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQ2Miw3ICszNDYyLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0
Q1NTVGFyZ2V0KEVsZW1lbnQqIG4pCiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyTm9kZUxpc3RD
YWNoZShEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UqIGxpc3QpCiB7Ci0gICAgaWYgKGxpc3QtPnR5
cGUoKSAhPSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlKQorICAgIGlmIChsaXN0LT5oYXNJZE5hbWVD
YWNoZSgpKQogICAgICAgICBtX25vZGVMaXN0Q291bnRzW0ludmFsaWRhdGVPbklkTmFtZUF0dHJD
aGFuZ2VdKys7CiAgICAgbV9ub2RlTGlzdENvdW50c1tsaXN0LT5pbnZhbGlkYXRpb25UeXBlKCld
Kys7CiAgICAgaWYgKGxpc3QtPmlzUm9vdGVkQXREb2N1bWVudCgpKQpAQCAtMzQ3MSw3ICszNDcx
LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKER5bgogCiB2b2lkIERv
Y3VtZW50Ojp1bnJlZ2lzdGVyTm9kZUxpc3RDYWNoZShEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Uq
IGxpc3QpCiB7Ci0gICAgaWYgKGxpc3QtPnR5cGUoKSAhPSBOb2RlTGlzdENvbGxlY3Rpb25UeXBl
KQorICAgIGlmIChsaXN0LT5oYXNJZE5hbWVDYWNoZSgpKQogICAgICAgICBtX25vZGVMaXN0Q291
bnRzW0ludmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2VdLS07CiAgICAgbV9ub2RlTGlzdENvdW50
c1tsaXN0LT5pbnZhbGlkYXRpb25UeXBlKCldLS07CiAgICAgaWYgKGxpc3QtPmlzUm9vdGVkQXRE
b2N1bWVudCgpKSB7CkBAIC01NjgyLDcgKzU2ODIsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBE
b2N1bWVudDo6Z2V0SXRlbXMoCiAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gY3JlYXRl
IGFuIGVtcHR5IHN0cmluZyBpZGVudGlmaWVyIHRvIG1hcCBzdWNoIHJlcXVlc3QgaW4gdGhlIGNh
Y2hlLgogICAgIFN0cmluZyBsb2NhbFR5cGVOYW1lcyA9IHR5cGVOYW1lcy5pc051bGwoKSA/IE1p
Y3JvRGF0YUl0ZW1MaXN0Ojp1bmRlZmluZWRJdGVtVHlwZSgpIDogdHlwZU5hbWVzOwogCi0gICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhO
YW1lPE1pY3JvRGF0YUl0ZW1MaXN0Pih0aGlzLCBEeW5hbWljTm9kZUxpc3Q6Ok1pY3JvRGF0YUl0
ZW1MaXN0VHlwZSwgbG9jYWxUeXBlTmFtZXMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgp
LT5lbnN1cmVOb2RlTGlzdHMoKS0+YWRkQ2FjaGVXaXRoTmFtZTxNaWNyb0RhdGFJdGVtTGlzdD4o
dGhpcywgTWljcm9EYXRhSXRlbUxpc3RUeXBlLCBsb2NhbFR5cGVOYW1lcyk7CiB9CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDEz
NTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjpp
bnZhbGlkYXQKICAgICBtX2lzSXRlbUNhY2hlVmFsaWQgPSBmYWxzZTsKICAgICBtX2lzTmFtZUNh
Y2hlVmFsaWQgPSBmYWxzZTsKICAgICBtX2lzSXRlbVJlZkVsZW1lbnRzQ2FjaGVWYWxpZCA9IGZh
bHNlOwotICAgIGlmICh0eXBlKCkgPT0gTm9kZUxpc3RDb2xsZWN0aW9uVHlwZSkKKyAgICBpZiAo
aXNOb2RlTGlzdCh0eXBlKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBIVE1MQ29s
bGVjdGlvbkNhY2hlQmFzZSogY2FjaGVCYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTENvbGxl
Y3Rpb25DYWNoZUJhc2UqPih0aGlzKTsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBEeW5hbWljTm9k
ZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdAogCiB2b2lkIER5bmFtaWNOb2RlTGlzdENhY2hlQmFz
ZTo6aW52YWxpZGF0ZUlkTmFtZUNhY2hlTWFwcygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHR5cGUo
KSAhPSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlKTsKKyAgICBBU1NFUlQoaGFzSWROYW1lQ2FjaGUo
KSk7CiAgICAgY29uc3QgSFRNTENvbGxlY3Rpb25DYWNoZUJhc2UqIGNhY2hlQmFzZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2FjaGVCYXNlKj4odGhpcyk7CiAgICAgY2FjaGVC
YXNlLT5tX2lkQ2FjaGUuY2xlYXIoKTsKICAgICBjYWNoZUJhc2UtPm1fbmFtZUNhY2hlLmNsZWFy
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCShyZXZpc2lvbiAxMzU0
MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDEwICs2NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3Jvb3RUeXBl
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb290VHlwZSkpOwogICAgICAgICBBU1NFUlQobV9p
bnZhbGlkYXRpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZhbGlkYXRpb25UeXBl
KSk7CiAgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb2xsZWN0aW9uVHlwZSkpOwotICAgICAgICBBU1NFUlQoIW1fb3ZlcnJpZGVzSXRlbUFm
dGVyIHx8IG1fY29sbGVjdGlvblR5cGUgIT0gTm9kZUxpc3RDb2xsZWN0aW9uVHlwZSk7CisgICAg
ICAgIEFTU0VSVCghbV9vdmVycmlkZXNJdGVtQWZ0ZXIgfHwgIWlzTm9kZUxpc3QoY29sbGVjdGlv
blR5cGUpKTsKICAgICB9CiAKIHB1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzSWRO
YW1lQ2FjaGUoKSBjb25zdCB7IHJldHVybiAhaXNOb2RlTGlzdCh0eXBlKCkpOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9v
dFR5cGUgPT0gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQgfHwgbV9yb290VHlwZSA9PSBOb2Rl
TGlzdElzUm9vdGVkQXREb2N1bWVudElmT3duZXJIYXNJdGVtcmVmQXR0cjsgfQogICAgIEFMV0FZ
U19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFsaWRhdGlvblR5cGU+KG1faW52YWxp
ZGF0aW9uVHlwZSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIENvbGxlY3Rpb25UeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2xsZWN0aW9uVHlwZT4obV9jb2xsZWN0aW9uVHlw
ZSk7IH0KQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFhdHRy
TmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlv
blR5cGUoKSwgKmF0dHJOYW1lKSkKICAgICAgICAgICAgIGludmFsaWRhdGVDYWNoZSgpOwotICAg
ICAgICBlbHNlIGlmICh0eXBlKCkgIT0gTm9kZUxpc3RDb2xsZWN0aW9uVHlwZSAmJiAoKmF0dHJO
YW1lID09IEhUTUxOYW1lczo6aWRBdHRyIHx8ICphdHRyTmFtZSA9PSBIVE1MTmFtZXM6Om5hbWVB
dHRyKSkKKyAgICAgICAgZWxzZSBpZiAoaGFzSWROYW1lQ2FjaGUoKSAmJiAoKmF0dHJOYW1lID09
IEhUTUxOYW1lczo6aWRBdHRyIHx8ICphdHRyTmFtZSA9PSBIVE1MTmFtZXM6Om5hbWVBdHRyKSkK
ICAgICAgICAgICAgIGludmFsaWRhdGVJZE5hbWVDYWNoZU1hcHMoKTsKICAgICB9CiAgICAgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGUoKSBjb25zdDsKQEAgLTE5MCwxOSArMTkxLDkgQEAgQUxXQVlTX0lO
TElORSBib29sIER5bmFtaWNOb2RlTGlzdENhY2hlQgogCiBjbGFzcyBEeW5hbWljTm9kZUxpc3Qg
OiBwdWJsaWMgTm9kZUxpc3QsIHB1YmxpYyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UgewogcHVi
bGljOgotICAgIGVudW0gTm9kZUxpc3RUeXBlIHsKLSAgICAgICAgQ2hpbGROb2RlTGlzdFR5cGUs
Ci0gICAgICAgIENsYXNzTm9kZUxpc3RUeXBlLAotICAgICAgICBOYW1lTm9kZUxpc3RUeXBlLAot
ICAgICAgICBUYWdOb2RlTGlzdFR5cGUsCi0gICAgICAgIFJhZGlvTm9kZUxpc3RUeXBlLAotICAg
ICAgICBMYWJlbHNOb2RlTGlzdFR5cGUsCi0gICAgICAgIE1pY3JvRGF0YUl0ZW1MaXN0VHlwZSwK
LSAgICAgICAgUHJvcGVydHlOb2RlTGlzdFR5cGUsCi0gICAgICAgIFBhc3RMYXN0Tm9kZUxpc3RU
eXBlLAotICAgIH07Ci0gICAgRHluYW1pY05vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gb3duZXJO
b2RlLCBOb2RlTGlzdFR5cGUgdHlwZSwgTm9kZUxpc3RSb290VHlwZSByb290VHlwZSwgTm9kZUxp
c3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUpCi0gICAgICAgIDogRHluYW1pY05v
ZGVMaXN0Q2FjaGVCYXNlKG93bmVyTm9kZS5nZXQoKSwgcm9vdFR5cGUsIGludmFsaWRhdGlvblR5
cGUsIHR5cGUgPT0gQ2hpbGROb2RlTGlzdFR5cGUsIE5vZGVMaXN0Q29sbGVjdGlvblR5cGUsIERv
ZXNOb3RPdmVycmlkZUl0ZW1BZnRlcikKKyAgICBEeW5hbWljTm9kZUxpc3QoUGFzc1JlZlB0cjxO
b2RlPiBvd25lck5vZGUsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlLCBOb2RlTGlzdFJv
b3RUeXBlIHJvb3RUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlw
ZSkKKyAgICAgICAgOiBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Uob3duZXJOb2RlLmdldCgpLCBy
b290VHlwZSwgaW52YWxpZGF0aW9uVHlwZSwgY29sbGVjdGlvblR5cGUgPT0gQ2hpbGROb2RlTGlz
dFR5cGUsCisgICAgICAgIGNvbGxlY3Rpb25UeXBlLCBEb2VzTm90T3ZlcnJpZGVJdGVtQWZ0ZXIp
CiAgICAgeyB9CiAgICAgdmlydHVhbCB+RHluYW1pY05vZGVMaXN0KCkgeyB9CiAKQEAgLTIyNiw3
ICsyMTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRHluYW1pY1N1YnRy
ZWVOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGVMaXN0VHlwZSB0eXBlLCBOb2Rl
TGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSwgTm9kZUxpc3RSb290VHlwZSBy
b290VHlwZSA9IE5vZGVMaXN0SXNSb290ZWRBdE5vZGUpCisgICAgRHluYW1pY1N1YnRyZWVOb2Rl
TGlzdChQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIE5vZGVMaXN0
SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlLCBOb2RlTGlzdFJvb3RUeXBlIHJvb3RU
eXBlID0gTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZSkKICAgICAgICAgOiBEeW5hbWljTm9kZUxpc3Qo
bm9kZSwgdHlwZSwgcm9vdFR5cGUsIGludmFsaWRhdGlvblR5cGUpCiAgICAgewogICAgICAgICBk
b2N1bWVudCgpLT5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTWljcm9EYXRhSXRlbUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9NaWNyb0RhdGFJdGVtTGlzdC5jcHAJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9NaWNyb0RhdGFJdGVtTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDcgQEAgTWljcm9EYXRhSXRlbUxpc3Q6Ok1pY3JvRGF0YUl0ZW1MaXN0KFBhcwogCiBN
aWNyb0RhdGFJdGVtTGlzdDo6fk1pY3JvRGF0YUl0ZW1MaXN0KCkKIHsKLSAgICBvd25lck5vZGUo
KS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aE5hbWUodGhpcywgRHluYW1pY05vZGVMaXN0
OjpNaWNyb0RhdGFJdGVtTGlzdFR5cGUsIG1fb3JpZ2luYWxUeXBlTmFtZXMpOworICAgIG93bmVy
Tm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoTmFtZSh0aGlzLCBNaWNyb0RhdGFJ
dGVtTGlzdFR5cGUsIG1fb3JpZ2luYWxUeXBlTmFtZXMpOwogfQogCiBib29sIE1pY3JvRGF0YUl0
ZW1MaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiB0ZXN0Tm9kZSkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMzU0MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBA
QCBOYW1lTm9kZUxpc3Q6Ok5hbWVOb2RlTGlzdChQYXNzUmVmUHRyPE5vCiAKIE5hbWVOb2RlTGlz
dDo6fk5hbWVOb2RlTGlzdCgpCiB7Ci0gICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1v
dmVDYWNoZVdpdGhBdG9taWNOYW1lKHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6TmFtZU5vZGVMaXN0
VHlwZSwgbV9uYW1lKTsKKyAgICBvd25lck5vZGUoKS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hl
V2l0aEF0b21pY05hbWUodGhpcywgTmFtZU5vZGVMaXN0VHlwZSwgbV9uYW1lKTsKIH0gCiAKIGJv
b2wgTmFtZU5vZGVMaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiB0ZXN0Tm9kZSkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDEzNTQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2Nyw4ICsxNTY3LDggQEAgUGFzc1JlZlB0
cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZW5zdXJl
UmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aEF0b21pY05hbWU8SFRN
TFRhZ05vZGVMaXN0Pih0aGlzLCBEeW5hbWljTm9kZUxpc3Q6OlRhZ05vZGVMaXN0VHlwZSwgbG9j
YWxOYW1lKTsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCkt
PmFkZENhY2hlV2l0aEF0b21pY05hbWU8VGFnTm9kZUxpc3Q+KHRoaXMsIER5bmFtaWNOb2RlTGlz
dDo6VGFnTm9kZUxpc3RUeXBlLCBsb2NhbE5hbWUpOworICAgICAgICByZXR1cm4gZW5zdXJlUmFy
ZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aEF0b21pY05hbWU8SFRNTFRh
Z05vZGVMaXN0Pih0aGlzLCBUYWdOb2RlTGlzdFR5cGUsIGxvY2FsTmFtZSk7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhBdG9taWNO
YW1lPFRhZ05vZGVMaXN0Pih0aGlzLCBUYWdOb2RlTGlzdFR5cGUsIGxvY2FsTmFtZSk7CiB9CiAK
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
KQpAQCAtMTU4NCwxOCArMTU4NCwxOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRF
bGVtZW50c0J5CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlOYW1l
KGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPE5hbWVOb2RlTGlz
dD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpOYW1lTm9kZUxpc3RUeXBlLCBlbGVtZW50TmFtZSk7
CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNo
ZVdpdGhBdG9taWNOYW1lPE5hbWVOb2RlTGlzdD4odGhpcywgTmFtZU5vZGVMaXN0VHlwZSwgZWxl
bWVudE5hbWUpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcykKIHsKLSAgICByZXR1cm4gZW5zdXJl
UmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aE5hbWU8Q2xhc3NOb2Rl
TGlzdD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpDbGFzc05vZGVMaXN0VHlwZSwgY2xhc3NOYW1l
cyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRD
YWNoZVdpdGhOYW1lPENsYXNzTm9kZUxpc3Q+KHRoaXMsIENsYXNzTm9kZUxpc3RUeXBlLCBjbGFz
c05hbWVzKTsKIH0KIAogUGFzc1JlZlB0cjxSYWRpb05vZGVMaXN0PiBOb2RlOjpyYWRpb05vZGVM
aXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShm
b3JtVGFnKSB8fCBoYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci0gICAgcmV0dXJuIGVuc3VyZVJh
cmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPFJhZGlv
Tm9kZUxpc3Q+KHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6UmFkaW9Ob2RlTGlzdFR5cGUsIG5hbWUp
OworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHMoKS0+YWRkQ2Fj
aGVXaXRoQXRvbWljTmFtZTxSYWRpb05vZGVMaXN0Pih0aGlzLCBSYWRpb05vZGVMaXN0VHlwZSwg
bmFtZSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25z
dCBBdG9taWNTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yNzg3LDcg
KzI3ODcsNyBAQCB2b2lkIE5vZGU6OnNldEl0ZW1UeXBlKGNvbnN0IFN0cmluZyYgdmFsCiAKIFBh
c3NSZWZQdHI8UHJvcGVydHlOb2RlTGlzdD4gTm9kZTo6cHJvcGVydHlOb2RlTGlzdChjb25zdCBT
dHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVM
aXN0cygpLT5hZGRDYWNoZVdpdGhOYW1lPFByb3BlcnR5Tm9kZUxpc3Q+KHRoaXMsIER5bmFtaWNO
b2RlTGlzdDo6UHJvcGVydHlOb2RlTGlzdFR5cGUsIG5hbWUpOworICAgIHJldHVybiBlbnN1cmVS
YXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHMoKS0+YWRkQ2FjaGVXaXRoTmFtZTxQcm9wZXJ0eU5v
ZGVMaXN0Pih0aGlzLCBQcm9wZXJ0eU5vZGVMaXN0VHlwZSwgbmFtZSk7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2aXNpb24gMTM1NDI5KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw5ICs2
NCw5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgVGFnTm9k
ZUxpc3QqPiBUYWdOb2RlTGlzdENhY2hlTlM7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2FjaGVXaXRoQXRvbWljTmFtZShOb2RlKiBub2RlLCBEeW5h
bWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKQorICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2FjaGVXaXRoQXRvbWljTmFtZShOb2RlKiBub2Rl
LCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQogICAgIHsKLSAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXkobGlzdFR5cGUs
IG5hbWUpLCAwKTsKKyAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXkoY29sbGVj
dGlvblR5cGUsIG5hbWUpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7
CiAKQEAgLTc4LDggKzc4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgUGFzc1JlZlB0cjxUPiBhZGRDYWNoZVdpdGhBdG9taWNOYW1lKEVsZW1lbnQqIG5vZGUsIENv
bGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgY2hh
ciB0eXBlID0gRHluYW1pY05vZGVMaXN0OjpQYXN0TGFzdE5vZGVMaXN0VHlwZSArIGNvbGxlY3Rp
b25UeXBlIC0gRmlyc3ROb2RlQ29sbGVjdGlvblR5cGU7Ci0gICAgICAgIE5vZGVMaXN0QXRvbWlj
TmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmFkZChu
YW1lZE5vZGVMaXN0S2V5KHR5cGUsIHN0YXJBdG9tKSwgMCk7CisgICAgICAgIE5vZGVMaXN0QXRv
bWljTmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmFk
ZChuYW1lZE5vZGVMaXN0S2V5KGNvbGxlY3Rpb25UeXBlLCBzdGFyQXRvbSksIDApOwogICAgICAg
ICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFQqPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIApAQCAtOTEsMTQgKzkwLDEzIEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQqIGNhY2hlV2l0aEF0b21pY05hbWUo
Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBj
aGFyIHR5cGUgPSBEeW5hbWljTm9kZUxpc3Q6OlBhc3RMYXN0Tm9kZUxpc3RUeXBlICsgY29sbGVj
dGlvblR5cGUgLSBGaXJzdE5vZGVDb2xsZWN0aW9uVHlwZTsKLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQqPihtX2F0b21pY05hbWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxpc3RLZXkodHlwZSwg
c3RhckF0b20pKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9hdG9taWNOYW1l
Q2FjaGVzLmdldChuYW1lZE5vZGVMaXN0S2V5KGNvbGxlY3Rpb25UeXBlLCBzdGFyQXRvbSkpKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFBhc3NSZWZQdHI8VD4gYWRk
Q2FjaGVXaXRoTmFtZShOb2RlKiBub2RlLCBEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBs
aXN0VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2FjaGVX
aXRoTmFtZShOb2RlKiBub2RlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgTm9kZUxpc3ROYW1lQ2FjaGVNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX25hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXkobGlzdFR5cGUs
IG5hbWUpLCAwKTsKKyAgICAgICAgTm9kZUxpc3ROYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBtX25hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXkoY29sbGVjdGlvblR5cGUsIG5h
bWUpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAKQEAgLTExOSwy
MyArMTE3LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogICAg
IH0KIAotICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRoQXRvbWljTmFtZShEeW5hbWljTm9kZUxpc3RD
YWNoZUJhc2UqIGxpc3QsIER5bmFtaWNOb2RlTGlzdDo6Tm9kZUxpc3RUeXBlIGxpc3RUeXBlLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgdm9pZCByZW1vdmVDYWNoZVdpdGhBdG9taWNO
YW1lKER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSogbGlzdCwgQ29sbGVjdGlvblR5cGUgY29sbGVj
dGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX2F0b21pY05hbWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxp
c3RLZXkobGlzdFR5cGUsIG5hbWUpKSk7Ci0gICAgICAgIG1fYXRvbWljTmFtZUNhY2hlcy5yZW1v
dmUobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSkpOworICAgICAgICBBU1NFUlRfVU5V
U0VEKGxpc3QsIGxpc3QgPT0gbV9hdG9taWNOYW1lQ2FjaGVzLmdldChuYW1lZE5vZGVMaXN0S2V5
KGNvbGxlY3Rpb25UeXBlLCBuYW1lKSkpOworICAgICAgICBtX2F0b21pY05hbWVDYWNoZXMucmVt
b3ZlKG5hbWVkTm9kZUxpc3RLZXkoY29sbGVjdGlvblR5cGUsIG5hbWUpKTsKICAgICB9CiAKICAg
ICB2b2lkIHJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUoRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNl
KiBsaXN0LCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIGNoYXIgdHlwZSA9IER5bmFtaWNOb2RlTGlzdDo6UGFzdExhc3ROb2RlTGlzdFR5cGUg
KyBjb2xsZWN0aW9uVHlwZSAtIEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBlOwotICAgICAgICBBU1NF
UlRfVU5VU0VEKGxpc3QsIGxpc3QgPT0gbV9hdG9taWNOYW1lQ2FjaGVzLmdldChuYW1lZE5vZGVM
aXN0S2V5KHR5cGUsIHN0YXJBdG9tKSkpOwotICAgICAgICBtX2F0b21pY05hbWVDYWNoZXMucmVt
b3ZlKG5hbWVkTm9kZUxpc3RLZXkodHlwZSwgc3RhckF0b20pKTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChsaXN0LCBsaXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtl
eShjb2xsZWN0aW9uVHlwZSwgc3RhckF0b20pKSk7CisgICAgICAgIG1fYXRvbWljTmFtZUNhY2hl
cy5yZW1vdmUobmFtZWROb2RlTGlzdEtleShjb2xsZWN0aW9uVHlwZSwgc3RhckF0b20pKTsKICAg
ICB9CiAKLSAgICB2b2lkIHJlbW92ZUNhY2hlV2l0aE5hbWUoRHluYW1pY1N1YnRyZWVOb2RlTGlz
dCogbGlzdCwgRHluYW1pY05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKKyAgICB2b2lkIHJlbW92ZUNhY2hlV2l0aE5hbWUoRHluYW1pY1N1YnRyZWVO
b2RlTGlzdCogbGlzdCwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX25h
bWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpKSk7Ci0gICAgICAg
IG1fbmFtZUNhY2hlcy5yZW1vdmUobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSkpOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGxpc3QsIGxpc3QgPT0gbV9uYW1lQ2FjaGVzLmdldChuYW1l
ZE5vZGVMaXN0S2V5KGNvbGxlY3Rpb25UeXBlLCBuYW1lKSkpOworICAgICAgICBtX25hbWVDYWNo
ZXMucmVtb3ZlKG5hbWVkTm9kZUxpc3RLZXkoY29sbGVjdGlvblR5cGUsIG5hbWUpKTsKICAgICB9
CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlV2l0aFF1YWxpZmllZE5hbWUoRHluYW1pY1N1YnRyZWVO
b2RlTGlzdCogbGlzdCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKQpAQCAtMTkwLDE0ICsxODcsMTYgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBOb2RlTGlzdHNOb2RlRGF0YSgpIHsgfQogCi0gICAgc3RkOjpwYWlyPHVuc2ln
bmVkIGNoYXIsIEF0b21pY1N0cmluZz4gbmFtZWROb2RlTGlzdEtleSh1bnNpZ25lZCBjaGFyIGxp
c3RUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgc3RkOjpwYWlyPHVuc2lnbmVk
IGNoYXIsIEF0b21pY1N0cmluZz4gbmFtZWROb2RlTGlzdEtleShDb2xsZWN0aW9uVHlwZSB0eXBl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpw
YWlyPHVuc2lnbmVkIGNoYXIsIEF0b21pY1N0cmluZz4obGlzdFR5cGUsIG5hbWUpOworICAgICAg
ICBBU1NFUlQodHlwZSA+PSBGaXJzdE5vZGVDb2xsZWN0aW9uVHlwZSk7CisgICAgICAgIHJldHVy
biBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPih0eXBlIC0gRmlyc3ROb2Rl
Q29sbGVjdGlvblR5cGUsIG5hbWUpOwogICAgIH0KIAotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBj
aGFyLCBTdHJpbmc+IG5hbWVkTm9kZUxpc3RLZXkodW5zaWduZWQgY2hhciBsaXN0VHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lKQorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBTdHJpbmc+IG5h
bWVkTm9kZUxpc3RLZXkoQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBTdHJpbmc+KGxp
c3RUeXBlLCBuYW1lKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPj0gRmlyc3ROb2RlQ29sbGVjdGlv
blR5cGUpOworICAgICAgICByZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIFN0cmluZz4o
dHlwZSAtIEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBlLCBuYW1lKTsKICAgICB9CiAKICAgICBOb2Rl
TGlzdEF0b21pY05hbWVDYWNoZU1hcCBtX2F0b21pY05hbWVDYWNoZXM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1Byb3BlcnR5Tm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMzU0MjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAgUHJvcGVydHlOb2RlTGlzdDo6UHJvcGVydHlOb2RlTGlzdChOb2RlKgogCiBQ
cm9wZXJ0eU5vZGVMaXN0Ojp+UHJvcGVydHlOb2RlTGlzdCgpCiB7Ci0gICAgb3duZXJOb2RlKCkt
Pm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhOYW1lKHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6
UHJvcGVydHlOb2RlTGlzdFR5cGUsIG1fbmFtZSk7CisgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0
cygpLT5yZW1vdmVDYWNoZVdpdGhOYW1lKHRoaXMsIFByb3BlcnR5Tm9kZUxpc3RUeXBlLCBtX25h
bWUpOwogfQogCiBib29sIFByb3BlcnR5Tm9kZUxpc3Q6OmVsZW1lbnRJc1Byb3BlcnR5T2ZSZWZF
bGVtZW50KGNvbnN0IE5vZGUqIHRlc3RFbGVtZW50LCBjb25zdCBOb2RlICpyZWZFbGVtZW50KSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMzU0Mjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIFRhZ05vZGVMaXN0OjpUYWdOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGUK
IFRhZ05vZGVMaXN0Ojp+VGFnTm9kZUxpc3QoKQogewogICAgIGlmIChtX25hbWVzcGFjZVVSSSA9
PSBzdGFyQXRvbSkKLSAgICAgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNo
ZVdpdGhBdG9taWNOYW1lKHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6VGFnTm9kZUxpc3RUeXBlLCBt
X2xvY2FsTmFtZSk7CisgICAgICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2Fj
aGVXaXRoQXRvbWljTmFtZSh0aGlzLCBUYWdOb2RlTGlzdFR5cGUsIG1fbG9jYWxOYW1lKTsKICAg
ICBlbHNlCiAgICAgICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRo
UXVhbGlmaWVkTmFtZSh0aGlzLCBtX25hbWVzcGFjZVVSSSwgbV9sb2NhbE5hbWUpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAkocmV2aXNpb24gMTM1NDI3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCwxNCArNjAsMjQgQEAgZW51bSBDb2xsZWN0aW9uVHlwZSB7CiAjZW5kaWYKIAogICAgIEZvcm1D
b250cm9scywKLSAgICBOb2RlTGlzdENvbGxlY3Rpb25UeXBlCisKKyAgICAvLyBMaXZlIG5vZGUg
bGlzdHMuCisKKyAgICBDaGlsZE5vZGVMaXN0VHlwZSwKKyAgICBDbGFzc05vZGVMaXN0VHlwZSwK
KyAgICBOYW1lTm9kZUxpc3RUeXBlLAorICAgIFRhZ05vZGVMaXN0VHlwZSwKKyAgICBSYWRpb05v
ZGVMaXN0VHlwZSwKKyAgICBMYWJlbHNOb2RlTGlzdFR5cGUsCisgICAgTWljcm9EYXRhSXRlbUxp
c3RUeXBlLAorICAgIFByb3BlcnR5Tm9kZUxpc3RUeXBlLAogfTsKIAogc3RhdGljIGNvbnN0IENv
bGxlY3Rpb25UeXBlIEZpcnN0VW5uYW1lZERvY3VtZW50Q2FjaGVkVHlwZSA9IERvY0ltYWdlczsK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOdW1Vbm5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlcyA9IFdp
bmRvd05hbWVkSXRlbXMgLSBEb2NJbWFnZXM7CiAKIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHlw
ZSBGaXJzdE5vZGVDb2xsZWN0aW9uVHlwZSA9IE5vZGVDaGlsZHJlbjsKLXN0YXRpYyBjb25zdCB1
bnNpZ25lZCBOdW1Ob2RlQ29sbGVjdGlvblR5cGVzID0gRm9ybUNvbnRyb2xzIC0gTm9kZUNoaWxk
cmVuICsgMTsKK3N0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHlwZSBGaXJzdE5vZGVMaXN0VHlwZSA9
IENoaWxkTm9kZUxpc3RUeXBlOwogCiBpbmxpbmUgYm9vbCBpc1VubmFtZWREb2N1bWVudENhY2hl
ZFR5cGUoQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKQEAgLTc5LDYgKzg5LDExIEBAIGlubGluZSBi
b29sIGlzTm9kZUNvbGxlY3Rpb25UeXBlKENvbGxlY3QKICAgICByZXR1cm4gdHlwZSA+PSBGaXJz
dE5vZGVDb2xsZWN0aW9uVHlwZTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb2RlTGlzdChDb2xsZWN0
aW9uVHlwZSB0eXBlKQoreworICAgIHJldHVybiB0eXBlID49IEZpcnN0Tm9kZUxpc3RUeXBlOwor
fQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMzU0MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksMTQgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZAogICAgIGNhc2UgVFNlY3Rpb25S
b3dzOgogICAgIGNhc2UgVGFibGVUQm9kaWVzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBj
YXNlIE5vZGVMaXN0Q29sbGVjdGlvblR5cGU6CisgICAgY2FzZSBDaGlsZE5vZGVMaXN0VHlwZToK
KyAgICBjYXNlIENsYXNzTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTmFtZU5vZGVMaXN0VHlwZToK
KyAgICBjYXNlIFRhZ05vZGVMaXN0VHlwZToKKyAgICBjYXNlIFJhZGlvTm9kZUxpc3RUeXBlOgor
ICAgIGNhc2UgTGFiZWxzTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTWljcm9EYXRhSXRlbUxpc3RU
eXBlOgorICAgIGNhc2UgUHJvcGVydHlOb2RlTGlzdFR5cGU6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwMyw4ICsxMTAsMTYgQEAgc3RhdGlj
IE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGVGcm9tQ29sbAogICAgIGNhc2UgU2VsZWN0ZWRPcHRp
b25zOgogICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgogICAgIGNhc2UgTWFwQXJlYXM6Ci0gICAg
Y2FzZSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlOgogICAgICAgICByZXR1cm4gTm9kZUxpc3RJc1Jv
b3RlZEF0Tm9kZTsKKyAgICBjYXNlIENoaWxkTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgQ2xhc3NO
b2RlTGlzdFR5cGU6CisgICAgY2FzZSBOYW1lTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgVGFnTm9k
ZUxpc3RUeXBlOgorICAgIGNhc2UgUmFkaW9Ob2RlTGlzdFR5cGU6CisgICAgY2FzZSBMYWJlbHNO
b2RlTGlzdFR5cGU6CisgICAgY2FzZSBNaWNyb0RhdGFJdGVtTGlzdFR5cGU6CisgICAgY2FzZSBQ
cm9wZXJ0eU5vZGVMaXN0VHlwZToKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBOb2RlTGlzdElzUm9vdGVkQXROb2RlOwpAQCAtMTQ1
LDcgKzE2MCwxNCBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhCiAj
ZW5kaWYKICAgICBjYXNlIEZvcm1Db250cm9sczoKICAgICAgICAgcmV0dXJuIEludmFsaWRhdGVG
b3JGb3JtQ29udHJvbHM7Ci0gICAgY2FzZSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlOgorICAgIGNh
c2UgQ2hpbGROb2RlTGlzdFR5cGU6CisgICAgY2FzZSBDbGFzc05vZGVMaXN0VHlwZToKKyAgICBj
YXNlIE5hbWVOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBUYWdOb2RlTGlzdFR5cGU6CisgICAgY2Fz
ZSBSYWRpb05vZGVMaXN0VHlwZToKKyAgICBjYXNlIExhYmVsc05vZGVMaXN0VHlwZToKKyAgICBj
YXNlIE1pY3JvRGF0YUl0ZW1MaXN0VHlwZToKKyAgICBjYXNlIFByb3BlcnR5Tm9kZUxpc3RUeXBl
OgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0y
MjksNyArMjUxLDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FjY2VwdGFibGVFbGVtZW50KEMK
ICAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoKICAgICBjYXNlIFRhYmxlUm93czoKICAgICBj
YXNlIFdpbmRvd05hbWVkSXRlbXM6Ci0gICAgY2FzZSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlOgor
ICAgIGNhc2UgQ2hpbGROb2RlTGlzdFR5cGU6CisgICAgY2FzZSBDbGFzc05vZGVMaXN0VHlwZToK
KyAgICBjYXNlIE5hbWVOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBUYWdOb2RlTGlzdFR5cGU6Cisg
ICAgY2FzZSBSYWRpb05vZGVMaXN0VHlwZToKKyAgICBjYXNlIExhYmVsc05vZGVMaXN0VHlwZToK
KyAgICBjYXNlIE1pY3JvRGF0YUl0ZW1MaXN0VHlwZToKKyAgICBjYXNlIFByb3BlcnR5Tm9kZUxp
c3RUeXBlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjY3LDcgKzI5Niw3IEBAIE5vZGUqIER5bmFtaWNOb2RlTGlzdENhY2hlQmFz
ZTo6aXRlcmF0ZUYKICAgICBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSA9IHR5cGUoKTsK
ICAgICBOb2RlKiByb290Tm9kZSA9IHRoaXMtPnJvb3ROb2RlKCk7CiAgICAgZm9yICg7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBuZXh0Tm9kZTxmb3J3YXJkPihyb290Tm9kZSwgY3VycmVudCwgb25seUlu
Y2x1ZGVEaXJlY3RDaGlsZHJlbikpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlID09IE5v
ZGVMaXN0Q29sbGVjdGlvblR5cGUpIHsKKyAgICAgICAgaWYgKGlzTm9kZUxpc3QoY29sbGVjdGlv
blR5cGUpKSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudC0+aXNFbGVtZW50Tm9kZSgpICYmIHN0
YXRpY19jYXN0PGNvbnN0IER5bmFtaWNOb2RlTGlzdCo+KHRoaXMpLT5ub2RlTWF0Y2hlcyh0b0Vs
ZW1lbnQoY3VycmVudCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQoY3VycmVu
dCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yODksNyArMzE4LDcgQEAgTm9kZSogRHluYW1pY05v
ZGVMaXN0Q2FjaGVCYXNlOjppdGVtQmVmbwogICAgIGVsc2UKICAgICAgICAgY3VycmVudCA9IGZp
cnN0Tm9kZShmb3J3YXJkLCByb290Tm9kZSgpLCBzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxk
cmVuKCkpOwogCi0gICAgaWYgKHR5cGUoKSA9PSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlICYmIHNo
b3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oKSkgLy8gQ2hpbGROb2RlTGlzdAorICAgIGlm
IChpc05vZGVMaXN0KHR5cGUoKSkgJiYgc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbigp
KSAvLyBDaGlsZE5vZGVMaXN0CiAgICAgICAgIHJldHVybiBjdXJyZW50OwogCiAgICAgcmV0dXJu
IGl0ZXJhdGVGb3JOZXh0Tm9kZTxmb3J3YXJkPihjdXJyZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBMYWJlbGFibGVFbGVtZW50OjpsCiAgICAg
aWYgKCFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBlbnN1cmVS
YXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHMoKS0+YWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxMYWJl
bHNOb2RlTGlzdD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpMYWJlbHNOb2RlTGlzdFR5cGUsIHN0
YXJBdG9tKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCkt
PmFkZENhY2hlV2l0aEF0b21pY05hbWU8TGFiZWxzTm9kZUxpc3Q+KHRoaXMsIExhYmVsc05vZGVM
aXN0VHlwZSwgc3RhckF0b20pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgTGFiZWxzTm9kZUxpc3Q6OkxhYmVsc05vZGVMaXN0KE5vZGUqIGZvcgog
CiBMYWJlbHNOb2RlTGlzdDo6fkxhYmVsc05vZGVMaXN0KCkKIHsKLSAgICBvd25lck5vZGUoKS0+
bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgRHluYW1pY05vZGVM
aXN0OjpMYWJlbHNOb2RlTGlzdFR5cGUsIHN0YXJBdG9tKTsKKyAgICBvd25lck5vZGUoKS0+bm9k
ZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgTGFiZWxzTm9kZUxpc3RU
eXBlLCBzdGFyQXRvbSk7CiB9IAogICAgIAogYm9vbCBMYWJlbHNOb2RlTGlzdDo6bm9kZU1hdGNo
ZXMoRWxlbWVudCogdGVzdE5vZGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9O
b2RlTGlzdC5jcHAJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9Ob2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgUmFkaW9Ob2Rl
TGlzdDo6UmFkaW9Ob2RlTGlzdChOb2RlKiByb290TgogCiBSYWRpb05vZGVMaXN0Ojp+UmFkaW9O
b2RlTGlzdCgpCiB7Ci0gICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdp
dGhBdG9taWNOYW1lKHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6UmFkaW9Ob2RlTGlzdFR5cGUsIG1f
bmFtZSk7CisgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9t
aWNOYW1lKHRoaXMsIFJhZGlvTm9kZUxpc3RUeXBlLCBtX25hbWUpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEhUTUxJbnB1dEVsZW1lbnQqIHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoTm9kZSogbm9k
ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175532</attachid>
            <date>2012-11-21 15:13:46 -0800</date>
            <delta_ts>2012-11-21 15:36:37 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-102983-20121121151132.patch</filename>
            <type>text/plain</type>
            <size>26311</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDEyLTExLTIxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbGxlY3Rpb25UeXBlIGFuZCBE
eW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBzaG91bGQgYmUgbWVyZ2VkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5ODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZWQgRHluYW1pY05vZGVM
aXN0OjpOb2RlTGlzdFR5cGUgKGZvciBsaXZlIE5vZGVMaXN0KSBpbnRvIENvbGxlY3Rpb25UeXBl
LgorCisgICAgICAgICogZG9tL0NsYXNzTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xhc3NOb2RlTGlzdDo6fkNsYXNzTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1bnJlZ2lzdGVyTm9kZUxpc3RDYWNoZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9EeW5h
bWljTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVC
YXNlOjppbnZhbGlkYXRlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0
Q2FjaGVCYXNlOjppbnZhbGlkYXRlSWROYW1lQ2FjaGVNYXBzKToKKyAgICAgICAgKiBkb20vRHlu
YW1pY05vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljTm9kZUxpc3RDYWNoZUJh
c2U6OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWlj
Tm9kZUxpc3RDYWNoZUJhc2U6Omhhc0lkTmFtZUNhY2hlKTogQWRkZWQuIFJldHVybnMgaWZmIHRo
aXMgaXMgYSBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6aW52YWxpZGF0ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNO
b2RlTGlzdDo6RHluYW1pY05vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3Q6OkR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9NaWNy
b0RhdGFJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb0RhdGFJdGVtTGlzdDo6
fk1pY3JvRGF0YUl0ZW1MaXN0KToKKyAgICAgICAgKiBkb20vTmFtZU5vZGVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6fk5hbWVOb2RlTGlzdCk6CisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpyYWRpb05vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnByb3Bl
cnR5Tm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRDYWNoZVdpdGhBdG9taWNOYW1lKTogTm8gbG9u
Z2VyIGNvbnZlcnRzIENvbGxlY3Rpb25UeXBlIHRvCisgICAgICAgIGEgTm9kZUxpc3RUeXBlIGVx
dWl2YWxlbnQgc2luY2UgdHdvIGVudW1zIGhhdmUgYmVlbiBtZXJnZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6Y2FjaGVXaXRoQXRvbWljTmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlV2l0aE5hbWUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpyZW1vdmVDYWNoZVdpdGhB
dG9taWNOYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6
cmVtb3ZlQ2FjaGVXaXRoTmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3Rz
Tm9kZURhdGE6Om5hbWVkTm9kZUxpc3RLZXkpOiBJZ25vcmUgdHlwZXMgYmVmb3JlIEZpcnN0Tm9k
ZUNvbGxlY3Rpb25UeXBlCisgICAgICAgIHRvIG1pbmltaXplIHRoZSBoYXNoIGNvbmZsaWN0cy4K
KyAgICAgICAgKiBkb20vUHJvcGVydHlOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eU5vZGVMaXN0Ojp+UHJvcGVydHlOb2RlTGlzdCk6CisgICAgICAgICogZG9tL1RhZ05v
ZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRhZ05vZGVMaXN0Ojp+VGFnTm9kZUxpc3Qp
OgorICAgICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
Tm9kZUxpc3QpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6cm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNBY2NlcHRhYmxlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZXJhdGVGb3JOZXh0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZW1CZWZvcmVPckFmdGVyKToKKyAgICAg
ICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxh
YmxlRWxlbWVudDo6bGFiZWxzKToKKyAgICAgICAgKiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVMaXN0Ojp+TGFiZWxzTm9kZUxpc3QpOgorICAg
ICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05v
ZGVMaXN0Ojp+UmFkaW9Ob2RlTGlzdCk6CisKIDIwMTItMTEtMjEgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMzUzMzgsIHIxMzUzNTksIGFuZCByMTM1Mzc4LgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0NsYXNzTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9D
bGFzc05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0NsYXNzTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIENsYXNz
Tm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3QoUGFzc1JlZlB0cjwKIAogQ2xhc3NOb2RlTGlzdDo6fkNs
YXNzTm9kZUxpc3QoKQogewotICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2Fj
aGVXaXRoTmFtZSh0aGlzLCBEeW5hbWljTm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3RUeXBlLCBtX29y
aWdpbmFsQ2xhc3NOYW1lcyk7CisgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVD
YWNoZVdpdGhOYW1lKHRoaXMsIENsYXNzTm9kZUxpc3RUeXBlLCBtX29yaWdpbmFsQ2xhc3NOYW1l
cyk7CiB9IAogCiBib29sIENsYXNzTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQqIHRlc3RO
b2RlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMzU0Mjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDYyLDcgKzM0NjIsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRDU1NUYXJnZXQoRWxlbWVudCogbikK
IAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKER5bmFtaWNOb2RlTGlzdENh
Y2hlQmFzZSogbGlzdCkKIHsKLSAgICBpZiAobGlzdC0+dHlwZSgpICE9IE5vZGVMaXN0Q29sbGVj
dGlvblR5cGUpCisgICAgaWYgKGxpc3QtPmhhc0lkTmFtZUNhY2hlKCkpCiAgICAgICAgIG1fbm9k
ZUxpc3RDb3VudHNbSW52YWxpZGF0ZU9uSWROYW1lQXR0ckNoYW5nZV0rKzsKICAgICBtX25vZGVM
aXN0Q291bnRzW2xpc3QtPmludmFsaWRhdGlvblR5cGUoKV0rKzsKICAgICBpZiAobGlzdC0+aXNS
b290ZWRBdERvY3VtZW50KCkpCkBAIC0zNDcxLDcgKzM0NzEsNyBAQCB2b2lkIERvY3VtZW50Ojpy
ZWdpc3Rlck5vZGVMaXN0Q2FjaGUoRHluCiAKIHZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJOb2Rl
TGlzdENhY2hlKER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSogbGlzdCkKIHsKLSAgICBpZiAobGlz
dC0+dHlwZSgpICE9IE5vZGVMaXN0Q29sbGVjdGlvblR5cGUpCisgICAgaWYgKGxpc3QtPmhhc0lk
TmFtZUNhY2hlKCkpCiAgICAgICAgIG1fbm9kZUxpc3RDb3VudHNbSW52YWxpZGF0ZU9uSWROYW1l
QXR0ckNoYW5nZV0tLTsKICAgICBtX25vZGVMaXN0Q291bnRzW2xpc3QtPmludmFsaWRhdGlvblR5
cGUoKV0tLTsKICAgICBpZiAobGlzdC0+aXNSb290ZWRBdERvY3VtZW50KCkpIHsKQEAgLTU2ODIs
NyArNTY4Miw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpnZXRJdGVtcygKICAg
ICAvLyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgYW4gZW1wdHkgc3RyaW5nIGlkZW50
aWZpZXIgdG8gbWFwIHN1Y2ggcmVxdWVzdCBpbiB0aGUgY2FjaGUuCiAgICAgU3RyaW5nIGxvY2Fs
VHlwZU5hbWVzID0gdHlwZU5hbWVzLmlzTnVsbCgpID8gTWljcm9EYXRhSXRlbUxpc3Q6OnVuZGVm
aW5lZEl0ZW1UeXBlKCkgOiB0eXBlTmFtZXM7CiAKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aE5hbWU8TWljcm9EYXRhSXRlbUxpc3Q+
KHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6TWljcm9EYXRhSXRlbUxpc3RUeXBlLCBsb2NhbFR5cGVO
YW1lcyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5h
ZGRDYWNoZVdpdGhOYW1lPE1pY3JvRGF0YUl0ZW1MaXN0Pih0aGlzLCBNaWNyb0RhdGFJdGVtTGlz
dFR5cGUsIGxvY2FsVHlwZU5hbWVzKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRHluYW1pY05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAgdm9pZCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdAogICAgIG1faXNJdGVt
Q2FjaGVWYWxpZCA9IGZhbHNlOwogICAgIG1faXNOYW1lQ2FjaGVWYWxpZCA9IGZhbHNlOwogICAg
IG1faXNJdGVtUmVmRWxlbWVudHNDYWNoZVZhbGlkID0gZmFsc2U7Ci0gICAgaWYgKHR5cGUoKSA9
PSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlKQorICAgIGlmIChpc05vZGVMaXN0KHR5cGUoKSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2FjaGVCYXNlKiBjYWNo
ZUJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSo+KHRoaXMp
OwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aW52YWxp
ZGF0CiAKIHZvaWQgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppbnZhbGlkYXRlSWROYW1lQ2Fj
aGVNYXBzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSgpICE9IE5vZGVMaXN0Q29sbGVjdGlv
blR5cGUpOworICAgIEFTU0VSVChoYXNJZE5hbWVDYWNoZSgpKTsKICAgICBjb25zdCBIVE1MQ29s
bGVjdGlvbkNhY2hlQmFzZSogY2FjaGVCYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTENvbGxl
Y3Rpb25DYWNoZUJhc2UqPih0aGlzKTsKICAgICBjYWNoZUJhc2UtPm1faWRDYWNoZS5jbGVhcigp
OwogICAgIGNhY2hlQmFzZS0+bV9uYW1lQ2FjaGUuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRHluYW1pY05vZGVMaXN0LmgJKHJldmlzaW9uIDEzNTQyOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9EeW5hbWljTm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTAgKzY0LDExIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fcm9vdFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHJvb3RUeXBlKSk7CiAgICAgICAgIEFTU0VSVChtX2ludmFsaWRhdGlvblR5cGUgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlvblR5cGUpKTsKICAgICAgICAgQVNTRVJUKG1f
Y29sbGVjdGlvblR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbGxlY3Rpb25UeXBlKSk7
Ci0gICAgICAgIEFTU0VSVCghbV9vdmVycmlkZXNJdGVtQWZ0ZXIgfHwgbV9jb2xsZWN0aW9uVHlw
ZSAhPSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlKTsKKyAgICAgICAgQVNTRVJUKCFtX292ZXJyaWRl
c0l0ZW1BZnRlciB8fCAhaXNOb2RlTGlzdChjb2xsZWN0aW9uVHlwZSkpOwogICAgIH0KIAogcHVi
bGljOgorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNJZE5hbWVDYWNoZSgpIGNvbnN0IHsgcmV0
dXJuICFpc05vZGVMaXN0KHR5cGUoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNSb290
ZWRBdERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290VHlwZSA9PSBOb2RlTGlzdElzUm9v
dGVkQXREb2N1bWVudCB8fCBtX3Jvb3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50
SWZPd25lckhhc0l0ZW1yZWZBdHRyOyB9CiAgICAgQUxXQVlTX0lOTElORSBOb2RlTGlzdEludmFs
aWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZT4obV9pbnZhbGlkYXRpb25UeXBlKTsgfQogICAgIEFM
V0FZU19JTkxJTkUgQ29sbGVjdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PENvbGxlY3Rpb25UeXBlPihtX2NvbGxlY3Rpb25UeXBlKTsgfQpAQCAtNzYsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIWF0dHJOYW1lIHx8IHNob3VsZEludmFsaWRh
dGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UoaW52YWxpZGF0aW9uVHlwZSgpLCAqYXR0ck5hbWUpKQog
ICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUoKSAh
PSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlICYmICgqYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjppZEF0
dHIgfHwgKmF0dHJOYW1lID09IEhUTUxOYW1lczo6bmFtZUF0dHIpKQorICAgICAgICBlbHNlIGlm
IChoYXNJZE5hbWVDYWNoZSgpICYmICgqYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjppZEF0dHIgfHwg
KmF0dHJOYW1lID09IEhUTUxOYW1lczo6bmFtZUF0dHIpKQogICAgICAgICAgICAgaW52YWxpZGF0
ZUlkTmFtZUNhY2hlTWFwcygpOwogICAgIH0KICAgICB2b2lkIGludmFsaWRhdGVDYWNoZSgpIGNv
bnN0OwpAQCAtMTkwLDE5ICsxOTEsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgRHluYW1pY05vZGVM
aXN0Q2FjaGVCCiAKIGNsYXNzIER5bmFtaWNOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCwgcHVi
bGljIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB7CiBwdWJsaWM6Ci0gICAgZW51bSBOb2RlTGlz
dFR5cGUgewotICAgICAgICBDaGlsZE5vZGVMaXN0VHlwZSwKLSAgICAgICAgQ2xhc3NOb2RlTGlz
dFR5cGUsCi0gICAgICAgIE5hbWVOb2RlTGlzdFR5cGUsCi0gICAgICAgIFRhZ05vZGVMaXN0VHlw
ZSwKLSAgICAgICAgUmFkaW9Ob2RlTGlzdFR5cGUsCi0gICAgICAgIExhYmVsc05vZGVMaXN0VHlw
ZSwKLSAgICAgICAgTWljcm9EYXRhSXRlbUxpc3RUeXBlLAotICAgICAgICBQcm9wZXJ0eU5vZGVM
aXN0VHlwZSwKLSAgICAgICAgUGFzdExhc3ROb2RlTGlzdFR5cGUsCi0gICAgfTsKLSAgICBEeW5h
bWljTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiBvd25lck5vZGUsIE5vZGVMaXN0VHlwZSB0eXBl
LCBOb2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52
YWxpZGF0aW9uVHlwZSkKLSAgICAgICAgOiBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Uob3duZXJO
b2RlLmdldCgpLCByb290VHlwZSwgaW52YWxpZGF0aW9uVHlwZSwgdHlwZSA9PSBDaGlsZE5vZGVM
aXN0VHlwZSwgTm9kZUxpc3RDb2xsZWN0aW9uVHlwZSwgRG9lc05vdE92ZXJyaWRlSXRlbUFmdGVy
KQorICAgIER5bmFtaWNOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG93bmVyTm9kZSwgQ29sbGVj
dGlvblR5cGUgY29sbGVjdGlvblR5cGUsIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGUsIE5vZGVM
aXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQorICAgICAgICA6IER5bmFtaWNO
b2RlTGlzdENhY2hlQmFzZShvd25lck5vZGUuZ2V0KCksIHJvb3RUeXBlLCBpbnZhbGlkYXRpb25U
eXBlLCBjb2xsZWN0aW9uVHlwZSA9PSBDaGlsZE5vZGVMaXN0VHlwZSwKKyAgICAgICAgY29sbGVj
dGlvblR5cGUsIERvZXNOb3RPdmVycmlkZUl0ZW1BZnRlcikKICAgICB7IH0KICAgICB2aXJ0dWFs
IH5EeW5hbWljTm9kZUxpc3QoKSB7IH0KIApAQCAtMjI2LDcgKzIxNyw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByb3RlY3RlZDoKLSAgICBEeW5hbWljU3VidHJlZU5vZGVMaXN0KFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSwgTm9kZUxpc3RUeXBlIHR5cGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBp
bnZhbGlkYXRpb25UeXBlLCBOb2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlID0gTm9kZUxpc3RJc1Jv
b3RlZEF0Tm9kZSkKKyAgICBEeW5hbWljU3VidHJlZU5vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4g
bm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFs
aWRhdGlvblR5cGUsIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGUgPSBOb2RlTGlzdElzUm9vdGVk
QXROb2RlKQogICAgICAgICA6IER5bmFtaWNOb2RlTGlzdChub2RlLCB0eXBlLCByb290VHlwZSwg
aW52YWxpZGF0aW9uVHlwZSkKICAgICB7CiAgICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyTm9k
ZUxpc3RDYWNoZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb0RhdGFJdGVt
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01pY3JvRGF0YUl0ZW1M
aXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01pY3JvRGF0
YUl0ZW1MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBNaWNyb0RhdGFJ
dGVtTGlzdDo6TWljcm9EYXRhSXRlbUxpc3QoUGFzCiAKIE1pY3JvRGF0YUl0ZW1MaXN0Ojp+TWlj
cm9EYXRhSXRlbUxpc3QoKQogewotICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3Zl
Q2FjaGVXaXRoTmFtZSh0aGlzLCBEeW5hbWljTm9kZUxpc3Q6Ok1pY3JvRGF0YUl0ZW1MaXN0VHlw
ZSwgbV9vcmlnaW5hbFR5cGVOYW1lcyk7CisgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5y
ZW1vdmVDYWNoZVdpdGhOYW1lKHRoaXMsIE1pY3JvRGF0YUl0ZW1MaXN0VHlwZSwgbV9vcmlnaW5h
bFR5cGVOYW1lcyk7CiB9CiAKIGJvb2wgTWljcm9EYXRhSXRlbUxpc3Q6Om5vZGVNYXRjaGVzKEVs
ZW1lbnQqIHRlc3ROb2RlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2Rl
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5j
cHAJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIE5hbWVOb2RlTGlzdDo6TmFtZU5v
ZGVMaXN0KFBhc3NSZWZQdHI8Tm8KIAogTmFtZU5vZGVMaXN0Ojp+TmFtZU5vZGVMaXN0KCkKIHsK
LSAgICBvd25lck5vZGUoKS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUo
dGhpcywgRHluYW1pY05vZGVMaXN0OjpOYW1lTm9kZUxpc3RUeXBlLCBtX25hbWUpOworICAgIG93
bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbWljTmFtZSh0aGlzLCBO
YW1lTm9kZUxpc3RUeXBlLCBtX25hbWUpOwogfSAKIAogYm9vbCBOYW1lTm9kZUxpc3Q6Om5vZGVN
YXRjaGVzKEVsZW1lbnQqIHRlc3ROb2RlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2
aXNpb24gMTM1NDI5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTY3LDggKzE1NjcsOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRF
bGVtZW50c0J5CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRN
TERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2Rl
TGlzdHMoKS0+YWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxIVE1MVGFnTm9kZUxpc3Q+KHRoaXMsIER5
bmFtaWNOb2RlTGlzdDo6VGFnTm9kZUxpc3RUeXBlLCBsb2NhbE5hbWUpOwotICAgIHJldHVybiBl
bnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHMoKS0+YWRkQ2FjaGVXaXRoQXRvbWljTmFt
ZTxUYWdOb2RlTGlzdD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpUYWdOb2RlTGlzdFR5cGUsIGxv
Y2FsTmFtZSk7CisgICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlz
dHMoKS0+YWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxIVE1MVGFnTm9kZUxpc3Q+KHRoaXMsIFRhZ05v
ZGVMaXN0VHlwZSwgbG9jYWxOYW1lKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5z
dXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aEF0b21pY05hbWU8VGFnTm9kZUxpc3Q+KHRoaXMs
IFRhZ05vZGVMaXN0VHlwZSwgbG9jYWxOYW1lKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4g
Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCkBAIC0xNTg0LDE4ICsxNTg0LDE4
IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnkKIAogUGFzc1JlZlB0
cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50
TmFtZSkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCkt
PmFkZENhY2hlV2l0aEF0b21pY05hbWU8TmFtZU5vZGVMaXN0Pih0aGlzLCBEeW5hbWljTm9kZUxp
c3Q6Ok5hbWVOb2RlTGlzdFR5cGUsIGVsZW1lbnROYW1lKTsKKyAgICByZXR1cm4gZW5zdXJlUmFy
ZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aEF0b21pY05hbWU8TmFtZU5v
ZGVMaXN0Pih0aGlzLCBOYW1lTm9kZUxpc3RUeXBlLCBlbGVtZW50TmFtZSk7CiB9CiAKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5n
JiBjbGFzc05hbWVzKQogewotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2Rl
TGlzdHMoKS0+YWRkQ2FjaGVXaXRoTmFtZTxDbGFzc05vZGVMaXN0Pih0aGlzLCBEeW5hbWljTm9k
ZUxpc3Q6OkNsYXNzTm9kZUxpc3RUeXBlLCBjbGFzc05hbWVzKTsKKyAgICByZXR1cm4gZW5zdXJl
UmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aE5hbWU8Q2xhc3NOb2Rl
TGlzdD4odGhpcywgQ2xhc3NOb2RlTGlzdFR5cGUsIGNsYXNzTmFtZXMpOwogfQogCiBQYXNzUmVm
UHRyPFJhZGlvTm9kZUxpc3Q+IE5vZGU6OnJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGhhc1RhZ05hbWUo
ZmllbGRzZXRUYWcpKTsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxp
c3RzKCktPmFkZENhY2hlV2l0aEF0b21pY05hbWU8UmFkaW9Ob2RlTGlzdD4odGhpcywgRHluYW1p
Y05vZGVMaXN0OjpSYWRpb05vZGVMaXN0VHlwZSwgbmFtZSk7CisgICAgcmV0dXJuIGVuc3VyZVJh
cmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPFJhZGlv
Tm9kZUxpc3Q+KHRoaXMsIFJhZGlvTm9kZUxpc3RUeXBlLCBuYW1lKTsKIH0KIAogUGFzc1JlZlB0
cjxFbGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0
b3JzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI3ODcsNyArMjc4Nyw3IEBAIHZvaWQgTm9kZTo6
c2V0SXRlbVR5cGUoY29uc3QgU3RyaW5nJiB2YWwKIAogUGFzc1JlZlB0cjxQcm9wZXJ0eU5vZGVM
aXN0PiBOb2RlOjpwcm9wZXJ0eU5vZGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aE5h
bWU8UHJvcGVydHlOb2RlTGlzdD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpQcm9wZXJ0eU5vZGVM
aXN0VHlwZSwgbmFtZSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVM
aXN0cygpLT5hZGRDYWNoZVdpdGhOYW1lPFByb3BlcnR5Tm9kZUxpc3Q+KHRoaXMsIFByb3BlcnR5
Tm9kZUxpc3RUeXBlLCBuYW1lKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCShyZXZpc2lvbiAxMzU0MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBUYWdOb2RlTGlzdCo+IFRhZ05vZGVMaXN0Q2Fj
aGVOUzsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgUGFzc1JlZlB0cjxUPiBhZGRD
YWNoZVdpdGhBdG9taWNOYW1lKE5vZGUqIG5vZGUsIER5bmFtaWNOb2RlTGlzdDo6Tm9kZUxpc3RU
eXBlIGxpc3RUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgUGFzc1JlZlB0cjxU
PiBhZGRDYWNoZVdpdGhBdG9taWNOYW1lKE5vZGUqIG5vZGUsIENvbGxlY3Rpb25UeXBlIGNvbGxl
Y3Rpb25UeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICBOb2Rl
TGlzdEF0b21pY05hbWVDYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYXRvbWljTmFtZUNh
Y2hlcy5hZGQobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSksIDApOworICAgICAgICBO
b2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYXRvbWljTmFt
ZUNhY2hlcy5hZGQobmFtZWROb2RlTGlzdEtleShjb2xsZWN0aW9uVHlwZSwgbmFtZSksIDApOwog
ICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQqPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIApAQCAtNzgsOCArNzgsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBQYXNzUmVmUHRyPFQ+IGFkZENh
Y2hlV2l0aEF0b21pY05hbWUoRWxlbWVudCogbm9kZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlv
blR5cGUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBjaGFyIHR5cGUgPSBEeW5hbWljTm9kZUxp
c3Q6OlBhc3RMYXN0Tm9kZUxpc3RUeXBlICsgY29sbGVjdGlvblR5cGUgLSBGaXJzdE5vZGVDb2xs
ZWN0aW9uVHlwZTsKLSAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXkodHlwZSwg
c3RhckF0b20pLCAwKTsKKyAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXkoY29s
bGVjdGlvblR5cGUsIHN0YXJBdG9tKSwgMCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUpOwogCkBAIC05MSwxNCArOTAsMTMgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICAgVCogY2FjaGVXaXRoQXRvbWljTmFtZShDb2xsZWN0aW9uVHlwZSBjb2xsZWN0
aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgdHlwZSA9IER5bmFtaWNOb2Rl
TGlzdDo6UGFzdExhc3ROb2RlTGlzdFR5cGUgKyBjb2xsZWN0aW9uVHlwZSAtIEZpcnN0Tm9kZUNv
bGxlY3Rpb25UeXBlOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fYXRvbWljTmFt
ZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtleSh0eXBlLCBzdGFyQXRvbSkpKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2F0b21pY05hbWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxp
c3RLZXkoY29sbGVjdGlvblR5cGUsIHN0YXJBdG9tKSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgUGFzc1JlZlB0cjxUPiBhZGRDYWNoZVdpdGhOYW1lKE5vZGUqIG5v
ZGUsIER5bmFtaWNOb2RlTGlzdDo6Tm9kZUxpc3RUeXBlIGxpc3RUeXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUpCisgICAgUGFzc1JlZlB0cjxUPiBhZGRDYWNoZVdpdGhOYW1lKE5vZGUqIG5vZGUsIENv
bGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewot
ICAgICAgICBOb2RlTGlzdE5hbWVDYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbmFtZUNh
Y2hlcy5hZGQobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSksIDApOworICAgICAgICBO
b2RlTGlzdE5hbWVDYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbmFtZUNhY2hlcy5hZGQo
bmFtZWROb2RlTGlzdEtleShjb2xsZWN0aW9uVHlwZSwgbmFtZSksIDApOwogICAgICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIApAQCAtMTE5LDIzICsxMTcsMTYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgdm9pZCByZW1vdmVD
YWNoZVdpdGhBdG9taWNOYW1lKER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSogbGlzdCwgRHluYW1p
Y05vZGVMaXN0OjpOb2RlTGlzdFR5cGUgbGlzdFR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKKyAgICB2b2lkIHJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUoRHluYW1pY05vZGVMaXN0Q2Fj
aGVCYXNlKiBsaXN0LCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lID0gc3RhckF0b20pCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGxp
c3QsIGxpc3QgPT0gbV9hdG9taWNOYW1lQ2FjaGVzLmdldChuYW1lZE5vZGVMaXN0S2V5KGxpc3RU
eXBlLCBuYW1lKSkpOwotICAgICAgICBtX2F0b21pY05hbWVDYWNoZXMucmVtb3ZlKG5hbWVkTm9k
ZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0LCBs
aXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtleShjb2xsZWN0aW9u
VHlwZSwgbmFtZSkpKTsKKyAgICAgICAgbV9hdG9taWNOYW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5v
ZGVMaXN0S2V5KGNvbGxlY3Rpb25UeXBlLCBuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZW1v
dmVDYWNoZVdpdGhBdG9taWNOYW1lKER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSogbGlzdCwgQ29s
bGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgdm9pZCByZW1vdmVDYWNoZVdpdGhOYW1l
KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25U
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBjaGFyIHR5
cGUgPSBEeW5hbWljTm9kZUxpc3Q6OlBhc3RMYXN0Tm9kZUxpc3RUeXBlICsgY29sbGVjdGlvblR5
cGUgLSBGaXJzdE5vZGVDb2xsZWN0aW9uVHlwZTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0
LCBsaXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtleSh0eXBlLCBz
dGFyQXRvbSkpKTsKLSAgICAgICAgbV9hdG9taWNOYW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5vZGVM
aXN0S2V5KHR5cGUsIHN0YXJBdG9tKSk7Ci0gICAgfQotCi0gICAgdm9pZCByZW1vdmVDYWNoZVdp
dGhOYW1lKER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIER5bmFtaWNOb2RlTGlzdDo6Tm9k
ZUxpc3RUeXBlIGxpc3RUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICBB
U1NFUlRfVU5VU0VEKGxpc3QsIGxpc3QgPT0gbV9uYW1lQ2FjaGVzLmdldChuYW1lZE5vZGVMaXN0
S2V5KGxpc3RUeXBlLCBuYW1lKSkpOwotICAgICAgICBtX25hbWVDYWNoZXMucmVtb3ZlKG5hbWVk
Tm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0
LCBsaXN0ID09IG1fbmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtleShjb2xsZWN0aW9uVHlw
ZSwgbmFtZSkpKTsKKyAgICAgICAgbV9uYW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5vZGVMaXN0S2V5
KGNvbGxlY3Rpb25UeXBlLCBuYW1lKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVDYWNoZVdp
dGhRdWFsaWZpZWROYW1lKER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKQEAg
LTE5MCwxNCArMTgxLDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTm9kZUxpc3RzTm9kZURh
dGEoKSB7IH0KIAotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+IG5h
bWVkTm9kZUxpc3RLZXkodW5zaWduZWQgY2hhciBsaXN0VHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+IG5hbWVk
Tm9kZUxpc3RLZXkoQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNT
dHJpbmc+KGxpc3RUeXBlLCBuYW1lKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPj0gRmlyc3ROb2Rl
Q29sbGVjdGlvblR5cGUpOworICAgICAgICByZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIs
IEF0b21pY1N0cmluZz4odHlwZSAtIEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBlLCBuYW1lKTsKICAg
ICB9CiAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5nPiBuYW1lZE5vZGVMaXN0
S2V5KHVuc2lnbmVkIGNoYXIgbGlzdFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICBzdGQ6
OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5nPiBuYW1lZE5vZGVMaXN0S2V5KENvbGxlY3Rpb25U
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5nPihsaXN0VHlwZSwgbmFtZSk7CisgICAgICAgIEFT
U0VSVCh0eXBlID49IEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBlKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBTdHJpbmc+KHR5cGUgLSBGaXJzdE5vZGVDb2xsZWN0aW9u
VHlwZSwgbmFtZSk7CiAgICAgfQogCiAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXAgbV9h
dG9taWNOYW1lQ2FjaGVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb3BlcnR5Tm9kZUxp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0
LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb3BlcnR5Tm9k
ZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFByb3BlcnR5Tm9kZUxp
c3Q6OlByb3BlcnR5Tm9kZUxpc3QoTm9kZSoKIAogUHJvcGVydHlOb2RlTGlzdDo6flByb3BlcnR5
Tm9kZUxpc3QoKQogewotICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVX
aXRoTmFtZSh0aGlzLCBEeW5hbWljTm9kZUxpc3Q6OlByb3BlcnR5Tm9kZUxpc3RUeXBlLCBtX25h
bWUpOworICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoTmFtZSh0
aGlzLCBQcm9wZXJ0eU5vZGVMaXN0VHlwZSwgbV9uYW1lKTsKIH0KIAogYm9vbCBQcm9wZXJ0eU5v
ZGVMaXN0OjplbGVtZW50SXNQcm9wZXJ0eU9mUmVmRWxlbWVudChjb25zdCBOb2RlKiB0ZXN0RWxl
bWVudCwgY29uc3QgTm9kZSAqcmVmRWxlbWVudCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9UYWdOb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Rh
Z05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Rh
Z05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBUYWdOb2RlTGlz
dDo6VGFnTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlCiBUYWdOb2RlTGlzdDo6flRhZ05vZGVMaXN0
KCkKIHsKICAgICBpZiAobV9uYW1lc3BhY2VVUkkgPT0gc3RhckF0b20pCi0gICAgICAgIG93bmVy
Tm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbWljTmFtZSh0aGlzLCBEeW5h
bWljTm9kZUxpc3Q6OlRhZ05vZGVMaXN0VHlwZSwgbV9sb2NhbE5hbWUpOworICAgICAgICBvd25l
ck5vZGUoKS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgVGFn
Tm9kZUxpc3RUeXBlLCBtX2xvY2FsTmFtZSk7CiAgICAgZWxzZQogICAgICAgICBvd25lck5vZGUo
KS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aFF1YWxpZmllZE5hbWUodGhpcywgbV9uYW1l
c3BhY2VVUkksIG1fbG9jYWxOYW1lKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rp
b25UeXBlLmgJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVj
dGlvblR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTQgKzYwLDI0IEBAIGVudW0gQ29sbGVj
dGlvblR5cGUgewogI2VuZGlmCiAKICAgICBGb3JtQ29udHJvbHMsCi0gICAgTm9kZUxpc3RDb2xs
ZWN0aW9uVHlwZQorCisgICAgLy8gTGl2ZSBub2RlIGxpc3RzLgorCisgICAgQ2hpbGROb2RlTGlz
dFR5cGUsCisgICAgQ2xhc3NOb2RlTGlzdFR5cGUsCisgICAgTmFtZU5vZGVMaXN0VHlwZSwKKyAg
ICBUYWdOb2RlTGlzdFR5cGUsCisgICAgUmFkaW9Ob2RlTGlzdFR5cGUsCisgICAgTGFiZWxzTm9k
ZUxpc3RUeXBlLAorICAgIE1pY3JvRGF0YUl0ZW1MaXN0VHlwZSwKKyAgICBQcm9wZXJ0eU5vZGVM
aXN0VHlwZSwKIH07CiAKIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHlwZSBGaXJzdFVubmFtZWRE
b2N1bWVudENhY2hlZFR5cGUgPSBEb2NJbWFnZXM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTnVt
VW5uYW1lZERvY3VtZW50Q2FjaGVkVHlwZXMgPSBXaW5kb3dOYW1lZEl0ZW1zIC0gRG9jSW1hZ2Vz
OwogCiBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblR5cGUgRmlyc3ROb2RlQ29sbGVjdGlvblR5cGUg
PSBOb2RlQ2hpbGRyZW47Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgTnVtTm9kZUNvbGxlY3Rpb25U
eXBlcyA9IEZvcm1Db250cm9scyAtIE5vZGVDaGlsZHJlbiArIDE7CitzdGF0aWMgY29uc3QgQ29s
bGVjdGlvblR5cGUgRmlyc3ROb2RlTGlzdFR5cGUgPSBDaGlsZE5vZGVMaXN0VHlwZTsKIAogaW5s
aW5lIGJvb2wgaXNVbm5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlKENvbGxlY3Rpb25UeXBlIHR5cGUp
CiB7CkBAIC03OSw2ICs4OSwxMSBAQCBpbmxpbmUgYm9vbCBpc05vZGVDb2xsZWN0aW9uVHlwZShD
b2xsZWN0CiAgICAgcmV0dXJuIHR5cGUgPj0gRmlyc3ROb2RlQ29sbGVjdGlvblR5cGU7CiB9CiAK
K2lubGluZSBib29sIGlzTm9kZUxpc3QoQ29sbGVjdGlvblR5cGUgdHlwZSkKK3sKKyAgICByZXR1
cm4gdHlwZSA+PSBGaXJzdE5vZGVMaXN0VHlwZTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24g
MTM1NDI3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDE0IEBAIHN0YXRpYyBib29sIHNob3VsZE9ubHlJbmNsdWRl
RGlyZWN0Q2hpbGQKICAgICBjYXNlIFRTZWN0aW9uUm93czoKICAgICBjYXNlIFRhYmxlVEJvZGll
czoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBOb2RlTGlzdENvbGxlY3Rpb25UeXBl
OgorICAgIGNhc2UgQ2hpbGROb2RlTGlzdFR5cGU6CisgICAgY2FzZSBDbGFzc05vZGVMaXN0VHlw
ZToKKyAgICBjYXNlIE5hbWVOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBUYWdOb2RlTGlzdFR5cGU6
CisgICAgY2FzZSBSYWRpb05vZGVMaXN0VHlwZToKKyAgICBjYXNlIExhYmVsc05vZGVMaXN0VHlw
ZToKKyAgICBjYXNlIE1pY3JvRGF0YUl0ZW1MaXN0VHlwZToKKyAgICBjYXNlIFByb3BlcnR5Tm9k
ZUxpc3RUeXBlOgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xMDMsOCArMTEwLDE2IEBAIHN0YXRpYyBOb2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBl
RnJvbUNvbGwKICAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKICAgICBjYXNlIERhdGFMaXN0T3B0
aW9uczoKICAgICBjYXNlIE1hcEFyZWFzOgotICAgIGNhc2UgTm9kZUxpc3RDb2xsZWN0aW9uVHlw
ZToKICAgICAgICAgcmV0dXJuIE5vZGVMaXN0SXNSb290ZWRBdE5vZGU7CisgICAgY2FzZSBDaGls
ZE5vZGVMaXN0VHlwZToKKyAgICBjYXNlIENsYXNzTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTmFt
ZU5vZGVMaXN0VHlwZToKKyAgICBjYXNlIFRhZ05vZGVMaXN0VHlwZToKKyAgICBjYXNlIFJhZGlv
Tm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTGFiZWxzTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTWlj
cm9EYXRhSXRlbUxpc3RUeXBlOgorICAgIGNhc2UgUHJvcGVydHlOb2RlTGlzdFR5cGU6CisgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
Tm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZTsKQEAgLTE0NSw3ICsxNjAsMTQgQEAgc3RhdGljIE5vZGVM
aXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYQogI2VuZGlmCiAgICAgY2FzZSBGb3JtQ29udHJv
bHM6CiAgICAgICAgIHJldHVybiBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzOwotICAgIGNhc2Ug
Tm9kZUxpc3RDb2xsZWN0aW9uVHlwZToKKyAgICBjYXNlIENoaWxkTm9kZUxpc3RUeXBlOgorICAg
IGNhc2UgQ2xhc3NOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBOYW1lTm9kZUxpc3RUeXBlOgorICAg
IGNhc2UgVGFnTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgUmFkaW9Ob2RlTGlzdFR5cGU6CisgICAg
Y2FzZSBMYWJlbHNOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBNaWNyb0RhdGFJdGVtTGlzdFR5cGU6
CisgICAgY2FzZSBQcm9wZXJ0eU5vZGVMaXN0VHlwZToKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI5LDcgKzI1MSwxNCBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNBY2NlcHRhYmxlRWxlbWVudChDCiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRl
bXM6CiAgICAgY2FzZSBUYWJsZVJvd3M6CiAgICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAg
IGNhc2UgTm9kZUxpc3RDb2xsZWN0aW9uVHlwZToKKyAgICBjYXNlIENoaWxkTm9kZUxpc3RUeXBl
OgorICAgIGNhc2UgQ2xhc3NOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBOYW1lTm9kZUxpc3RUeXBl
OgorICAgIGNhc2UgVGFnTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgUmFkaW9Ob2RlTGlzdFR5cGU6
CisgICAgY2FzZSBMYWJlbHNOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBNaWNyb0RhdGFJdGVtTGlz
dFR5cGU6CisgICAgY2FzZSBQcm9wZXJ0eU5vZGVMaXN0VHlwZToKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTI2Nyw3ICsyOTYsNyBA
QCBOb2RlKiBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZXJhdGVGCiAgICAgQ29sbGVjdGlv
blR5cGUgY29sbGVjdGlvblR5cGUgPSB0eXBlKCk7CiAgICAgTm9kZSogcm9vdE5vZGUgPSB0aGlz
LT5yb290Tm9kZSgpOwogICAgIGZvciAoOyBjdXJyZW50OyBjdXJyZW50ID0gbmV4dE5vZGU8Zm9y
d2FyZD4ocm9vdE5vZGUsIGN1cnJlbnQsIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pKSB7Ci0g
ICAgICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlKSB7Cisg
ICAgICAgIGlmIChpc05vZGVMaXN0KGNvbGxlY3Rpb25UeXBlKSkgewogICAgICAgICAgICAgaWYg
KGN1cnJlbnQtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBEeW5hbWljTm9k
ZUxpc3QqPih0aGlzKS0+bm9kZU1hdGNoZXModG9FbGVtZW50KGN1cnJlbnQpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdG9FbGVtZW50KGN1cnJlbnQpOwogICAgICAgICB9IGVsc2UgewpAQCAt
Mjg5LDcgKzMxOCw3IEBAIE5vZGUqIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aXRlbUJlZm8K
ICAgICBlbHNlCiAgICAgICAgIGN1cnJlbnQgPSBmaXJzdE5vZGUoZm9yd2FyZCwgcm9vdE5vZGUo
KSwgc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbigpKTsKIAotICAgIGlmICh0eXBlKCkg
PT0gTm9kZUxpc3RDb2xsZWN0aW9uVHlwZSAmJiBzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxk
cmVuKCkpIC8vIENoaWxkTm9kZUxpc3QKKyAgICBpZiAoaXNOb2RlTGlzdCh0eXBlKCkpICYmIHNo
b3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oKSkgLy8gQ2hpbGROb2RlTGlzdAogICAgICAg
ICByZXR1cm4gY3VycmVudDsKIAogICAgIHJldHVybiBpdGVyYXRlRm9yTmV4dE5vZGU8Zm9yd2Fy
ZD4oY3VycmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gTGFiZWxhYmxlRWxlbWVudDo6bAogICAgIGlmICghZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3Rz
KCktPmFkZENhY2hlV2l0aEF0b21pY05hbWU8TGFiZWxzTm9kZUxpc3Q+KHRoaXMsIER5bmFtaWNO
b2RlTGlzdDo6TGFiZWxzTm9kZUxpc3RUeXBlLCBzdGFyQXRvbSk7CisgICAgcmV0dXJuIGVuc3Vy
ZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPExh
YmVsc05vZGVMaXN0Pih0aGlzLCBMYWJlbHNOb2RlTGlzdFR5cGUsIHN0YXJBdG9tKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViY29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNO
b2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2Rl
TGlzdC5jcHAJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxz
Tm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIExhYmVsc05vZGVM
aXN0OjpMYWJlbHNOb2RlTGlzdChOb2RlKiBmb3IKIAogTGFiZWxzTm9kZUxpc3Q6On5MYWJlbHNO
b2RlTGlzdCgpCiB7Ci0gICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdp
dGhBdG9taWNOYW1lKHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6TGFiZWxzTm9kZUxpc3RUeXBlLCBz
dGFyQXRvbSk7CisgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhB
dG9taWNOYW1lKHRoaXMsIExhYmVsc05vZGVMaXN0VHlwZSwgc3RhckF0b20pOwogfSAKICAgICAK
IGJvb2wgTGFiZWxzTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQqIHRlc3ROb2RlKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMzU0
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw3ICs0NSw3IEBAIFJhZGlvTm9kZUxpc3Q6OlJhZGlvTm9kZUxpc3QoTm9kZSog
cm9vdE4KIAogUmFkaW9Ob2RlTGlzdDo6flJhZGlvTm9kZUxpc3QoKQogewotICAgIG93bmVyTm9k
ZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbWljTmFtZSh0aGlzLCBEeW5hbWlj
Tm9kZUxpc3Q6OlJhZGlvTm9kZUxpc3RUeXBlLCBtX25hbWUpOworICAgIG93bmVyTm9kZSgpLT5u
b2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoQXRvbWljTmFtZSh0aGlzLCBSYWRpb05vZGVMaXN0
VHlwZSwgbV9uYW1lKTsKIH0KIAogc3RhdGljIGlubGluZSBIVE1MSW5wdXRFbGVtZW50KiB0b1Jh
ZGlvQnV0dG9uSW5wdXRFbGVtZW50KE5vZGUqIG5vZGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175538</attachid>
            <date>2012-11-21 15:36:42 -0800</date>
            <delta_ts>2012-11-21 22:19:06 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102983-20121121153429.patch</filename>
            <type>text/plain</type>
            <size>27078</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDEyLTExLTIxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbGxlY3Rpb25UeXBlIGFuZCBE
eW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBzaG91bGQgYmUgbWVyZ2VkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5ODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBNZXJnZWQgRHluYW1pY05vZGVM
aXN0OjpOb2RlTGlzdFR5cGUgKGZvciBsaXZlIE5vZGVMaXN0KSBpbnRvIENvbGxlY3Rpb25UeXBl
LgorCisgICAgICAgICogZG9tL0NsYXNzTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xhc3NOb2RlTGlzdDo6fkNsYXNzTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1bnJlZ2lzdGVyTm9kZUxpc3RDYWNoZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9EeW5h
bWljTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVC
YXNlOjppbnZhbGlkYXRlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY05vZGVMaXN0
Q2FjaGVCYXNlOjppbnZhbGlkYXRlSWROYW1lQ2FjaGVNYXBzKToKKyAgICAgICAgKiBkb20vRHlu
YW1pY05vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljTm9kZUxpc3RDYWNoZUJh
c2U6OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWlj
Tm9kZUxpc3RDYWNoZUJhc2U6Omhhc0lkTmFtZUNhY2hlKTogQWRkZWQuIFJldHVybnMgaWZmIHRo
aXMgaXMgYSBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlz
dENhY2hlQmFzZTo6aW52YWxpZGF0ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNO
b2RlTGlzdDo6RHluYW1pY05vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3Q6OkR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9NaWNy
b0RhdGFJdGVtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb0RhdGFJdGVtTGlzdDo6
fk1pY3JvRGF0YUl0ZW1MaXN0KToKKyAgICAgICAgKiBkb20vTmFtZU5vZGVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6fk5hbWVOb2RlTGlzdCk6CisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpyYWRpb05vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnByb3Bl
cnR5Tm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjphZGRDYWNoZVdpdGhBdG9taWNOYW1lKTogTm8gbG9u
Z2VyIGNvbnZlcnRzIENvbGxlY3Rpb25UeXBlIHRvCisgICAgICAgIGEgTm9kZUxpc3RUeXBlIGVx
dWl2YWxlbnQgc2luY2UgdHdvIGVudW1zIGhhdmUgYmVlbiBtZXJnZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6Y2FjaGVXaXRoQXRvbWljTmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlV2l0aE5hbWUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpyZW1vdmVDYWNoZVdpdGhB
dG9taWNOYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6
cmVtb3ZlQ2FjaGVXaXRoTmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3Rz
Tm9kZURhdGE6Om5hbWVkTm9kZUxpc3RLZXkpOiBJZ25vcmUgdHlwZXMgYmVmb3JlIEZpcnN0Tm9k
ZUNvbGxlY3Rpb25UeXBlCisgICAgICAgIHRvIG1pbmltaXplIHRoZSBoYXNoIGNvbmZsaWN0cy4K
KyAgICAgICAgKiBkb20vUHJvcGVydHlOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eU5vZGVMaXN0Ojp+UHJvcGVydHlOb2RlTGlzdCk6CisgICAgICAgICogZG9tL1RhZ05v
ZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRhZ05vZGVMaXN0Ojp+VGFnTm9kZUxpc3Qp
OgorICAgICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
Tm9kZUxpc3QpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6cm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNBY2NlcHRhYmxlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZXJhdGVGb3JOZXh0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZW1CZWZvcmVPckFmdGVyKToKKyAgICAg
ICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxh
YmxlRWxlbWVudDo6bGFiZWxzKToKKyAgICAgICAgKiBodG1sL0xhYmVsc05vZGVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVMaXN0Ojp+TGFiZWxzTm9kZUxpc3QpOgorICAg
ICAgICAqIGh0bWwvUmFkaW9Ob2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05v
ZGVMaXN0Ojp+UmFkaW9Ob2RlTGlzdCk6CisKIDIwMTItMTEtMjEgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMzUzMzgsIHIxMzUzNTksIGFuZCByMTM1Mzc4LgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0NsYXNzTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9D
bGFzc05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0NsYXNzTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIENsYXNz
Tm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3QoUGFzc1JlZlB0cjwKIAogQ2xhc3NOb2RlTGlzdDo6fkNs
YXNzTm9kZUxpc3QoKQogewotICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2Fj
aGVXaXRoTmFtZSh0aGlzLCBEeW5hbWljTm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3RUeXBlLCBtX29y
aWdpbmFsQ2xhc3NOYW1lcyk7CisgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVD
YWNoZVdpdGhOYW1lKHRoaXMsIENsYXNzTm9kZUxpc3RUeXBlLCBtX29yaWdpbmFsQ2xhc3NOYW1l
cyk7CiB9IAogCiBib29sIENsYXNzTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQqIHRlc3RO
b2RlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMzU0Mjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDYyLDcgKzM0NjIsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRDU1NUYXJnZXQoRWxlbWVudCogbikK
IAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKER5bmFtaWNOb2RlTGlzdENh
Y2hlQmFzZSogbGlzdCkKIHsKLSAgICBpZiAobGlzdC0+dHlwZSgpICE9IE5vZGVMaXN0Q29sbGVj
dGlvblR5cGUpCisgICAgaWYgKGxpc3QtPmhhc0lkTmFtZUNhY2hlKCkpCiAgICAgICAgIG1fbm9k
ZUxpc3RDb3VudHNbSW52YWxpZGF0ZU9uSWROYW1lQXR0ckNoYW5nZV0rKzsKICAgICBtX25vZGVM
aXN0Q291bnRzW2xpc3QtPmludmFsaWRhdGlvblR5cGUoKV0rKzsKICAgICBpZiAobGlzdC0+aXNS
b290ZWRBdERvY3VtZW50KCkpCkBAIC0zNDcxLDcgKzM0NzEsNyBAQCB2b2lkIERvY3VtZW50Ojpy
ZWdpc3Rlck5vZGVMaXN0Q2FjaGUoRHluCiAKIHZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJOb2Rl
TGlzdENhY2hlKER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSogbGlzdCkKIHsKLSAgICBpZiAobGlz
dC0+dHlwZSgpICE9IE5vZGVMaXN0Q29sbGVjdGlvblR5cGUpCisgICAgaWYgKGxpc3QtPmhhc0lk
TmFtZUNhY2hlKCkpCiAgICAgICAgIG1fbm9kZUxpc3RDb3VudHNbSW52YWxpZGF0ZU9uSWROYW1l
QXR0ckNoYW5nZV0tLTsKICAgICBtX25vZGVMaXN0Q291bnRzW2xpc3QtPmludmFsaWRhdGlvblR5
cGUoKV0tLTsKICAgICBpZiAobGlzdC0+aXNSb290ZWRBdERvY3VtZW50KCkpIHsKQEAgLTU2ODIs
NyArNTY4Miw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpnZXRJdGVtcygKICAg
ICAvLyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgYW4gZW1wdHkgc3RyaW5nIGlkZW50
aWZpZXIgdG8gbWFwIHN1Y2ggcmVxdWVzdCBpbiB0aGUgY2FjaGUuCiAgICAgU3RyaW5nIGxvY2Fs
VHlwZU5hbWVzID0gdHlwZU5hbWVzLmlzTnVsbCgpID8gTWljcm9EYXRhSXRlbUxpc3Q6OnVuZGVm
aW5lZEl0ZW1UeXBlKCkgOiB0eXBlTmFtZXM7CiAKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aE5hbWU8TWljcm9EYXRhSXRlbUxpc3Q+
KHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6TWljcm9EYXRhSXRlbUxpc3RUeXBlLCBsb2NhbFR5cGVO
YW1lcyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5h
ZGRDYWNoZVdpdGhOYW1lPE1pY3JvRGF0YUl0ZW1MaXN0Pih0aGlzLCBNaWNyb0RhdGFJdGVtTGlz
dFR5cGUsIGxvY2FsVHlwZU5hbWVzKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRHluYW1pY05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAgdm9pZCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdAogICAgIG1faXNJdGVt
Q2FjaGVWYWxpZCA9IGZhbHNlOwogICAgIG1faXNOYW1lQ2FjaGVWYWxpZCA9IGZhbHNlOwogICAg
IG1faXNJdGVtUmVmRWxlbWVudHNDYWNoZVZhbGlkID0gZmFsc2U7Ci0gICAgaWYgKHR5cGUoKSA9
PSBOb2RlTGlzdENvbGxlY3Rpb25UeXBlKQorICAgIGlmIChpc05vZGVMaXN0KHR5cGUoKSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2FjaGVCYXNlKiBjYWNo
ZUJhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSo+KHRoaXMp
OwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aW52YWxp
ZGF0CiAKIHZvaWQgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppbnZhbGlkYXRlSWROYW1lQ2Fj
aGVNYXBzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSgpICE9IE5vZGVMaXN0Q29sbGVjdGlv
blR5cGUpOworICAgIEFTU0VSVChoYXNJZE5hbWVDYWNoZSgpKTsKICAgICBjb25zdCBIVE1MQ29s
bGVjdGlvbkNhY2hlQmFzZSogY2FjaGVCYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTENvbGxl
Y3Rpb25DYWNoZUJhc2UqPih0aGlzKTsKICAgICBjYWNoZUJhc2UtPm1faWRDYWNoZS5jbGVhcigp
OwogICAgIGNhY2hlQmFzZS0+bV9uYW1lQ2FjaGUuY2xlYXIoKTsKQEAgLTk1LDcgKzk1LDcgQEAg
Tm9kZSogRHluYW1pY05vZGVMaXN0OjppdGVtV2l0aE5hbWUoY29ucwogCiAgICAgaWYgKHJvb3RO
b2RlLT5pbkRvY3VtZW50KCkpIHsKICNpZiBFTkFCTEUoTUlDUk9EQVRBKQotICAgICAgICBpZiAo
cm9vdFR5cGUoKSA9PSBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudElmT3duZXJIYXNJdGVtcmVm
QXR0cikKKyAgICAgICAgaWYgKHR5cGUoKSA9PSBQcm9wZXJ0eU5vZGVMaXN0VHlwZSkKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFByb3BlcnR5Tm9kZUxpc3QqPih0aGlzKS0+dXBkYXRl
UmVmRWxlbWVudHMoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1p
Y05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2Rl
TGlzdC5oCShyZXZpc2lvbiAxMzU0MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05v
ZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDEwICs2NCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChtX3Jvb3RUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb290VHlwZSkp
OwogICAgICAgICBBU1NFUlQobV9pbnZhbGlkYXRpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbnZhbGlkYXRpb25UeXBlKSk7CiAgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBl
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2xsZWN0aW9uVHlwZSkpOwotICAgICAgICBBU1NF
UlQoIW1fb3ZlcnJpZGVzSXRlbUFmdGVyIHx8IG1fY29sbGVjdGlvblR5cGUgIT0gTm9kZUxpc3RD
b2xsZWN0aW9uVHlwZSk7CisgICAgICAgIEFTU0VSVCghbV9vdmVycmlkZXNJdGVtQWZ0ZXIgfHwg
IWlzTm9kZUxpc3QoY29sbGVjdGlvblR5cGUpKTsKICAgICB9CiAKIHB1YmxpYzoKKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaGFzSWROYW1lQ2FjaGUoKSBjb25zdCB7IHJldHVybiAhaXNOb2RlTGlz
dCh0eXBlKCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUm9vdGVkQXREb2N1bWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9vdFR5cGUgPT0gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQg
fHwgbV9yb290VHlwZSA9PSBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudElmT3duZXJIYXNJdGVt
cmVmQXR0cjsgfQogICAgIEFMV0FZU19JTkxJTkUgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGlu
dmFsaWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlTGlzdEludmFs
aWRhdGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIENv
bGxlY3Rpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2xsZWN0aW9u
VHlwZT4obV9jb2xsZWN0aW9uVHlwZSk7IH0KQEAgLTc2LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgaWYgKCFhdHRyTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmli
dXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJOYW1lKSkKICAgICAgICAgICAgIGlu
dmFsaWRhdGVDYWNoZSgpOwotICAgICAgICBlbHNlIGlmICh0eXBlKCkgIT0gTm9kZUxpc3RDb2xs
ZWN0aW9uVHlwZSAmJiAoKmF0dHJOYW1lID09IEhUTUxOYW1lczo6aWRBdHRyIHx8ICphdHRyTmFt
ZSA9PSBIVE1MTmFtZXM6Om5hbWVBdHRyKSkKKyAgICAgICAgZWxzZSBpZiAoaGFzSWROYW1lQ2Fj
aGUoKSAmJiAoKmF0dHJOYW1lID09IEhUTUxOYW1lczo6aWRBdHRyIHx8ICphdHRyTmFtZSA9PSBI
VE1MTmFtZXM6Om5hbWVBdHRyKSkKICAgICAgICAgICAgIGludmFsaWRhdGVJZE5hbWVDYWNoZU1h
cHMoKTsKICAgICB9CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKSBjb25zdDsKQEAgLTE5MCwx
OSArMTkxLDkgQEAgQUxXQVlTX0lOTElORSBib29sIER5bmFtaWNOb2RlTGlzdENhY2hlQgogCiBj
bGFzcyBEeW5hbWljTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QsIHB1YmxpYyBEeW5hbWljTm9k
ZUxpc3RDYWNoZUJhc2UgewogcHVibGljOgotICAgIGVudW0gTm9kZUxpc3RUeXBlIHsKLSAgICAg
ICAgQ2hpbGROb2RlTGlzdFR5cGUsCi0gICAgICAgIENsYXNzTm9kZUxpc3RUeXBlLAotICAgICAg
ICBOYW1lTm9kZUxpc3RUeXBlLAotICAgICAgICBUYWdOb2RlTGlzdFR5cGUsCi0gICAgICAgIFJh
ZGlvTm9kZUxpc3RUeXBlLAotICAgICAgICBMYWJlbHNOb2RlTGlzdFR5cGUsCi0gICAgICAgIE1p
Y3JvRGF0YUl0ZW1MaXN0VHlwZSwKLSAgICAgICAgUHJvcGVydHlOb2RlTGlzdFR5cGUsCi0gICAg
ICAgIFBhc3RMYXN0Tm9kZUxpc3RUeXBlLAotICAgIH07Ci0gICAgRHluYW1pY05vZGVMaXN0KFBh
c3NSZWZQdHI8Tm9kZT4gb3duZXJOb2RlLCBOb2RlTGlzdFR5cGUgdHlwZSwgTm9kZUxpc3RSb290
VHlwZSByb290VHlwZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUp
Ci0gICAgICAgIDogRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKG93bmVyTm9kZS5nZXQoKSwgcm9v
dFR5cGUsIGludmFsaWRhdGlvblR5cGUsIHR5cGUgPT0gQ2hpbGROb2RlTGlzdFR5cGUsIE5vZGVM
aXN0Q29sbGVjdGlvblR5cGUsIERvZXNOb3RPdmVycmlkZUl0ZW1BZnRlcikKKyAgICBEeW5hbWlj
Tm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiBvd25lck5vZGUsIENvbGxlY3Rpb25UeXBlIGNvbGxl
Y3Rpb25UeXBlLCBOb2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlv
blR5cGUgaW52YWxpZGF0aW9uVHlwZSkKKyAgICAgICAgOiBEeW5hbWljTm9kZUxpc3RDYWNoZUJh
c2Uob3duZXJOb2RlLmdldCgpLCByb290VHlwZSwgaW52YWxpZGF0aW9uVHlwZSwgY29sbGVjdGlv
blR5cGUgPT0gQ2hpbGROb2RlTGlzdFR5cGUsCisgICAgICAgIGNvbGxlY3Rpb25UeXBlLCBEb2Vz
Tm90T3ZlcnJpZGVJdGVtQWZ0ZXIpCiAgICAgeyB9CiAgICAgdmlydHVhbCB+RHluYW1pY05vZGVM
aXN0KCkgeyB9CiAKQEAgLTIyNiw3ICsyMTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5v
ZGVMaXN0VHlwZSB0eXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlw
ZSwgTm9kZUxpc3RSb290VHlwZSByb290VHlwZSA9IE5vZGVMaXN0SXNSb290ZWRBdE5vZGUpCisg
ICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIENvbGxlY3Rp
b25UeXBlIHR5cGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlLCBO
b2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlID0gTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZSkKICAgICAg
ICAgOiBEeW5hbWljTm9kZUxpc3Qobm9kZSwgdHlwZSwgcm9vdFR5cGUsIGludmFsaWRhdGlvblR5
cGUpCiAgICAgewogICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUodGhp
cyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWljcm9EYXRhSXRlbUxpc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb0RhdGFJdGVtTGlzdC5jcHAJKHJldmlz
aW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb0RhdGFJdGVtTGlzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgTWljcm9EYXRhSXRlbUxpc3Q6Ok1pY3Jv
RGF0YUl0ZW1MaXN0KFBhcwogCiBNaWNyb0RhdGFJdGVtTGlzdDo6fk1pY3JvRGF0YUl0ZW1MaXN0
KCkKIHsKLSAgICBvd25lck5vZGUoKS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aE5hbWUo
dGhpcywgRHluYW1pY05vZGVMaXN0OjpNaWNyb0RhdGFJdGVtTGlzdFR5cGUsIG1fb3JpZ2luYWxU
eXBlTmFtZXMpOworICAgIG93bmVyTm9kZSgpLT5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRo
TmFtZSh0aGlzLCBNaWNyb0RhdGFJdGVtTGlzdFR5cGUsIG1fb3JpZ2luYWxUeXBlTmFtZXMpOwog
fQogCiBib29sIE1pY3JvRGF0YUl0ZW1MaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiB0ZXN0Tm9k
ZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAx
MzU0MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQCBOYW1lTm9kZUxpc3Q6Ok5hbWVOb2RlTGlzdChQYXNzUmVm
UHRyPE5vCiAKIE5hbWVOb2RlTGlzdDo6fk5hbWVOb2RlTGlzdCgpCiB7Ci0gICAgb3duZXJOb2Rl
KCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9taWNOYW1lKHRoaXMsIER5bmFtaWNO
b2RlTGlzdDo6TmFtZU5vZGVMaXN0VHlwZSwgbV9uYW1lKTsKKyAgICBvd25lck5vZGUoKS0+bm9k
ZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgTmFtZU5vZGVMaXN0VHlw
ZSwgbV9uYW1lKTsKIH0gCiAKIGJvb2wgTmFtZU5vZGVMaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50
KiB0ZXN0Tm9kZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDEzNTQyOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2Nyw4
ICsxNTY3LDggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQot
ICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENh
Y2hlV2l0aEF0b21pY05hbWU8SFRNTFRhZ05vZGVMaXN0Pih0aGlzLCBEeW5hbWljTm9kZUxpc3Q6
OlRhZ05vZGVMaXN0VHlwZSwgbG9jYWxOYW1lKTsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hlV2l0aEF0b21pY05hbWU8VGFnTm9kZUxpc3Q+
KHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6VGFnTm9kZUxpc3RUeXBlLCBsb2NhbE5hbWUpOworICAg
ICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENhY2hl
V2l0aEF0b21pY05hbWU8SFRNTFRhZ05vZGVMaXN0Pih0aGlzLCBUYWdOb2RlTGlzdFR5cGUsIGxv
Y2FsTmFtZSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygp
LT5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPFRhZ05vZGVMaXN0Pih0aGlzLCBUYWdOb2RlTGlzdFR5
cGUsIGxvY2FsTmFtZSk7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1l
bnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKQpAQCAtMTU4NCwxOCArMTU4NCwxOCBAQCBQYXNzUmVmUHRy
PE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5v
ZGU6OmdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpCiB7Ci0gICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhB
dG9taWNOYW1lPE5hbWVOb2RlTGlzdD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpOYW1lTm9kZUxp
c3RUeXBlLCBlbGVtZW50TmFtZSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3Vy
ZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPE5hbWVOb2RlTGlzdD4odGhpcywg
TmFtZU5vZGVMaXN0VHlwZSwgZWxlbWVudE5hbWUpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcykK
IHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCktPmFkZENh
Y2hlV2l0aE5hbWU8Q2xhc3NOb2RlTGlzdD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpDbGFzc05v
ZGVMaXN0VHlwZSwgY2xhc3NOYW1lcyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVu
c3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhOYW1lPENsYXNzTm9kZUxpc3Q+KHRoaXMsIENs
YXNzTm9kZUxpc3RUeXBlLCBjbGFzc05hbWVzKTsKIH0KIAogUGFzc1JlZlB0cjxSYWRpb05vZGVM
aXN0PiBOb2RlOjpyYWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShmb3JtVGFnKSB8fCBoYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7
Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNo
ZVdpdGhBdG9taWNOYW1lPFJhZGlvTm9kZUxpc3Q+KHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6UmFk
aW9Ob2RlTGlzdFR5cGUsIG5hbWUpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1
cmVOb2RlTGlzdHMoKS0+YWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxSYWRpb05vZGVMaXN0Pih0aGlz
LCBSYWRpb05vZGVMaXN0VHlwZSwgbmFtZSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gTm9k
ZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0yNzg3LDcgKzI3ODcsNyBAQCB2b2lkIE5vZGU6OnNldEl0ZW1UeXBlKGNv
bnN0IFN0cmluZyYgdmFsCiAKIFBhc3NSZWZQdHI8UHJvcGVydHlOb2RlTGlzdD4gTm9kZTo6cHJv
cGVydHlOb2RlTGlzdChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJh
cmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cygpLT5hZGRDYWNoZVdpdGhOYW1lPFByb3BlcnR5Tm9k
ZUxpc3Q+KHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6UHJvcGVydHlOb2RlTGlzdFR5cGUsIG5hbWUp
OworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHMoKS0+YWRkQ2Fj
aGVXaXRoTmFtZTxQcm9wZXJ0eU5vZGVMaXN0Pih0aGlzLCBQcm9wZXJ0eU5vZGVMaXN0VHlwZSwg
bmFtZSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2
aXNpb24gMTM1NDI5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw5ICs2NCw5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8
UXVhbGlmaWVkTmFtZSwgVGFnTm9kZUxpc3QqPiBUYWdOb2RlTGlzdENhY2hlTlM7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2FjaGVXaXRoQXRvbWlj
TmFtZShOb2RlKiBub2RlLCBEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2FjaGVXaXRo
QXRvbWljTmFtZShOb2RlKiBub2RlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1l
Q2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRkKG5hbWVk
Tm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpLCAwKTsKKyAgICAgICAgTm9kZUxpc3RBdG9taWNO
YW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2F0b21pY05hbWVDYWNoZXMuYWRkKG5h
bWVkTm9kZUxpc3RLZXkoY29sbGVjdGlvblR5cGUsIG5hbWUpLCAwKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAKQEAgLTc4LDggKzc4LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgUGFzc1JlZlB0cjxUPiBhZGRDYWNoZVdpdGhBdG9taWNO
YW1lKEVsZW1lbnQqIG5vZGUsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQogICAgIHsK
LSAgICAgICAgdW5zaWduZWQgY2hhciB0eXBlID0gRHluYW1pY05vZGVMaXN0OjpQYXN0TGFzdE5v
ZGVMaXN0VHlwZSArIGNvbGxlY3Rpb25UeXBlIC0gRmlyc3ROb2RlQ29sbGVjdGlvblR5cGU7Ci0g
ICAgICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9h
dG9taWNOYW1lQ2FjaGVzLmFkZChuYW1lZE5vZGVMaXN0S2V5KHR5cGUsIHN0YXJBdG9tKSwgMCk7
CisgICAgICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9hdG9taWNOYW1lQ2FjaGVzLmFkZChuYW1lZE5vZGVMaXN0S2V5KGNvbGxlY3Rpb25UeXBlLCBz
dGFyQXRvbSksIDApOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIApAQCAt
OTEsMTQgKzkwLDEzIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQq
IGNhY2hlV2l0aEF0b21pY05hbWUoQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCiAgICAg
ewotICAgICAgICB1bnNpZ25lZCBjaGFyIHR5cGUgPSBEeW5hbWljTm9kZUxpc3Q6OlBhc3RMYXN0
Tm9kZUxpc3RUeXBlICsgY29sbGVjdGlvblR5cGUgLSBGaXJzdE5vZGVDb2xsZWN0aW9uVHlwZTsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2F0b21pY05hbWVDYWNoZXMuZ2V0KG5h
bWVkTm9kZUxpc3RLZXkodHlwZSwgc3RhckF0b20pKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUKj4obV9hdG9taWNOYW1lQ2FjaGVzLmdldChuYW1lZE5vZGVMaXN0S2V5KGNvbGxlY3Rp
b25UeXBlLCBzdGFyQXRvbSkpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIFBhc3NSZWZQdHI8VD4gYWRkQ2FjaGVXaXRoTmFtZShOb2RlKiBub2RlLCBEeW5hbWljTm9k
ZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIFBh
c3NSZWZQdHI8VD4gYWRkQ2FjaGVXaXRoTmFtZShOb2RlKiBub2RlLCBDb2xsZWN0aW9uVHlwZSBj
b2xsZWN0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgTm9kZUxp
c3ROYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX25hbWVDYWNoZXMuYWRkKG5hbWVk
Tm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpLCAwKTsKKyAgICAgICAgTm9kZUxpc3ROYW1lQ2Fj
aGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX25hbWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RL
ZXkoY29sbGVjdGlvblR5cGUsIG5hbWUpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSk7CiAKQEAgLTExOSwyMyArMTE3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGxpc3QucmVsZWFzZSgpOwogICAgIH0KIAotICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRoQXRvbWlj
TmFtZShEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UqIGxpc3QsIER5bmFtaWNOb2RlTGlzdDo6Tm9k
ZUxpc3RUeXBlIGxpc3RUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgdm9pZCBy
ZW1vdmVDYWNoZVdpdGhBdG9taWNOYW1lKER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSogbGlzdCwg
Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9
IHN0YXJBdG9tKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0LCBsaXN0ID09IG1f
YXRvbWljTmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwgbmFtZSkpKTsK
LSAgICAgICAgbV9hdG9taWNOYW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5vZGVMaXN0S2V5KGxpc3RU
eXBlLCBuYW1lKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX2F0b21p
Y05hbWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxpc3RLZXkoY29sbGVjdGlvblR5cGUsIG5hbWUpKSk7
CisgICAgICAgIG1fYXRvbWljTmFtZUNhY2hlcy5yZW1vdmUobmFtZWROb2RlTGlzdEtleShjb2xs
ZWN0aW9uVHlwZSwgbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRoQXRv
bWljTmFtZShEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UqIGxpc3QsIENvbGxlY3Rpb25UeXBlIGNv
bGxlY3Rpb25UeXBlKQorICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRoTmFtZShEeW5hbWljU3VidHJl
ZU5vZGVMaXN0KiBsaXN0LCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciB0eXBlID0gRHluYW1pY05v
ZGVMaXN0OjpQYXN0TGFzdE5vZGVMaXN0VHlwZSArIGNvbGxlY3Rpb25UeXBlIC0gRmlyc3ROb2Rl
Q29sbGVjdGlvblR5cGU7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX2F0
b21pY05hbWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxpc3RLZXkodHlwZSwgc3RhckF0b20pKSk7Ci0g
ICAgICAgIG1fYXRvbWljTmFtZUNhY2hlcy5yZW1vdmUobmFtZWROb2RlTGlzdEtleSh0eXBlLCBz
dGFyQXRvbSkpOwotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRoTmFtZShEeW5hbWlj
U3VidHJlZU5vZGVMaXN0KiBsaXN0LCBEeW5hbWljTm9kZUxpc3Q6Ok5vZGVMaXN0VHlwZSBsaXN0
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChs
aXN0LCBsaXN0ID09IG1fbmFtZUNhY2hlcy5nZXQobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwg
bmFtZSkpKTsKLSAgICAgICAgbV9uYW1lQ2FjaGVzLnJlbW92ZShuYW1lZE5vZGVMaXN0S2V5KGxp
c3RUeXBlLCBuYW1lKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobGlzdCwgbGlzdCA9PSBtX25h
bWVDYWNoZXMuZ2V0KG5hbWVkTm9kZUxpc3RLZXkoY29sbGVjdGlvblR5cGUsIG5hbWUpKSk7Cisg
ICAgICAgIG1fbmFtZUNhY2hlcy5yZW1vdmUobmFtZWROb2RlTGlzdEtleShjb2xsZWN0aW9uVHlw
ZSwgbmFtZSkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlQ2FjaGVXaXRoUXVhbGlmaWVkTmFt
ZShEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCkBAIC0xOTAsMTQgKzE4MSwx
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE5vZGVMaXN0c05vZGVEYXRhKCkgeyB9CiAKLSAg
ICBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiBuYW1lZE5vZGVMaXN0S2V5
KHVuc2lnbmVkIGNoYXIgbGlzdFR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBz
dGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiBuYW1lZE5vZGVMaXN0S2V5KENv
bGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPihsaXN0VHlw
ZSwgbmFtZSk7CisgICAgICAgIEFTU0VSVCh0eXBlID49IEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBl
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+
KHR5cGUgLSBGaXJzdE5vZGVDb2xsZWN0aW9uVHlwZSwgbmFtZSk7CiAgICAgfQogCi0gICAgc3Rk
OjpwYWlyPHVuc2lnbmVkIGNoYXIsIFN0cmluZz4gbmFtZWROb2RlTGlzdEtleSh1bnNpZ25lZCBj
aGFyIGxpc3RUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgc3RkOjpwYWlyPHVuc2lnbmVk
IGNoYXIsIFN0cmluZz4gbmFtZWROb2RlTGlzdEtleShDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVk
IGNoYXIsIFN0cmluZz4obGlzdFR5cGUsIG5hbWUpOworICAgICAgICBBU1NFUlQodHlwZSA+PSBG
aXJzdE5vZGVDb2xsZWN0aW9uVHlwZSk7CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXI8dW5zaWdu
ZWQgY2hhciwgU3RyaW5nPih0eXBlIC0gRmlyc3ROb2RlQ29sbGVjdGlvblR5cGUsIG5hbWUpOwog
ICAgIH0KIAogICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwIG1fYXRvbWljTmFtZUNhY2hl
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvcGVydHlOb2RlTGlzdC5jcHAJKHJldmlzaW9u
IDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9wZXJ0eU5vZGVMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBQcm9wZXJ0eU5vZGVMaXN0OjpQcm9wZXJ0eU5v
ZGVMaXN0KE5vZGUqCiAKIFByb3BlcnR5Tm9kZUxpc3Q6On5Qcm9wZXJ0eU5vZGVMaXN0KCkKIHsK
LSAgICBvd25lck5vZGUoKS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aE5hbWUodGhpcywg
RHluYW1pY05vZGVMaXN0OjpQcm9wZXJ0eU5vZGVMaXN0VHlwZSwgbV9uYW1lKTsKKyAgICBvd25l
ck5vZGUoKS0+bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aE5hbWUodGhpcywgUHJvcGVydHlO
b2RlTGlzdFR5cGUsIG1fbmFtZSk7CiB9CiAKIGJvb2wgUHJvcGVydHlOb2RlTGlzdDo6ZWxlbWVu
dElzUHJvcGVydHlPZlJlZkVsZW1lbnQoY29uc3QgTm9kZSogdGVzdEVsZW1lbnQsIGNvbnN0IE5v
ZGUgKnJlZkVsZW1lbnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5jcHAJ
KHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgVGFnTm9kZUxpc3Q6OlRhZ05vZGVMaXN0
KFBhc3NSZWZQdHI8Tm9kZQogVGFnTm9kZUxpc3Q6On5UYWdOb2RlTGlzdCgpCiB7CiAgICAgaWYg
KG1fbmFtZXNwYWNlVVJJID09IHN0YXJBdG9tKQotICAgICAgICBvd25lck5vZGUoKS0+bm9kZUxp
c3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgRHluYW1pY05vZGVMaXN0OjpU
YWdOb2RlTGlzdFR5cGUsIG1fbG9jYWxOYW1lKTsKKyAgICAgICAgb3duZXJOb2RlKCktPm5vZGVM
aXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9taWNOYW1lKHRoaXMsIFRhZ05vZGVMaXN0VHlwZSwg
bV9sb2NhbE5hbWUpOwogICAgIGVsc2UKICAgICAgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygp
LT5yZW1vdmVDYWNoZVdpdGhRdWFsaWZpZWROYW1lKHRoaXMsIG1fbmFtZXNwYWNlVVJJLCBtX2xv
Y2FsTmFtZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCShyZXZp
c2lvbiAxMzU0MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDE0ICs2MCwyNCBAQCBlbnVtIENvbGxlY3Rpb25UeXBlIHsKICNl
bmRpZgogCiAgICAgRm9ybUNvbnRyb2xzLAotICAgIE5vZGVMaXN0Q29sbGVjdGlvblR5cGUKKwor
ICAgIC8vIExpdmUgbm9kZSBsaXN0cy4KKworICAgIENoaWxkTm9kZUxpc3RUeXBlLAorICAgIENs
YXNzTm9kZUxpc3RUeXBlLAorICAgIE5hbWVOb2RlTGlzdFR5cGUsCisgICAgVGFnTm9kZUxpc3RU
eXBlLAorICAgIFJhZGlvTm9kZUxpc3RUeXBlLAorICAgIExhYmVsc05vZGVMaXN0VHlwZSwKKyAg
ICBNaWNyb0RhdGFJdGVtTGlzdFR5cGUsCisgICAgUHJvcGVydHlOb2RlTGlzdFR5cGUsCiB9Owog
CiBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblR5cGUgRmlyc3RVbm5hbWVkRG9jdW1lbnRDYWNoZWRU
eXBlID0gRG9jSW1hZ2VzOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE51bVVubmFtZWREb2N1bWVu
dENhY2hlZFR5cGVzID0gV2luZG93TmFtZWRJdGVtcyAtIERvY0ltYWdlczsKIAogc3RhdGljIGNv
bnN0IENvbGxlY3Rpb25UeXBlIEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBlID0gTm9kZUNoaWxkcmVu
Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIE51bU5vZGVDb2xsZWN0aW9uVHlwZXMgPSBGb3JtQ29u
dHJvbHMgLSBOb2RlQ2hpbGRyZW4gKyAxOworc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UeXBlIEZp
cnN0Tm9kZUxpc3RUeXBlID0gQ2hpbGROb2RlTGlzdFR5cGU7CiAKIGlubGluZSBib29sIGlzVW5u
YW1lZERvY3VtZW50Q2FjaGVkVHlwZShDb2xsZWN0aW9uVHlwZSB0eXBlKQogewpAQCAtNzksNiAr
ODksMTEgQEAgaW5saW5lIGJvb2wgaXNOb2RlQ29sbGVjdGlvblR5cGUoQ29sbGVjdAogICAgIHJl
dHVybiB0eXBlID49IEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBlOwogfQogCitpbmxpbmUgYm9vbCBp
c05vZGVMaXN0KENvbGxlY3Rpb25UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIHR5cGUgPj0gRmly
c3ROb2RlTGlzdFR5cGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzNTQyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw3ICs2OSwxNCBAQCBzdGF0aWMgYm9vbCBzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkCiAg
ICAgY2FzZSBUU2VjdGlvblJvd3M6CiAgICAgY2FzZSBUYWJsZVRCb2RpZXM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGNhc2UgTm9kZUxpc3RDb2xsZWN0aW9uVHlwZToKKyAgICBjYXNlIENo
aWxkTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgQ2xhc3NOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBO
YW1lTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgVGFnTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgUmFk
aW9Ob2RlTGlzdFR5cGU6CisgICAgY2FzZSBMYWJlbHNOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBN
aWNyb0RhdGFJdGVtTGlzdFR5cGU6CisgICAgY2FzZSBQcm9wZXJ0eU5vZGVMaXN0VHlwZToKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAzLDgg
KzExMCwxNiBAQCBzdGF0aWMgTm9kZUxpc3RSb290VHlwZSByb290VHlwZUZyb21Db2xsCiAgICAg
Y2FzZSBTZWxlY3RlZE9wdGlvbnM6CiAgICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6CiAgICAgY2Fz
ZSBNYXBBcmVhczoKLSAgICBjYXNlIE5vZGVMaXN0Q29sbGVjdGlvblR5cGU6CiAgICAgICAgIHJl
dHVybiBOb2RlTGlzdElzUm9vdGVkQXROb2RlOworICAgIGNhc2UgQ2hpbGROb2RlTGlzdFR5cGU6
CisgICAgY2FzZSBDbGFzc05vZGVMaXN0VHlwZToKKyAgICBjYXNlIE5hbWVOb2RlTGlzdFR5cGU6
CisgICAgY2FzZSBUYWdOb2RlTGlzdFR5cGU6CisgICAgY2FzZSBSYWRpb05vZGVMaXN0VHlwZToK
KyAgICBjYXNlIExhYmVsc05vZGVMaXN0VHlwZToKKyAgICBjYXNlIE1pY3JvRGF0YUl0ZW1MaXN0
VHlwZToKKyAgICBjYXNlIFByb3BlcnR5Tm9kZUxpc3RUeXBlOgorICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE5vZGVMaXN0SXNSb290
ZWRBdE5vZGU7CkBAIC0xNDUsNyArMTYwLDE0IEBAIHN0YXRpYyBOb2RlTGlzdEludmFsaWRhdGlv
blR5cGUgaW52YWxpZGEKICNlbmRpZgogICAgIGNhc2UgRm9ybUNvbnRyb2xzOgogICAgICAgICBy
ZXR1cm4gSW52YWxpZGF0ZUZvckZvcm1Db250cm9sczsKLSAgICBjYXNlIE5vZGVMaXN0Q29sbGVj
dGlvblR5cGU6CisgICAgY2FzZSBDaGlsZE5vZGVMaXN0VHlwZToKKyAgICBjYXNlIENsYXNzTm9k
ZUxpc3RUeXBlOgorICAgIGNhc2UgTmFtZU5vZGVMaXN0VHlwZToKKyAgICBjYXNlIFRhZ05vZGVM
aXN0VHlwZToKKyAgICBjYXNlIFJhZGlvTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTGFiZWxzTm9k
ZUxpc3RUeXBlOgorICAgIGNhc2UgTWljcm9EYXRhSXRlbUxpc3RUeXBlOgorICAgIGNhc2UgUHJv
cGVydHlOb2RlTGlzdFR5cGU6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTIyOSw3ICsyNTEsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGlzQWNj
ZXB0YWJsZUVsZW1lbnQoQwogICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgogICAgIGNhc2Ug
VGFibGVSb3dzOgogICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAgICBjYXNlIE5vZGVMaXN0
Q29sbGVjdGlvblR5cGU6CisgICAgY2FzZSBDaGlsZE5vZGVMaXN0VHlwZToKKyAgICBjYXNlIENs
YXNzTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTmFtZU5vZGVMaXN0VHlwZToKKyAgICBjYXNlIFRh
Z05vZGVMaXN0VHlwZToKKyAgICBjYXNlIFJhZGlvTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTGFi
ZWxzTm9kZUxpc3RUeXBlOgorICAgIGNhc2UgTWljcm9EYXRhSXRlbUxpc3RUeXBlOgorICAgIGNh
c2UgUHJvcGVydHlOb2RlTGlzdFR5cGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjcsNyArMjk2LDcgQEAgTm9kZSogRHluYW1p
Y05vZGVMaXN0Q2FjaGVCYXNlOjppdGVyYXRlRgogICAgIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rp
b25UeXBlID0gdHlwZSgpOwogICAgIE5vZGUqIHJvb3ROb2RlID0gdGhpcy0+cm9vdE5vZGUoKTsK
ICAgICBmb3IgKDsgY3VycmVudDsgY3VycmVudCA9IG5leHROb2RlPGZvcndhcmQ+KHJvb3ROb2Rl
LCBjdXJyZW50LCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSkgewotICAgICAgICBpZiAoY29s
bGVjdGlvblR5cGUgPT0gTm9kZUxpc3RDb2xsZWN0aW9uVHlwZSkgeworICAgICAgICBpZiAoaXNO
b2RlTGlzdChjb2xsZWN0aW9uVHlwZSkpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50LT5pc0Vs
ZW1lbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgRHluYW1pY05vZGVMaXN0Kj4odGhpcykt
Pm5vZGVNYXRjaGVzKHRvRWxlbWVudChjdXJyZW50KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRvRWxlbWVudChjdXJyZW50KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTI4OSw3ICszMTgsNyBA
QCBOb2RlKiBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6Oml0ZW1CZWZvCiAgICAgZWxzZQogICAg
ICAgICBjdXJyZW50ID0gZmlyc3ROb2RlKGZvcndhcmQsIHJvb3ROb2RlKCksIHNob3VsZE9ubHlJ
bmNsdWRlRGlyZWN0Q2hpbGRyZW4oKSk7CiAKLSAgICBpZiAodHlwZSgpID09IE5vZGVMaXN0Q29s
bGVjdGlvblR5cGUgJiYgc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbigpKSAvLyBDaGls
ZE5vZGVMaXN0CisgICAgaWYgKGlzTm9kZUxpc3QodHlwZSgpKSAmJiBzaG91bGRPbmx5SW5jbHVk
ZURpcmVjdENoaWxkcmVuKCkpIC8vIENoaWxkTm9kZUxpc3QKICAgICAgICAgcmV0dXJuIGN1cnJl
bnQ7CiAKICAgICByZXR1cm4gaXRlcmF0ZUZvck5leHROb2RlPGZvcndhcmQ+KGN1cnJlbnQpOwpA
QCAtMzY3LDcgKzM5Niw3IEBAIE5vZGUqIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aXRlbUNv
bW0KICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogICAgIGlmICh0eXBlKCkgPT0gSXRlbVByb3BlcnRp
ZXMpCiAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbio+
KHRoaXMpLT51cGRhdGVSZWZFbGVtZW50cygpOwotICAgIGlmICh0eXBlKCkgPT0gTm9kZUxpc3RD
b2xsZWN0aW9uVHlwZSAmJiByb290VHlwZSgpID09IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50
SWZPd25lckhhc0l0ZW1yZWZBdHRyKQorICAgIGVsc2UgaWYgKHR5cGUoKSA9PSBQcm9wZXJ0eU5v
ZGVMaXN0VHlwZSkKICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUHJvcGVydHlOb2RlTGlzdCo+
KHRoaXMpLT51cGRhdGVSZWZFbGVtZW50cygpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBMYWJlbGFibGVFbGVtZW50OjpsCiAgICAg
aWYgKCFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBlbnN1cmVS
YXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHMoKS0+YWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxMYWJl
bHNOb2RlTGlzdD4odGhpcywgRHluYW1pY05vZGVMaXN0OjpMYWJlbHNOb2RlTGlzdFR5cGUsIHN0
YXJBdG9tKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCkt
PmFkZENhY2hlV2l0aEF0b21pY05hbWU8TGFiZWxzTm9kZUxpc3Q+KHRoaXMsIExhYmVsc05vZGVM
aXN0VHlwZSwgc3RhckF0b20pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTM1NDI3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgTGFiZWxzTm9kZUxpc3Q6OkxhYmVsc05vZGVMaXN0KE5vZGUqIGZvcgog
CiBMYWJlbHNOb2RlTGlzdDo6fkxhYmVsc05vZGVMaXN0KCkKIHsKLSAgICBvd25lck5vZGUoKS0+
bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgRHluYW1pY05vZGVM
aXN0OjpMYWJlbHNOb2RlTGlzdFR5cGUsIHN0YXJBdG9tKTsKKyAgICBvd25lck5vZGUoKS0+bm9k
ZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgTGFiZWxzTm9kZUxpc3RU
eXBlLCBzdGFyQXRvbSk7CiB9IAogICAgIAogYm9vbCBMYWJlbHNOb2RlTGlzdDo6bm9kZU1hdGNo
ZXMoRWxlbWVudCogdGVzdE5vZGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9O
b2RlTGlzdC5jcHAJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9Ob2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgUmFkaW9Ob2Rl
TGlzdDo6UmFkaW9Ob2RlTGlzdChOb2RlKiByb290TgogCiBSYWRpb05vZGVMaXN0Ojp+UmFkaW9O
b2RlTGlzdCgpCiB7Ci0gICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdp
dGhBdG9taWNOYW1lKHRoaXMsIER5bmFtaWNOb2RlTGlzdDo6UmFkaW9Ob2RlTGlzdFR5cGUsIG1f
bmFtZSk7CisgICAgb3duZXJOb2RlKCktPm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZVdpdGhBdG9t
aWNOYW1lKHRoaXMsIFJhZGlvTm9kZUxpc3RUeXBlLCBtX25hbWUpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEhUTUxJbnB1dEVsZW1lbnQqIHRvUmFkaW9CdXR0b25JbnB1dEVsZW1lbnQoTm9kZSogbm9k
ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>