<?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>230864</bug_id>
          
          <creation_ts>2021-09-27 15:36:17 -0700</creation_ts>
          <short_desc>Speed up setting JSFunction&apos;s &quot;prototype&quot; property</short_desc>
          <delta_ts>2021-09-28 06:38:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797673</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-27 15:36:17 -0700</bug_when>
    <thetext>Speed up setting JSFunction&apos;s &quot;prototype&quot; property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797675</commentid>
    <comment_count>1</comment_count>
      <attachid>439403</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-27 15:40:00 -0700</bug_when>
    <thetext>Created attachment 439403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797676</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-27 15:41:54 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #1)
&gt; Created attachment 439403 [details]
&gt; Patch

                                             r283094                   patch

class-derived-creation                   38.2295+-0.3351     ^     36.3643+-0.6771        ^ definitely 1.0513x faster
class-creation                           38.2074+-0.7942     ^     27.4249+-0.4214        ^ definitely 1.3932x faster
function-prototype-put-non-reified       80.5426+-1.2450     ^     28.4549+-0.4999        ^ definitely 2.8305x faster
function-prototype-put-reified           29.1429+-0.4759     ^     25.6151+-0.3548        ^ definitely 1.1377x faster

&lt;geometric&gt;                              42.9347+-0.3383     ^     29.1322+-0.2186        ^ definitely 1.4738x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797730</commentid>
    <comment_count>3</comment_count>
      <attachid>439403</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-27 18:32:22 -0700</bug_when>
    <thetext>Comment on attachment 439403
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:299
&gt; +constexpr unsigned prototypeAttributesForNonClass = PropertyAttribute::DontEnum | PropertyAttribute::DontDelete;

Let&apos;s put `static` too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797854</commentid>
    <comment_count>4</comment_count>
      <attachid>439466</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-28 06:07:07 -0700</bug_when>
    <thetext>Created attachment 439466
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797855</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-28 06:08:32 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; &gt; Source/JavaScriptCore/runtime/JSFunction.cpp:299
&gt; &gt; +constexpr unsigned prototypeAttributesForNonClass = PropertyAttribute::DontEnum | PropertyAttribute::DontDelete;
&gt; 
&gt; Let&apos;s put `static` too.

Done. I appreciate the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797867</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-28 06:37:25 -0700</bug_when>
    <thetext>Committed r283167 (242215@main): &lt;https://commits.webkit.org/242215@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439466.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797868</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-28 06:38:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/83620218&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439403</attachid>
            <date>2021-09-27 15:40:00 -0700</date>
            <delta_ts>2021-09-28 06:07:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230864-20210928013959.patch</filename>
            <type>text/plain</type>
            <size>11968</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODMxNDIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA5LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBTcGVlZCB1cCBzZXR0aW5nIEpTRnVuY3Rpb24ncyAicHJv
