<?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>108817</bug_id>
          
          <creation_ts>2013-02-04 04:49:27 -0800</creation_ts>
          <short_desc>[v8] use toV8Fast in hand coded callbacks</short_desc>
          <delta_ts>2013-02-04 05:50:11 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>824256</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-04 04:49:27 -0800</bug_when>
    <thetext>[v8] use toV8Fast in hand coded callbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824257</commentid>
    <comment_count>1</comment_count>
      <attachid>186352</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-04 04:50:59 -0800</bug_when>
    <thetext>Created attachment 186352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824261</commentid>
    <comment_count>2</comment_count>
      <attachid>186352</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 05:00:07 -0800</bug_when>
    <thetext>Comment on attachment 186352
Patch

ok, thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824290</commentid>
    <comment_count>3</comment_count>
      <attachid>186352</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 05:50:06 -0800</bug_when>
    <thetext>Comment on attachment 186352
Patch

Clearing flags on attachment: 186352

Committed r141763: &lt;http://trac.webkit.org/changeset/141763&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824291</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 05:50:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186352</attachid>
            <date>2013-02-04 04:50:59 -0800</date>
            <delta_ts>2013-02-04 05:50:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108817-20130204134737.patch</filename>
            <type>text/plain</type>
            <size>35590</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E3MzQ3MmNiNzg2ZDU5