dG90eXBlIiBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2xhc3MtY3JlYXRpb24uanM6IEFkZGVkLgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUtcHV0LW5vbi1yZWlmaWVk
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBl
LXB1dC1yZWlmaWVkLmpzOiBBZGRlZC4KKwogMjAyMS0wOS0yNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE9wdGltaXplIFB1dEJ5VmFsIHdpdGgg
Zm9yLWluCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1jcmVhdGlvbi5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1jcmVhdGlvbi5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1jcmVhdGlvbi5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIg
QTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDJlNTsgKytpKQorICAgICAgICBBID0gY2xhc3Mg
e307CisgICAgaWYgKHR5cGVvZiBBICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9KSgpOwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLXB1dC1ub24tcmVpZmllZC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUtcHV0LW5vbi1yZWlm
aWVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9u
LXByb3RvdHlwZS1wdXQtbm9uLXJlaWZpZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MCBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBmbjsKKyAgICB2YXIgb2JqID0ge307CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCA0ZTU7ICsraSkgeworICAgICAgICBmbiA9IGZ1bmN0aW9uKCkg
e307CisgICAgICAgIGZuLnByb3RvdHlwZSA9IG9iajsKKyAgICB9CisgICAgaWYgKGZuLnByb3Rv
dHlwZSAhPT0gb2JqKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7
Cit9KSgpOwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBl
LXB1dC1yZWlmaWVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1
bmN0aW9uLXByb3RvdHlwZS1wdXQtcmVpZmllZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUtcHV0LXJlaWZpZWQuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw4IEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGZuID0gZnVu
Y3Rpb24oKSB7fTsKKyAgICB2YXIgb2JqID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0
ZTU7ICsraSkKKyAgICAgICAgZm4ucHJvdG90eXBlID0gb2JqOworICAgIGlmIChmbi5wcm90b3R5
cGUgIT09IG9iaikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOwor
fSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzMDkxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI4IEBACisyMDIxLTA5LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KKworICAgICAgICBTcGVlZCB1cCBzZXR0aW5nIEpTRnVuY3Rpb24ncyAicHJvdG90eXBlIiBw
cm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMwODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaDoKKworICAgICAgICAgIDEuIFJlbW92ZXMgInByb3RvdHlwZSIgbG9va3VwIGZy
b20gcHV0KCksIHdoaWNoIHdhcyBub24taW5saW5lYWJsZSBhbmQgY3JlYXRlZCBhbgorICAgICAg
ICAgICAgIGludGVyaW0gb2JqZWN0IHdpdGggImNvbnN0cnVjdG9yIiBmaWVsZC4gSW5zdGVhZCwg
dGhlIG5ldyB2YWx1ZSBpcyBwdXQgZGlyZWN0bHksCisgICAgICAgICAgICAgd2l0aCBjb3JyZWN0
IGF0dHJpYnV0ZXMsIGFuZCByZXNwZWN0aW5nIGFuIGFsdGVyZWQgcmVjZWl2ZXIuIFRoaXMgcmVz
dWx0cyBpbiAyLjhYCisgICAgICAgICAgICAgcGVyZiBib29zdCBmb3IgdmVyeSBjb21tb24gY2Fz
ZSBvZiBzZXR0aW5nICJwcm90b3R5cGUiOiBgQ2F0LnByb3RvdHlwZSA9IG5ldyBBbmltYWxgLgor
CisgICAgICAgICAgMi4gU2ltcGxpZmllcyBpbml0aWFsaXphdGlvbiBvZiBjbGFzcyBjb25zdHJ1
Y3RvcidzIHByb3RvdHlwZSBvYmplY3QsIHJlbW92aW5nIHRlbnRhY2xlcworICAgICAgICAgICAg
IGZyb20gZ2V0T3duUHJvcGVydHlTbG90KCkgYW5kIGV4dHJhY3RpbmcgY29uc3RydWN0UHJvdG90
eXBlT2JqZWN0KCkgaGVscGVyLiBQcm92aWRlcworICAgICAgICAgICAgIGEgZmFzdCBwYXRoIGZv
ciBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSwgc3BlZWRpbmcgdXAgYGNsYXNzYCBjcmVhdGlvbiBi
eSB+NDAlLCB3aGlsZQorICAgICAgICAgICAgIHJlaWZpZXMgbm9ybWFsIGZ1bmN0aW9uJ3MgcHJv
dG90eXBlIHdpdGggY29ycmVjdCBhdHRyaWJ1dGVzIGZvciBPYmplY3QuZGVmaW5lUHJvcGVydHko
KS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdFByb3RvdHlwZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKwogMjAyMS0wOS0yNiAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyODMwODMgYW5kIHIyODMwODguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjgzMDkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5Niw2ICsyOTYsMjYgQEAgQ2FsbERhdGEgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlND
ZWxsKgogICAgIHJldHVybiBjYWxsRGF0YTsKIH0KIAorY29uc3RleHByIHVuc2lnbmVkIHByb3Rv
dHlwZUF0dHJpYnV0ZXNGb3JOb25DbGFzcyA9IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlOworCitzdGF0aWMgaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RQcm90b3R5cGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbiogdGhpc09iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIHNjb3BlR2xvYmFsT2JqZWN0ID0gdGhpc09iamVjdC0+
c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgLy8gVW5saWtlIEZ1bmN0aW9uIGluc3RhbmNl
cywgdGhlIHByb3RvdHlwZSBvYmplY3Qgb2YgR2VuZXJhdG9yRnVuY3Rpb24gaW5zdGFuY2VzIGxh
Y2tzIG93biAiY29uc3RydWN0b3IiIHByb3BlcnR5LgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hMjYyLyNzZWMtcnVudGltZS1zZW1hbnRpY3MtaW5zdGFudGlhdGVnZW5lcmF0b3JmdW5jdGlv
bm9iamVjdCAoc3RlcCA2KQorICAgIGlmIChpc0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUodGhp
c09iamVjdC0+anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpKSkKKyAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGVHbG9iYWxPYmplY3QtPmdlbmVy
YXRvclByb3RvdHlwZSgpKTsKKyAgICAvLyBVbmxpa2UgRnVuY3Rpb24gaW5zdGFuY2VzLCB0aGUg
cHJvdG90eXBlIG9iamVjdCBvZiBBc3luY0dlbmVyYXRvckZ1bmN0aW9uIGluc3RhbmNlcyBsYWNr
cyBvd24gImNvbnN0cnVjdG9yIiBwcm9wZXJ0eS4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTI2Mi8jc2VjLXJ1bnRpbWUtc2VtYW50aWNzLWluc3RhbnRpYXRlYXN5bmNnZW5lcmF0b3JmdW5j
dGlvbm9iamVjdCAoc3RlcCA2KQorICAgIGlmIChpc0FzeW5jR2VuZXJhdG9yV3JhcHBlclBhcnNl
TW9kZSh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkpKQorICAgICAgICBy
ZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZUdsb2JhbE9iamVj
dC0+YXN5bmNHZW5lcmF0b3JQcm90b3R5cGUoKSk7CisKKyAgICBKU09iamVjdCogcHJvdG90eXBl
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZUdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpOworICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIHJldHVybiBwcm90b3R5cGU7Cit9
CisKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CkBAIC0zMDgsMzIgKzMyOCwxMyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xv
dChKU09iCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7
CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUgJiYgdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc1Byb3RvdHlwZVByb3BlcnR5
KCkgJiYgIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5j
dGlvbigpKSB7Ci0gICAgICAgIC8vIE5PVEU6IGNsYXNzIGNvbnN0cnVjdG9ycyBkZWZpbmUgdGhl
IHByb3RvdHlwZSBwcm9wZXJ0eSBpbiBieXRlY29kZSB1c2luZwotICAgICAgICAvLyBkZWZpbmVP
d25Qcm9wZXJ0eSwgd2hpY2ggZW5kcyB1cCBjYWxsaW5nIGludG8gdGhpcyBjb2RlIChzZWUgb3Vy
IGRlZmluZU93blByb3BlcnR5Ci0gICAgICAgIC8vIGltcGxlbWVudGF0aW9uIGJlbG93KS4gVGhl
IGJ5dGVjb2RlIHdpbGwgZW5kIHVwIGRvaW5nIHRoZSBwcm9wZXIgZGVmaW5pdGlvbgotICAgICAg
ICAvLyB3aXRoIHRoZSBwcm9wZXJ0eSBiZWluZyBub24td3JpdGFibGUvbm9uLWNvbmZpZ3VyYWJs
ZS4gSG93ZXZlciwgd2UgbXVzdCBpZ25vcmUKLSAgICAgICAgLy8gdGhlIGluaXRpYWwgbWF0ZXJp
YWxpemF0aW9uIG9mIHRoZSBwcm9wZXJ0eSBzbyB0aGF0IHRoZSBkZWZpbmVPd25Qcm9wZXJ0eSBj
YWxsCi0gICAgICAgIC8vIGZyb20gYnl0ZWNvZGUgc3VjY2VlZHMuIE90aGVyd2lzZSwgdGhlIG1h
dGVyaWFsaXphdGlvbiBoZXJlIHdvdWxkIHByZXZlbnQgdGhlCi0gICAgICAgIC8vIGRlZmluZU93
blByb3BlcnR5IGZyb20gYmVpbmcgYWJsZSB0byBvdmVyd3JpdGUgdGhlIHByb3BlcnR5LgorICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlICYmIHRoaXNP
YmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNQcm90b3R5cGVQcm9wZXJ0eSgpKSB7CiAgICAgICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRo
aXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBzY29wZUdsb2JhbE9iamVjdCA9IHRoaXNPYmplY3QtPnNjb3BlKCktPmdsb2Jh
bE9iamVjdCgpOwotICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2RlKHRoaXNPYmplY3QtPmpz
RXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBVbmxpa2Ug
ZnVuY3Rpb24gaW5zdGFuY2VzLCB0aGUgb2JqZWN0IHRoYXQgaXMgdGhlIHZhbHVlIG9mIHRoZSBh
IEdlbmVyYXRvckZ1bmN0aW9uJ3MgcHJvdG90eXBlCi0gICAgICAgICAgICAgICAgLy8gcHJvcGVy
dHkgZG9lcyBub3QgaGF2ZSBhIGNvbnN0cnVjdG9yIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIHRo
ZSBHZW5lcmF0b3JGdW5jdGlvbiBpbnN0YW5jZS4KLSAgICAgICAgICAgICAgICAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZW5lcmF0b3JmdW5jdGlvbi1pbnN0YW5jZXMt
cHJvdG90eXBlCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzY29wZUdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yUHJvdG90eXBlKCkp
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FzeW5jR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9k
ZSh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCkpKQotICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGVH
bG9iYWxPYmplY3QtPmFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKCkpOwotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0LCBzY29wZUdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwotICAgICAg
ICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgdGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlzT2JqZWN0
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CisgICAgICAgICAgICAvLyBGb3IgY2xhc3MgY29uc3RydWN0b3JzLCBwcm90b3R5cGUgb2Jq
ZWN0IGlzIGluaXRpYWxpemVkIGZyb20gYnl0ZWNvZGUgdmlhIGRlZmluZU93blByb3BlcnR5KCku
CisgICAgICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc0NsYXNz
Q29uc3RydWN0b3JGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVj
dCh2bSwgcHJvcGVydHlOYW1lLCBjb25zdHJ1Y3RQcm90b3R5cGVPYmplY3QoZ2xvYmFsT2JqZWN0
LCB0aGlzT2JqZWN0KSwgcHJvdG90eXBlQXR0cmlidXRlc0Zvck5vbkNsYXNzKTsKICAgICAgICAg
ICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpOwogICAgICAgICB9CkBAIC0zODUsMTYgKzM4NiwxOCBAQCBib29sIEpT
RnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvCiAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpOwogICAgIH0KIAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUgJiYgdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhh
c1Byb3RvdHlwZVByb3BlcnR5KCkpIHsKICAgICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwot
ICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhh
dCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgotICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1
bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0
U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5LCAmdm0pOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xv
dCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAg
aWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+cmFyZURhdGEoKSkK
ICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5
IG9mIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgZ2V0U2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNl
dCh2bSwgcHJvcGVydHlOYW1lKSkpIHsKKyAgICAgICAgICAgIC8vIEZvciBjbGFzcyBjb25zdHJ1
Y3RvcnMsIHByb3RvdHlwZSBvYmplY3QgaXMgaW5pdGlhbGl6ZWQgZnJvbSBieXRlY29kZSB2aWEg
ZGVmaW5lT3duUHJvcGVydHkoKS4KKyAgICAgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+anNF
eGVjdXRhYmxlKCktPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkpOworICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHNsb3QudGhpc1ZhbHVlKCkgIT0gdGhpc09iamVjdCkpCisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVjdDo6ZGVmaW5lUHJvcGVydHlP
blJlY2VpdmVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOworICAg
ICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBw
cm90b3R5cGVBdHRyaWJ1dGVzRm9yTm9uQ2xhc3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAg
ICAgfQogCkBAIC00NTQsMTUgKzQ1NywxOCBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVm
aW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pKTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydHlOYW1lID09
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkgewotICAgICAgICAvLyBNYWtlIHN1cmUgcHJv
dG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3Jp
dHRlbgotICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIg
OC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwotICAgICAgICB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSAmJiB0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBl
UHJvcGVydHkoKSkgewogICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0
aGlzT2JqZWN0LT5yYXJlRGF0YSgpKQogICAgICAgICAgICAgcmFyZURhdGEtPmNsZWFyKCJTdG9y
ZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwotICAgICAgICBzbG90LmRp
c2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQodGhpc09i
amVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICAgICAg
aWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlv
bigpKSB7CisgICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBwcm90b3R5cGUgb2JqZWN0
IGluaXRpYWxpemF0aW9uIGZyb20gYnl0ZWNvZGUgdGhhdCBhdm9pZHMgY2FsbGluZyBpbnRvIGdl
dE93blByb3BlcnR5U2xvdCgpLgorICAgICAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmlz
RGF0YURlc2NyaXB0b3IoKSk7CisgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0
KHZtLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IudmFsdWUoKSwgZGVzY3JpcHRvci5hdHRyaWJ1
dGVzKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGNvbnN0cnVj
dFByb3RvdHlwZU9iamVjdChnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QpLCBwcm90b3R5cGVBdHRy
aWJ1dGVzRm9yTm9uQ2xhc3MpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGhp
c09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439466</attachid>
            <date>2021-09-28 06:07:07 -0700</date>
            <delta_ts>2021-09-28 06:37:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-230864-20210928160706.patch</filename>
            <type>text/plain</type>
            <size>11941</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODMxNjQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA5LTI4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBTcGVlZCB1cCBzZXR0aW5nIEpTRnVuY3Rpb24ncyAicHJv