NTA5MjUwYWRlN2MzYWZhNDAxMDUzZTljOS4uOWEwYTFjMzRkYTE2MmE4NzYwYzk0MDY1ZTJlZjI2
NmYyNGQ1MDQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEzLTAyLTA0ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFt2OF0gdXNlIHRvVjhGYXN0
IGluIGhhbmQgY29kZWQgY2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDg4MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5
LgorCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhEb2N1bWVudDo6ZXZhbHVhdGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERv
Y3VtZW50Ojpsb2NhdGlvbkFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50OjpkYXRh
VHJhbnNmZXJBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50OjpjbGlw
Ym9hcmREYXRhQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZpbGVSZWFkZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhGaWxlUmVhZGVyOjpy
ZXN1bHRBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxBbGxDb2xsZWN0aW9uOjppdGVtQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVjdGlvbjo6Y2FsbEFzRnVuY3Rpb25D
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0
Q29udGV4dENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpu
YW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxFbGVtZW50OjppdGVt
VmFsdWVBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtRWxlbWVudDo6aW5kZXhlZFByb3BlcnR5
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZvcm1FbGVtZW50OjpuYW1lZFByb3Bl
cnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRF
bGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lU2V0RWxlbWVu
dDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTExpbmtF
bGVtZW50OjpzaXplc0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3BlcnR5R2V0
dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxTZWxlY3RFbGVtZW50OjppbmRleGVk
UHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VF
dmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6ZGF0YUFj
Y2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpwb3J0c0Fj
Y2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVN
YXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOYW1lZE5vZGVNYXA6OmluZGV4ZWRQ
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE5hbWVkTm9kZU1hcDo6bmFtZWRQ
cm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlTGlzdDo6bmFtZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBvcFN0YXRlRXZlbnQ6OnN0YXRlQWNjZXNzb3JH
ZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3lu
Y0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhl
Y3V0ZVNxbENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNo
ZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFN0eWxlU2hlZXRMaXN0Ojpu
YW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhUcmFj
a0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VHJhY2tFdmVudDo6dHJhY2tB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6cmVz
cG9uc2VBY2Nlc3NvckdldHRlcik6CisKIDIwMTMtMDItMDMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBFTkFCTEVfUERGS0lUX1BMVUdJTiBz
ZXR0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNjEzOWRkMGJiZGI4N2RhYzU5YzljODlmZDI3NjAy
M2Y2ZjhjOTZhYS4uM2UwODdmYzdiNTJjMmZiNTczNTZjNWNlMmFiOTQzZDQyNjU1MGRhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwCkBAIC00MzUsNyArNDM1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NV2luZG93OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBp
ZiAoIW9wZW5lZFdpbmRvdykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAg
IHJldHVybiB0b1Y4KG9wZW5lZFdpbmRvdy5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOEZhc3Qob3BlbmVkV2luZG93LnJlbGVhc2Uo
KSwgYXJncywgaW1wbCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6
aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQpAQCAtNDUxLDcgKzQ1MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2CiAK
ICAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCk7CiAg
ICAgaWYgKGNoaWxkKQotICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIHRvVjhGYXN0KGNoaWxkLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgaW5mbywgd2luZG93
KTsKIAogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtNDcyLDcgKzQ3Miw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgQXRvbWljU3RyaW5nIHByb3BOYW1lID0gdG9XZWJD
b3JlQXRvbWljU3RyaW5nKG5hbWUpOwogICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCkt
PnNjb3BlZENoaWxkKHByb3BOYW1lKTsKICAgICBpZiAoY2hpbGQpCi0gICAgICAgIHJldHVybiB0
b1Y4KGNoaWxkLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOEZhc3QoY2hpbGQtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLCBpbmZvLCB3aW5kb3cpOwogCiAgICAgLy8gU2VhcmNoIElETCBmdW5jdGlv
bnMgZGVmaW5lZCBpbiB0aGUgcHJvdG90eXBlCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRS
ZWFsTmFtZWRQcm9wZXJ0eShuYW1lKS5Jc0VtcHR5KCkpCkBAIC00ODYsOCArNDg2LDggQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICAgICAgICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
aXRlbXMgPSBkb2MtPndpbmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwogICAgICAgICAgICAgaWYg
KCFpdGVtcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5oYXNFeGFj
dGx5T25lSXRlbSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+aXRl
bSgwKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwotICAgICAgICAgICAgICAg
IHJldHVybiB0b1Y4KGl0ZW1zLnJlbGVhc2UoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOEZhc3QoaXRlbXMtPml0ZW0o
MCksIGluZm8sIHdpbmRvdyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvVjhGYXN0KGl0ZW1z
LnJlbGVhc2UoKSwgaW5mbywgd2luZG93KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcAppbmRleCAxZDY0OGE4YjhlMTFkNzg5NGMzYmFjNjE5ZjMxMDAxNTY5NzQz
Y2NmLi5mNDQ1ZWM4Zjg2ZGMzZmI2YzA0ZmExN2QyMjU1NTZmODE0N2M5NjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20u
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50Ojpl
dmFsdWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAK
LSAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjhGYXN0KHJlc3VsdC5yZWxlYXNlKCksIGFyZ3Ms
IGRvY3VtZW50LmdldCgpKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKERvY3Vt
ZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDdkOTExYTQ0
MThhMmRlMThiNmVmYWRiZjBkMzkxNTRlZjZjMzg0OTUuLjAzZTg4M2U1NDE4MDBlMzhjOGY1N2Q4
NjRiYzg4MjkxZmU4ZDA5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwCkBAIC00MCw3
ICs0MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50Ojpsb2NhdGlvbkFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgICAgIHJldHVybiB2OE51bGwo
aW5mby5HZXRJc29sYXRlKCkpOwogCiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBkb2N1bWVudC0+
ZG9tV2luZG93KCk7Ci0gICAgcmV0dXJuIHRvVjgod2luZG93LT5sb2NhdGlvbigpLCBpbmZvLkhv
bGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjhGYXN0KHdpbmRvdy0+
bG9jYXRpb24oKSwgaW5mbywgZG9jdW1lbnQpOwogfQogCiB2b2lkIFY4RG9jdW1lbnQ6OmxvY2F0
aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCmluZGV4
IDU4YWNiYmMyNjliY2QyNDNiNmU4ODFiMTk0Y2U4NWJjMjFlM2YwMmQuLjQ0MDY3MmEwYmEzMDVh
NzUwOTM4ZTlmYjcwY2I3MjM4ZTgyNTVlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RXZlbnQ6OmRhdGFUcmFuc2ZlckFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIEV2ZW50KiBldmVudCA9IFY4RXZlbnQ6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwogCiAgICAgaWYgKGV2ZW50LT5pc0RyYWdFdmVudCgpKQotICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5jbGlwYm9hcmQo
KSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9W
OEZhc3Qoc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+Y2xpcGJvYXJkKCksIGluZm8s
IGV2ZW50KTsKIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CkBAIC01Nyw3ICs1Nyw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50OjpjbGlwYm9hcmREYXRhQWNjZXNzb3JH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgRXZlbnQqIGV2ZW50ID0gVjhFdmVudDo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAKICAgICBpZiAoZXZlbnQtPmlzQ2xpcGJvYXJkRXZl
bnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q2xpcGJvYXJkRXZlbnQqPihl
dmVudCktPmNsaXBib2FyZCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cisg
ICAgICAgIHJldHVybiB0b1Y4RmFzdChzdGF0aWNfY2FzdDxDbGlwYm9hcmRFdmVudCo+KGV2ZW50
KS0+Y2xpcGJvYXJkKCksIGluZm8sIGV2ZW50KTsKIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhG
aWxlUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZpbGVSZWFkZXJDdXN0b20uY3BwCmluZGV4IDg4NDlkYmNiMzJiNWIyNGJmZTFkNzhmZDAwYTdj
YzcxMTZmNWU2NWQuLjgyODIzNDVhODY0ZjE1NmQxNjU1NTgwYmQ4NjIxNWNmNGJmMzhlYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVS
ZWFkZXJDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEZpbGVSZWFkZXI6OnJlc3VsdEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAg
IEZpbGVSZWFkZXIqIGltcCA9IFY4RmlsZVJlYWRlcjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBp
ZiAoaW1wLT5yZWFkVHlwZSgpID09IEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVy
KQotICAgICAgICByZXR1cm4gdG9WOChpbXAtPmFycmF5QnVmZmVyUmVzdWx0KCksIGluZm8uSG9s
ZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRvVjhGYXN0KGltcC0+
YXJyYXlCdWZmZXJSZXN1bHQoKSwgaW5mbywgaW1wKTsKICAgICByZXR1cm4gdjhTdHJpbmdPck51
bGwoaW1wLT5zdHJpbmdSZXN1bHQoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggMWM5NWVhN2ZiMzM0NzYzNzJhODE3YjE0NGM4M2Mz
MGFmMDIwMjQ0Mi4uMWQ4NjllZmU1MjRjNDc1N2NkYWE3MzQzM2FkNzkzMWU4OTliZDg5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNDAsNyArNDAsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVt
cyhIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRvbWljU3RyaW5nIG5hbWUsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lcj4KK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRvbWlj
U3RyaW5nIG5hbWUsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgaG9sZGVyKQogewogICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwogICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMo
bmFtZSwgbmFtZWRJdGVtcyk7CkBAIC00OSwxOCArNTAsMTkgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBB
dG9taWMKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBpZiAobmFtZWRJdGVt
cy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5yZWxl
YXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiB0b1Y4RmFz
dChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgaG9sZGVyLCBjb2xsZWN0aW9uKTsKIAogICAg
IC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBzaG91bGQgYmUgYSBIVE1M
Q29sbGVjdGlvbi4KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCNodG1sYWxs
Y29sbGVjdGlvbgotICAgIHJldHVybiB0b1Y4KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OmNyZWF0
ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gdG9W
OEZhc3QoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBob2xkZXIs
IGNvbGxlY3Rpb24pOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldEl0ZW0o
SFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd1
bWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyPgorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBnZXRJdGVtKEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndW1lbnQsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgaG9s
ZGVyKQogewogICAgIHY4OjpMb2NhbDx2ODo6VWludDMyPiBpbmRleCA9IGFyZ3VtZW50LT5Ub0Fy
cmF5SW5kZXgoKTsKICAgICBpZiAoaW5kZXguSXNFbXB0eSgpKSB7Ci0gICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGNvbGxlY3Rpb24sIHRvV2ViQ29y
ZVN0cmluZyhhcmd1bWVudC0+VG9TdHJpbmcoKSksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGNv
bGxlY3Rpb24sIHRvV2ViQ29yZVN0cmluZyhhcmd1bWVudC0+VG9TdHJpbmcoKSksIGhvbGRlcik7
CiAKICAgICAgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwpAQCAtNjksNyArNzEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldEl0ZW0oSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIHY4OjpIYW5kbGU8dgog
ICAgIH0KIAogICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBjb2xsZWN0aW9uLT5pdGVtKGluZGV4
LT5VaW50MzJWYWx1ZSgpKTsKLSAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiB0b1Y4RmFzdChyZXN1bHQucmVsZWFz
ZSgpLCBob2xkZXIsIGNvbGxlY3Rpb24pOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTgwLDE5ICs4MiwxOSBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0
eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IAogICAgIEhUTUxBbGxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2Vi
Q29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkp
OworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5h
bWUpLCBpbmZvKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rp
b246Oml0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhUTUxB
bGxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKLSAgICByZXR1cm4gZ2V0SXRlbShpbXAsIGFyZ3NbMF0sIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gZ2V0SXRlbShpbXAsIGFyZ3NbMF0sIGFy
Z3MpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFt
ZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MQWxs
Q29sbGVjdGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMo
aW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVt
cyhpbXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncyk7CiAKICAgICBpZiAocmVzdWx0
LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTEwOCw3ICsx
MTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6Y2FsbEFz
RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndQogICAgIEhUTUxBbGxDb2xsZWN0aW9uKiBp
bXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAogICAg
IGlmIChhcmdzLkxlbmd0aCgpID09IDEpCi0gICAgICAgIHJldHVybiBnZXRJdGVtKGltcCwgYXJn
c1swXSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4g
Z2V0SXRlbShpbXAsIGFyZ3NbMF0sIGFyZ3MpOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWNv
bmQgYXJndW1lbnQgaXQgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQuCiAgICAgU3Ry
aW5nIG5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CkBAIC0xMTcsNyArMTE5LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246OmNhbGxBc0Z1bmN0aW9u
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
IAogICAgIGlmIChOb2RlKiBub2RlID0gaW1wLT5uYW1lZEl0ZW1XaXRoSW5kZXgobmFtZSwgaW5k
ZXgtPlVpbnQzMlZhbHVlKCkpKQotICAgICAgICByZXR1cm4gdG9WOChub2RlLCBhcmdzLkhvbGRl
cigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0b1Y4RmFzdChub2RlLCBh
cmdzLCBpbXApOwogCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MzhjZGJiYTgxYmQxYTYwYTc3MGJiM2Q1NmQ2NmM1M2Vl
NTEyYWEwLi5hNWYwODY2ZTEwMTRiMWQ4YzBmNjJhZmM0MzgzYzU5NjQ1MGQwYWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC04NSw3ICs4NSw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB2OE51bGwoYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIGVsc2UgaWYgKHJlc3VsdC0+aXMyZCgpKSB7Ci0gICAgICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OFJlc3VsdCA9IHRvVjgoc3RhdGljX2Nhc3Q8Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEKj4ocmVzdWx0KSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhSZXN1bHQgPSB0b1Y4RmFzdChz
dGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihyZXN1bHQpLCBhcmdzLCBpbXAp
OwogICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52YXNBZ2VudEVuYWJs
ZWQoaW1wLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSk7
CiAgICAgICAgICAgICBTY3JpcHRPYmplY3QgY29udGV4dChzY3JpcHRTdGF0ZSwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFJlc3VsdCkpOwpAQCAtOTcsNyArOTcsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudAogICAgIH0KICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZWxzZSBpZiAo
cmVzdWx0LT5pczNkKCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4UmVzdWx0
ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihyZXN1bHQpLCBhcmdz
LkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2OFJlc3VsdCA9IHRvVjhGYXN0KHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dCo+KHJlc3VsdCksIGFyZ3MsIGltcCk7CiAgICAgICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNhbnZhc0FnZW50RW5hYmxlZChpbXAtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgICAg
ICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dCh2ODo6
Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKICAgICAgICAgICAgIFNjcmlwdE9iamVjdCBnbENvbnRl
eHQoc2NyaXB0U3RhdGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhSZXN1bHQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA4NjI0MTk0ZWI0ZmQ4Nzk0NmUzYTkxOWM5MDIy
ZmVkMTIxMzcwYzk4Li42YWM5ZWRjZDI0Y2RjOTg3ZGM1NjFiOTQ1MWFhYzkwNTU2NTYxOTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVj
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC01OSwxMyArNTksMTMgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmcKICAgICAgICAgUmVmUHRyPFByb3BlcnR5Tm9kZUxpc3Q+IGl0ZW0gPSBzdGF0
aWNfY2FzdDxIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24qPihpbXApLT5wcm9wZXJ0eU5vZGVMaXN0
KHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSk7CiAgICAgICAgIGlmICghaXRlbSkKICAgICAg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgICAgICByZXR1cm4gdG9WOChpdGVtLnJl
bGVhc2UoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1
cm4gdG9WOEZhc3QoaXRlbS5yZWxlYXNlKCksIGluZm8sIGltcCk7CiAgICAgfQogI2VuZGlmCiAg
ICAgTm9kZSogaXRlbSA9IGltcC0+bmFtZWRJdGVtKHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1l
KSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICBy
ZXR1cm4gdG9WOChpdGVtLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAg
cmV0dXJuIHRvVjhGYXN0KGl0ZW0sIGluZm8sIGltcCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcChIVE1MQ29sbGVjdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCmlu
ZGV4IDYyZTA1MTZkM2UxNDdmNTgwY2VlZWUzYmVkNzRlZmYzYTVhYzIwNjAuLmJhYzU4YjhmNTU5
YmQxMzU2MjY1NzY4ZWFhZTVmYzU2ZGQ5YzhjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEhUTUxFbGVtZW50KiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ28KIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxFbGVtZW50OjppdGVtVmFsdWVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBIVE1MRWxl
bWVudCogaW1wbCA9IFY4SFRNTEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAg
IHJldHVybiB0b1Y4KGltcGwtPml0ZW1WYWx1ZSgpLmdldCgpLCBpbmZvLkhvbGRlcigpLCBpbmZv
LkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwtPml0ZW1WYWx1ZSgpLmdl
dCgpLCBpbmZvLCBpbXBsKTsKIH0KIAogdm9pZCBWOEhUTUxFbGVtZW50OjppdGVtVmFsdWVBY2Nl
c3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggZjBkZmJlMGNmZDQ0NjllNmE1YmM2
NGQ5ODMxYjM5YTJhYjI0YzlmMC4uMDFkYWE0OTJjMmFkYjBmYzEyYjUxMTM1OTA4NmQ5ODlhOTg5
NGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcApA
QCAtMzksNyArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBIb2xkZXJDb250YWluZXI+CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5h
bWVkSXRlbXMoSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBob2xkZXIpCiB7CiAgICAg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CiAgICAgY29sbGVjdGlvbi0+bmFtZWRJ
dGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKQEAgLTQ4LDkgKzQ5LDkgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBj
b2xsZWN0aW8KICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBpZiAobmFtZWRJ
dGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5y
ZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiB0b1Y4
RmFzdChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgaG9sZGVyLCBjb2xsZWN0aW9uKTsKIAot
ICAgIHJldHVybiB0b1Y4KGNvbGxlY3Rpb24tPm93bmVyTm9kZSgpLT5yYWRpb05vZGVMaXN0KG5h
bWUpLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiB0b1Y4RmFz
dChjb2xsZWN0aW9uLT5vd25lck5vZGUoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSwgaG9s
ZGVyLCBjb2xsZWN0aW9uKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC02MSwxMyArNjIsMTMg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5h
bWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2EKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAKICAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIGdldE5h
bWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8uSG9sZGVyKCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2Vi
Q29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mbyk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBp
bXAgPSBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAs
IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGlt
cCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzKTsKIAogICAgIGlmIChyZXN1bHQuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZChhcmdzLkdldElzb2xhdGUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9y
bUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCBkYWZkZTJmMzhhZThhZWFkMWQ0M2VkYjNl
YmRiYjcwZGU3MWExNDE1Li5hYWVhYWM5YTc4NmE5NGFiNmNjYzY5NTU0MjAyNzJhMDQ0YmQwNmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9y
bUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWlu
dDMyX3QgaW5kZXgsIGMKICAgICBSZWZQdHI8Tm9kZT4gZm9ybUVsZW1lbnQgPSBmb3JtLT5lbGVt
ZW50cygpLT5pdGVtKGluZGV4KTsKICAgICBpZiAoIWZvcm1FbGVtZW50KQogICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gdG9WOChmb3JtRWxlbWVudC5yZWxlYXNlKCks
IGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOEZhc3Qo
Zm9ybUVsZW1lbnQucmVsZWFzZSgpLCBpbmZvLCBmb3JtKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNzIsOSAr
NzIsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUVsZW1lbnQ6Om5hbWVkUHJv
cGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbgogICAgIEFTU0VSVCghZWxlbWVudHMuaXNF
bXB0eSgpKTsKIAogICAgIGlmIChlbGVtZW50cy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJu
IHRvVjgoZWxlbWVudHMuYXQoMCkucmVsZWFzZSgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElz
b2xhdGUoKSk7CisgICAgICAgIHJldHVybiB0b1Y4RmFzdChlbGVtZW50cy5hdCgwKS5yZWxlYXNl
KCksIGluZm8sIGltcCk7CiAKLSAgICByZXR1cm4gdG9WOChWOE5hbWVkTm9kZXNDb2xsZWN0aW9u
OjpjcmVhdGUoZWxlbWVudHMpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cisg
ICAgcmV0dXJuIHRvVjhGYXN0KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OmNyZWF0ZShlbGVtZW50
cyksIGluZm8sIGltcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1l
U2V0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMmEwMDQ4ZGU4NWI5ZGVlYWYyNTFkYmZhZWJjZWI1
MGVlN2JhZTkzZS4uMGVlYjgxZDNkMmI0MWY3NmY3NmQ3ZTE1NjlmYjU3ZWVmZTM0ZWI2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0
RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRl
cih2ODo6TG9jYWw8djg6OlMKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgaWYg
KCFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAg
cmV0dXJuIHRvVjgoZG9jdW1lbnQtPmRvbVdpbmRvdygpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjhGYXN0KGRvY3VtZW50LT5kb21XaW5kb3coKSwg
aW5mbywgaW1wKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1
c3RvbS5jcHAKaW5kZXggYTk4MTVhOWExNzliYWZlYzNhMzFjODJlZGMwOWQ3OTA5MzQ1YTJlNS4u
M2VkM2ZmNzYzYWE0YTkwODY4MzNjZDU2M2U5YjZhYzUyMDk5NWIxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1l
bnRDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxMaW5rRWxlbWVudDo6c2l6ZXNBY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBIVE1MTGlua0VsZW1lbnQqIGltcCA9IFY4SFRNTExpbmtFbGVtZW50Ojp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gdG9WOChpbXAtPnNpemVzKCksIGluZm8uSG9s
ZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOEZhc3QoaW1wLT5zaXpl
cygpLCBpbmZvLCBpbXApOwogfQogCiB2b2lkIFY4SFRNTExpbmtFbGVtZW50OjpzaXplc0FjY2Vz
c29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDJmZWQ4ZDM0NzMxMjZlNDE1OTk4OTliMWVlMGE1MWIw
YTE5NWM0YmYuLjQxNTRhZTQ0YmMzODczYjY4NTgzMmFiM2JjMzNjNmMzZjhiNGJkYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNDUsNyArNDUsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFt
ZWRJdGVtcyhIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQordGVtcGxhdGU8dHlwZW5hbWUgSG9sZGVyQ29udGFpbmVyPgorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxPcHRpb25zQ29sbGVj
dGlvbiogY29sbGVjdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGhvbGRlcikKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVt
czsKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwpAQCAtNTQs
OSArNTUsOSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRN
TE9wdGlvbnNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjbwogICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1
cm4gdG9WOChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKKyAgICAgICAgcmV0dXJuIHRvVjhGYXN0KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgp
LCBob2xkZXIsIGNvbGxlY3Rpb24pOwogCi0gICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29s
bGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
ICAgIHJldHVybiB0b1Y4RmFzdChWOE5hbWVkTm9kZXNDb2xsZWN0aW9uOjpjcmVhdGUobmFtZWRJ
dGVtcyksIGhvbGRlciwgY29sbGVjdGlvbik7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTY3LDEzICs2
OCwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5h
bWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OgogICAgICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIAogICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiBnZXROYW1lZEl0
ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvLkhvbGRlcigpLCBpbmZv
LkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVB
dG9taWNTdHJpbmcobmFtZSksIGluZm8pOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZVN0cmluZyhh
cmdzWzBdKSwgYXJncyk7CiAKICAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTQxLDcgKzE0Miw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFBy
b3BlcnR5R2V0dGVyKHVpbnQzMl90IGluCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5m
by5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4RmFzdChyZXN1
bHQucmVsZWFzZSgpLCBpbmZvLCBjb2xsZWN0aW9uKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleGVkUHJvcGVydHlTZXR0ZXIodWludDMy
X3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGNiZjZiYzA2MGU4
MDllMDA1Y2QzYjYwMjExMTdjMDRlYzE4NzI4YjkuLjAwZDU2ZjlkMTY5ZTcyOTAzYjEyNTJkMmM2
ZTYyZWIxNDUzN2JhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ4LDEx
ICs0OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIEFTU0VSVChWOERPTVdyYXBwZXI6
Om1heWJlRE9NV3JhcHBlcihpbmZvLkhvbGRlcigpKSk7Ci0gICAgUmVmUHRyPE5vZGU+IHJlc3Vs
dCA9IFY4SFRNTFNlbGVjdEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpLT5pdGVtKGlu
ZGV4KTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gVjhIVE1MU2VsZWN0RWxlbWVu
dDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9IHNl
bGVjdC0+aXRlbShpbmRleCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5Ib2xk
ZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4RmFzdChyZXN1bHQucmVs
ZWFzZSgpLCBpbmZvLCBzZWxlY3QpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
U2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCmluZGV4IDY3YTNiMTU1NDUwOWMwYmZmZjFkODRjNDA1ZGYxN2MzY2Zi
OGQ4MjcuLmI5ZDlhZmU3ZTE2M2E2MzJiODhiNmMxOTUxYWU5N2RiMTU3MGEyZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcApAQCAtNzEsMTEgKzcxLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE1lc3NhZ2VFdmVudDo6ZGF0YUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
CiAgICAgfQogCiAgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlQmxvYjoKLSAgICAgICAg
cmVzdWx0ID0gdG9WOChldmVudC0+ZGF0YUFzQmxvYigpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CisgICAgICAgIHJlc3VsdCA9IHRvVjhGYXN0KGV2ZW50LT5kYXRhQXNCbG9i
KCksIGluZm8sIGV2ZW50KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1lc3NhZ2VFdmVu
dDo6RGF0YVR5cGVBcnJheUJ1ZmZlcjoKLSAgICAgICAgcmVzdWx0ID0gdG9WOChldmVudC0+ZGF0
YUFzQXJyYXlCdWZmZXIoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAg
ICAgICByZXN1bHQgPSB0b1Y4RmFzdChldmVudC0+ZGF0YUFzQXJyYXlCdWZmZXIoKSwgaW5mbywg
ZXZlbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPgogCiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0g
djg6OkFycmF5OjpOZXcocG9ydHNDb3B5LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwb3J0c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50
ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjgocG9ydHNDb3B5W2ldLmdldCgpLCBpbmZv
LkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSkpOworICAgICAgICBwb3J0QXJyYXktPlNldCh2
OEludGVnZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCB0b1Y4RmFzdChwb3J0c0NvcHlbaV0uZ2V0
KCksIGluZm8sIGV2ZW50KSk7CiAKICAgICByZXR1cm4gcG9ydEFycmF5OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1hcEN1
c3RvbS5jcHAKaW5kZXggMjI4MTlkNWM4ZmVmZDZhMGJmYTE2MTEzOWRlNTg2NTEzNzY4OGEzNC4u
YWJiMWU2MmUzYzRkZjBlMzMxMzQxOThhM2QzYjYyM2FlMWJjNzQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVNYXBDdXN0
b20uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hbWVkTm9k
ZU1hcDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zCiAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIHRv
VjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
ICAgIHJldHVybiB0b1Y4RmFzdChyZXN1bHQucmVsZWFzZSgpLCBpbmZvLCBpbXApOwogfQogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYW1lZE5vZGVNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CkBAIC02NCw3ICs2NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hbWVkTm9kZU1hcDo6
bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKLSAgICByZXR1cm4gdG9WOChyZXN1
bHQucmVsZWFzZSgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0
dXJuIHRvVjhGYXN0KHJlc3VsdC5yZWxlYXNlKCksIGluZm8sIGltcCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAppbmRleCA3MWQ4YTEyMTEwN2Q1NTI5NjI0ODEwN2Jj
MzI5YmI2Nzc3YzhhMjczLi42YWVhZmI2NzdmMTUyZTNhMjUzMmY2YjhiNWVlNGZmYTUyOTQ4NGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9k
ZUxpc3RDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE5vZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCi0gICAg
cmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB0b1Y4RmFzdChyZXN1bHQucmVsZWFzZSgpLCBpbmZvLCBsaXN0
KTsKIH0KIAogdm9pZCogVjhOb2RlTGlzdDo6b3BhcXVlUm9vdEZvckdDKHZvaWQqIG9iamVjdCwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAK
aW5kZXggZmM1NDk0NDRjZGVkNDIyZTI4NGZmZGQwZjZkZGZiNzUzMTYzZjU1Zi4uZGMwMzJjOGNi
NjE3ODdiODc0YjE5NmYyNjBlNGVhOWRlYmNkNWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAK
QEAgLTcwLDcgKzcwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UG9wU3RhdGVFdmVudDo6
c3RhdGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBib29sIGlzU2Ft
ZVN0YXRlID0gaGlzdG9yeS0+aXNTYW1lQXNDdXJyZW50U3RhdGUoZXZlbnQtPnNlcmlhbGl6ZWRT
dGF0ZSgpLmdldCgpKTsKIAogICAgIGlmIChpc1NhbWVTdGF0ZSkgewotICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHY4SGlzdG9yeSA9IHRvVjgoaGlzdG9yeSwgaW5mby5Ib2xkZXIoKSwg
aW5mby5HZXRJc29sYXRlKCkpLkFzPHY4OjpPYmplY3Q+KCk7CisgICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gdjhIaXN0b3J5ID0gdG9WOEZhc3QoaGlzdG9yeSwgaW5mbywgZXZlbnQpLkFz
PHY4OjpPYmplY3Q+KCk7CiAgICAgICAgIGlmICghaGlzdG9yeS0+c3RhdGVDaGFuZ2VkKCkpIHsK
ICAgICAgICAgICAgIHJlc3VsdCA9IHY4SGlzdG9yeS0+R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Q
cm9wZXJ0eU5hbWU6OnN0YXRlKCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuSXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKaW5kZXggMGU2ODZiM2YzNDkzMzliNTM0
MzkzYmMwZjJkODAyMDljNzRlOWYxMy4uNjZmZGQ5MDgxNTZmNzI1NGFkMmZlMjc5NzVlZWI1ZTRh
ODA0MzY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNx
bENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgU1FMVHJhbnNhY3Rpb25TeW5jKiB0cmFu
c2FjdGlvbiA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZXN1bHQgPSB0b1Y4KHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKHN0YXRlbWVudCwgc3FsVmFsdWVz
LCBlYyksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVzdWx0ID0gdG9WOEZhc3QodHJhbnNhY3Rpb24tPmV4ZWN1dGVTUUwoc3Rh
dGVtZW50LCBzcWxWYWx1ZXMsIGVjKSwgYXJncywgdHJhbnNhY3Rpb24pOwogICAgIHNldERPTUV4
Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRM
aXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxl
U2hlZXRMaXN0Q3VzdG9tLmNwcAppbmRleCA3ZDY5YWFiYzYxZjMxZTQ4MWY4MWQwYjliNWUwZjAw
ZGM5MzIwYzJhLi4wZDg2NzdjZWZiNTE0MzNlMjg2NDc2ZDdlODkxNDVjOTMyMGQ1M2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5
bGVTaGVldExpc3RDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFN0eWxlU2hlZXRMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAot
ICAgIHJldHVybiB0b1Y4KGl0ZW0tPnNoZWV0KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOEZhc3QoaXRlbS0+c2hlZXQoKSwgaW5mbywgaW1wKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcAppbmRleCBiZmJiOTU5
NTI4MWUxODk0ZjFjYzRkNzdhM2M4OWVjYWM1Y2Y5NGFkLi5hN2JlNDk2M2NmZjY0MGQ0YzM2OWQ4
YzFhNGFlMWRjN2Q4MDZhNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUcmFja0V2ZW50Ojp0cmFja0FjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2Fz
ZSBUcmFja0Jhc2U6OlRleHRUcmFjazoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
VGV4dFRyYWNrKj4odHJhY2spLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cisg
ICAgICAgIHJldHVybiB0b1Y4RmFzdChzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayksIGlu
Zm8sIHRyYWNrRXZlbnQpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHJhY2tCYXNlOjpB
dWRpb1RyYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDJmNmQ1NGU3NzAyYWY4MTJl
YzVjNWRjZjhjNjQzYjkwYmJhODUzNDYuLjk1ZGMzNjNhMmExNDNjYTU0NDczYjY5MzQwOWE2YTRk
MTk0NGU2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQWNjZXNzb3JHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHht
bEh0dHBSZXF1ZXN0LT5yZXNwb25zZVhNTChlYyk7CiAgICAgICAgICAgICBpZiAoZWMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkp
OwotICAgICAgICAgICAgcmV0dXJuIHRvVjgoZG9jdW1lbnQsIGluZm8uSG9sZGVyKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0b1Y4RmFzdChkb2N1bWVudCwgaW5m
bywgeG1sSHR0cFJlcXVlc3QpOwogICAgICAgICB9CiAKICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0
OjpSZXNwb25zZVR5cGVCbG9iOgpAQCAtOTksNyArOTksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cgogICAgICAgICAgICAgQmxvYiogYmxvYiA9IHhtbEh0dHBSZXF1ZXN0LT5yZXNwb25zZUJs
b2IoZWMpOwogICAgICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgICAgIHJldHVybiBzZXRE
T01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB0
b1Y4KGJsb2IsIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiB0b1Y4RmFzdChibG9iLCBpbmZvLCB4bWxIdHRwUmVxdWVzdCk7CiAgICAgICAgIH0K
IAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZUFycmF5QnVmZmVyOgpAQCAt
MTA4LDcgKzEwOCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0Ojpy
ZXNwb25zZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyCiAgICAgICAgICAgICBBcnJh
eUJ1ZmZlciogYXJyYXlCdWZmZXIgPSB4bWxIdHRwUmVxdWVzdC0+cmVzcG9uc2VBcnJheUJ1ZmZl
cihlYyk7CiAgICAgICAgICAgICBpZiAoZWMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNldERP
TUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRv
VjgoYXJyYXlCdWZmZXIsIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiB0b1Y4RmFzdChhcnJheUJ1ZmZlciwgaW5mbywgeG1sSHR0cFJlcXVlc3Qp
OwogICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>