dG90eXBlIiBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFzcy1jcmVhdGlvbi5qczogQWRkZWQuCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXByb3RvdHlwZS1wdXQtbm9uLXJlaWZpZWQu
anM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUt
cHV0LXJlaWZpZWQuanM6IEFkZGVkLgorCiAyMDIxLTA5LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl0gQWRkIEFwcHJveGltYXRlVGltZQpJbmRl
eDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtY3JlYXRpb24uanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtY3JlYXRpb24uanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtY3JlYXRpb24uanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3IEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIEE7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAyZTU7ICsraSkKKyAgICAgICAgQSA9IGNsYXNzIHt9OworICAgIGlm
ICh0eXBlb2YgQSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
YXNzZXJ0aW9uISIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0
aW9uLXByb3RvdHlwZS1wdXQtbm9uLXJlaWZpZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLXB1dC1ub24tcmVpZmllZC5qcwkobm9u
ZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUt
cHV0LW5vbi1yZWlmaWVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKyhmdW5j
dGlvbigpIHsKKyAgICB2YXIgZm47CisgICAgdmFyIG9iaiA9IHt9OworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgNGU1OyArK2kpIHsKKyAgICAgICAgZm4gPSBmdW5jdGlvbigpIHt9OworICAgICAg
ICBmbi5wcm90b3R5cGUgPSBvYmo7CisgICAgfQorICAgIGlmIChmbi5wcm90b3R5cGUgIT09IG9i
aikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworfSkoKTsKSW5k
ZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXByb3RvdHlwZS1wdXQtcmVpZmll
ZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90
b3R5cGUtcHV0LXJlaWZpZWQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLXB1dC1yZWlmaWVkLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOCBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBmbiA9IGZ1bmN0aW9uKCkge307
CisgICAgdmFyIG9iaiA9IHt9OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNGU1OyArK2kpCisg
ICAgICAgIGZuLnByb3RvdHlwZSA9IG9iajsKKyAgICBpZiAoZm4ucHJvdG90eXBlICE9PSBvYmop
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzE2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAy
MS0wOS0yOCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgU3BlZWQgdXAgc2V0dGluZyBKU0Z1bmN0aW9uJ3MgInByb3RvdHlwZSIgcHJvcGVydHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDg2NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRjaDoK
KworICAgICAgICAgIDEuIFJlbW92ZXMgInByb3RvdHlwZSIgbG9va3VwIGZyb20gcHV0KCksIHdo
aWNoIHdhcyBub24taW5saW5lYWJsZSBhbmQgY3JlYXRlZCBhbgorICAgICAgICAgICAgIGludGVy
aW0gb2JqZWN0IHdpdGggImNvbnN0cnVjdG9yIiBmaWVsZC4gSW5zdGVhZCwgdGhlIG5ldyB2YWx1
ZSBpcyBwdXQgZGlyZWN0bHksCisgICAgICAgICAgICAgd2l0aCBjb3JyZWN0IGF0dHJpYnV0ZXMs
IGFuZCByZXNwZWN0aW5nIGFuIGFsdGVyZWQgcmVjZWl2ZXIuIFRoaXMgcmVzdWx0cyBpbiAyLjhY
CisgICAgICAgICAgICAgcGVyZiBib29zdCBmb3IgdmVyeSBjb21tb24gY2FzZSBvZiBzZXR0aW5n
ICJwcm90b3R5cGUiOiBgQ2F0LnByb3RvdHlwZSA9IG5ldyBBbmltYWxgLgorCisgICAgICAgICAg
Mi4gU2ltcGxpZmllcyBpbml0aWFsaXphdGlvbiBvZiBjbGFzcyBjb25zdHJ1Y3RvcidzIHByb3Rv
dHlwZSBvYmplY3QsIHJlbW92aW5nIHRlbnRhY2xlcworICAgICAgICAgICAgIGZyb20gZ2V0T3du
UHJvcGVydHlTbG90KCkgYW5kIGV4dHJhY3RpbmcgY29uc3RydWN0UHJvdG90eXBlT2JqZWN0KCkg
aGVscGVyLiBQcm92aWRlcworICAgICAgICAgICAgIGEgZmFzdCBwYXRoIGZvciBvcF9kZWZpbmVf
ZGF0YV9wcm9wZXJ0eSwgc3BlZWRpbmcgdXAgYGNsYXNzYCBjcmVhdGlvbiBieSB+NDAlLCB3aGls
ZQorICAgICAgICAgICAgIHJlaWZpZXMgbm9ybWFsIGZ1bmN0aW9uJ3MgcHJvdG90eXBlIHdpdGgg
Y29ycmVjdCBhdHRyaWJ1dGVzIGZvciBPYmplY3QuZGVmaW5lUHJvcGVydHkoKS4KKworICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFByb3Rv
dHlwZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKwogMjAyMS0wOS0yNyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtXVEZdIEFkZCBBcHByb3hpbWF0ZVRpbWUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShy
ZXZpc2lvbiAyODMxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDYgKzI5NiwyNiBAQCBDYWxsRGF0YSBKU0Z1
bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqCiAgICAgcmV0dXJuIGNhbGxEYXRhOwogfQogCitz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHByb3RvdHlwZUF0dHJpYnV0ZXNGb3JOb25DbGFzcyA9
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlOworCitzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RQcm90b3R5cGVPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNGdW5jdGlvbiogdGhpc09iamVjdCkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIHNj
b3BlR2xvYmFsT2JqZWN0ID0gdGhpc09iamVjdC0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgLy8gVW5saWtlIEZ1bmN0aW9uIGluc3RhbmNlcywgdGhlIHByb3RvdHlwZSBvYmplY3Qgb2Yg
R2VuZXJhdG9yRnVuY3Rpb24gaW5zdGFuY2VzIGxhY2tzIG93biAiY29uc3RydWN0b3IiIHByb3Bl
cnR5LgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcnVudGltZS1zZW1hbnRp
Y3MtaW5zdGFudGlhdGVnZW5lcmF0b3JmdW5jdGlvbm9iamVjdCAoc3RlcCA2KQorICAgIGlmIChp
c0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPnBh
cnNlTW9kZSgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9i
amVjdCwgc2NvcGVHbG9iYWxPYmplY3QtPmdlbmVyYXRvclByb3RvdHlwZSgpKTsKKyAgICAvLyBV
bmxpa2UgRnVuY3Rpb24gaW5zdGFuY2VzLCB0aGUgcHJvdG90eXBlIG9iamVjdCBvZiBBc3luY0dl
bmVyYXRvckZ1bmN0aW9uIGluc3RhbmNlcyBsYWNrcyBvd24gImNvbnN0cnVjdG9yIiBwcm9wZXJ0
eS4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJ1bnRpbWUtc2VtYW50aWNz
LWluc3RhbnRpYXRlYXN5bmNnZW5lcmF0b3JmdW5jdGlvbm9iamVjdCAoc3RlcCA2KQorICAgIGlm
IChpc0FzeW5jR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZSh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFi
bGUoKS0+cGFyc2VNb2RlKCkpKQorICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBzY29wZUdsb2JhbE9iamVjdC0+YXN5bmNHZW5lcmF0b3JQcm90b3R5cGUo
KSk7CisKKyAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0LCBzY29wZUdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOworICAgIHBy
b3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
c09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOworICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0zMDgsMzIgKzMyOCwxMyBAQCBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iCiAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUgJiYgdGhpc09iamVjdC0+anNFeGVj
dXRhYmxlKCktPmhhc1Byb3RvdHlwZVByb3BlcnR5KCkgJiYgIXRoaXNPYmplY3QtPmpzRXhlY3V0
YWJsZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpKSB7Ci0gICAgICAgIC8vIE5PVEU6
IGNsYXNzIGNvbnN0cnVjdG9ycyBkZWZpbmUgdGhlIHByb3RvdHlwZSBwcm9wZXJ0eSBpbiBieXRl
Y29kZSB1c2luZwotICAgICAgICAvLyBkZWZpbmVPd25Qcm9wZXJ0eSwgd2hpY2ggZW5kcyB1cCBj
YWxsaW5nIGludG8gdGhpcyBjb2RlIChzZWUgb3VyIGRlZmluZU93blByb3BlcnR5Ci0gICAgICAg
IC8vIGltcGxlbWVudGF0aW9uIGJlbG93KS4gVGhlIGJ5dGVjb2RlIHdpbGwgZW5kIHVwIGRvaW5n
IHRoZSBwcm9wZXIgZGVmaW5pdGlvbgotICAgICAgICAvLyB3aXRoIHRoZSBwcm9wZXJ0eSBiZWlu
ZyBub24td3JpdGFibGUvbm9uLWNvbmZpZ3VyYWJsZS4gSG93ZXZlciwgd2UgbXVzdCBpZ25vcmUK
LSAgICAgICAgLy8gdGhlIGluaXRpYWwgbWF0ZXJpYWxpemF0aW9uIG9mIHRoZSBwcm9wZXJ0eSBz
byB0aGF0IHRoZSBkZWZpbmVPd25Qcm9wZXJ0eSBjYWxsCi0gICAgICAgIC8vIGZyb20gYnl0ZWNv
ZGUgc3VjY2VlZHMuIE90aGVyd2lzZSwgdGhlIG1hdGVyaWFsaXphdGlvbiBoZXJlIHdvdWxkIHBy
ZXZlbnQgdGhlCi0gICAgICAgIC8vIGRlZmluZU93blByb3BlcnR5IGZyb20gYmVpbmcgYWJsZSB0
byBvdmVyd3JpdGUgdGhlIHByb3BlcnR5LgorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlICYmIHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNQ
cm90b3R5cGVQcm9wZXJ0eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpIHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBzY29wZUdsb2JhbE9iamVj
dCA9IHRoaXNPYmplY3QtPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpOwotICAgICAgICAgICAgSlNP
YmplY3QqIHByb3RvdHlwZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3JX
cmFwcGVyUGFyc2VNb2RlKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUoKSkp
IHsKLSAgICAgICAgICAgICAgICAvLyBVbmxpa2UgZnVuY3Rpb24gaW5zdGFuY2VzLCB0aGUgb2Jq
ZWN0IHRoYXQgaXMgdGhlIHZhbHVlIG9mIHRoZSBhIEdlbmVyYXRvckZ1bmN0aW9uJ3MgcHJvdG90
eXBlCi0gICAgICAgICAgICAgICAgLy8gcHJvcGVydHkgZG9lcyBub3QgaGF2ZSBhIGNvbnN0cnVj
dG9yIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIHRoZSBHZW5lcmF0b3JGdW5jdGlvbiBpbnN0YW5j
ZS4KLSAgICAgICAgICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Nl
Yy1nZW5lcmF0b3JmdW5jdGlvbi1pbnN0YW5jZXMtcHJvdG90eXBlCi0gICAgICAgICAgICAgICAg
cHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZUdsb2Jh
bE9iamVjdC0+Z2VuZXJhdG9yUHJvdG90eXBlKCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChp
c0FzeW5jR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZSh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUo
KS0+cGFyc2VNb2RlKCkpKQotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGVHbG9iYWxPYmplY3QtPmFzeW5jR2VuZXJhdG9y
UHJvdG90eXBlKCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHJvdG90
eXBlID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZUdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpOwotICAgICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgICAgICAgICAvLyBGb3IgY2xh
c3MgY29uc3RydWN0b3JzLCBwcm90b3R5cGUgb2JqZWN0IGlzIGluaXRpYWxpemVkIGZyb20gYnl0
ZWNvZGUgdmlhIGRlZmluZU93blByb3BlcnR5KCkuCisgICAgICAgICAgICBBU1NFUlQoIXRoaXNP
YmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpKTsKKyAg
ICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBjb25zdHJ1
Y3RQcm90b3R5cGVPYmplY3QoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KSwgcHJvdG90eXBlQXR0
cmlidXRlc0Zvck5vbkNsYXNzKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdl
dERpcmVjdE9mZnNldCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhdHRyaWJ1dGVz
KTsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgICAgICB9
CkBAIC0zODUsMTYgKzM4NiwxOCBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogICAgIH0K
IAotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSB7
CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUgJiYg
dGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc1Byb3RvdHlwZVByb3BlcnR5KCkpIHsKICAg
ICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwotICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90
eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRl
bgotICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4x
Mi45LgotICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwotICAgICAgICB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVE
YXRhID0gdGhpc09iamVjdC0+cmFyZURhdGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVh
cigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKLSAgICAgICAg
Z2V0U2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zm
c2V0KHRoaXNPYmplY3QtPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lKSkpIHsKKyAg
ICAgICAgICAgIC8vIEZvciBjbGFzcyBjb25zdHJ1Y3RvcnMsIHByb3RvdHlwZSBvYmplY3QgaXMg
aW5pdGlhbGl6ZWQgZnJvbSBieXRlY29kZSB2aWEgZGVmaW5lT3duUHJvcGVydHkoKS4KKyAgICAg
ICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzQ2xhc3NDb25zdHJ1
Y3RvckZ1bmN0aW9uKCkpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNsb3QudGhpc1ZhbHVl
KCkgIT0gdGhpc09iamVjdCkpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU09iamVjdDo6ZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOworICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGly
ZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwcm90b3R5cGVBdHRyaWJ1dGVzRm9yTm9uQ2xh
c3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAgfQogCkBAIC00NTQsMTUgKzQ1NywxOCBA
QCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKICAg
ICB9CiAKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSkgewotICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1
Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgotICAgICAgICAvLyBmb2xsb3dpbmcg
dGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5LCAmdm0pOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBpZiAo
cHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSAmJiB0aGlzT2JqZWN0
LT5qc0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKSkgewogICAgICAgICBpZiAo
RnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSgpKQogICAg
ICAgICAgICAgcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2Yg
YSBmdW5jdGlvbiIpOwotICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAg
ICAgICBpZiAoIWlzVmFsaWRPZmZzZXQodGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBw
cm9wZXJ0eU5hbWUpKSkgeworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJs
ZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8g
RmFzdCBwYXRoIGZvciBwcm90b3R5cGUgb2JqZWN0IGluaXRpYWxpemF0aW9uIGZyb20gYnl0ZWNv
ZGUgdGhhdCBhdm9pZHMgY2FsbGluZyBpbnRvIGdldE93blByb3BlcnR5U2xvdCgpLgorICAgICAg
ICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSk7CisgICAgICAg
ICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IudmFsdWUoKSwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGly
ZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGNvbnN0cnVjdFByb3RvdHlwZU9iamVjdChnbG9iYWxPYmpl
Y3QsIHRoaXNPYmplY3QpLCBwcm90b3R5cGVBdHRyaWJ1dGVzRm9yTm9uQ2xhc3MpOworICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJ
Zk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>