<?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>186947</bug_id>
          
          <creation_ts>2018-06-22 16:21:42 -0700</creation_ts>
          <short_desc>Add more debugging features to $vm.</short_desc>
          <delta_ts>2018-06-23 08:50:30 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1435671</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-22 16:21:42 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435734</commentid>
    <comment_count>1</comment_count>
      <attachid>343406</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-22 18:17:51 -0700</bug_when>
    <thetext>Created attachment 343406
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435781</commentid>
    <comment_count>2</comment_count>
      <attachid>343406</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-22 22:39:52 -0700</bug_when>
    <thetext>Comment on attachment 343406
proposed patch.

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

r=me with some comments.

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +            // We now have println in addition to print.
&gt; +            // println automatically adds a &apos;\n&apos; at the end.
&gt; +            $vm.println(&quot;Hello&quot;);

Nit: I think this is what print should do by default... it&apos;s also what print does in jsc.cpp

&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:103
&gt; +            addProperty(vm, &quot;codeBlock&quot;, codeBlock);
&gt; +            addProperty(vm, &quot;unlinkedCodeBlock&quot;, codeBlock-&gt;unlinkedCodeBlock());
&gt; +            addProperty(vm, &quot;executable&quot;, codeBlock-&gt;ownerExecutable());

I think this will crash for Wasm. Can we add these only if codeBlock is non-null.

&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:1351
&gt; +    return JSValue::encode(codeBlock);

I think you need a null check here for Wasm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435789</commentid>
    <comment_count>3</comment_count>
      <attachid>343406</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-22 23:23:54 -0700</bug_when>
    <thetext>Comment on attachment 343406
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt; +            $vm.println(&quot;Hello&quot;);
&gt; 
&gt; Nit: I think this is what print should do by default... it&apos;s also what print does in jsc.cpp

Per our offline discussion, I&apos;ll rename print to dataLog, and println to print with the justification that most people would probably expect print to append the \n.  I still think it&apos;s sad that we have to do this, but I&apos;ll go with it only because most the scripting languages (as you pointed out) like adopts this (bad, IMHO) convention of making print append \n and make their users jump thru hoops to print without the \n.

&gt;&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:103
&gt;&gt; +            addProperty(vm, &quot;executable&quot;, codeBlock-&gt;ownerExecutable());
&gt; 
&gt; I think this will crash for Wasm. Can we add these only if codeBlock is non-null.

I&apos;ll add a null check and not populate these (which makes them undefined).

&gt;&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:1351
&gt;&gt; +    return JSValue::encode(codeBlock);
&gt; 
&gt; I think you need a null check here for Wasm.

Will do and return undefined if codeBlock is null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435861</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-23 08:34:40 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Comment on attachment 343406 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=343406&amp;action=review
&gt; 
&gt; Thanks for the review.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt; &gt;&gt; +            $vm.println(&quot;Hello&quot;);
&gt; &gt; 
&gt; &gt; Nit: I think this is what print should do by default... it&apos;s also what print does in jsc.cpp
&gt; 
&gt; Per our offline discussion, I&apos;ll rename print to dataLog, and println to
&gt; print with the justification that most people would probably expect print to
&gt; append the \n.  I still think it&apos;s sad that we have to do this, but I&apos;ll go
&gt; with it only because most the scripting languages (as you pointed out) like
&gt; adopts this (bad, IMHO) convention of making print append \n and make their
&gt; users jump thru hoops to print without the \n.

On second thought, I&apos;ll defer this to a follow up patch to go with other renaming that I think should be done for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435862</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-23 08:49:09 -0700</bug_when>
    <thetext>Landed in r233129: &lt;http://trac.webkit.org/r233129&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435863</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-23 08:50:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/41398544&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343406</attachid>
            <date>2018-06-22 18:17:51 -0700</date>
            <delta_ts>2018-06-22 22:39:52 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-186947.patch</filename>
            <type>text/plain</type>
            <size>13194</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMzMTE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE4LTA2LTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgbW9yZSBkZWJ1Z2dpbmcgZmVhdHVyZXMgdG8gJHZtLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6
CisKKyAgICAgICAgICAgIC8vIFdlIG5vdyBoYXZlIHByaW50bG4gaW4gYWRkaXRpb24gdG8gcHJp
bnQuCisgICAgICAgICAgICAvLyBwcmludGxuIGF1dG9tYXRpY2FsbHkgYWRkcyBhICdcbicgYXQg
dGhlIGVuZC4KKyAgICAgICAgICAgICR2bS5wcmludGxuKCJIZWxsbyIpOworCisgICAgICAgICAg
ICAvLyBXZSBjYW4gbm93IGNhcHR1cmUgc29tZSBpbmZvIGFib3V0IGEgc3RhY2sgZnJhbWUuCisg
ICAgICAgICAgICB2YXIgY3VycmVudEZyYW1lID0gJHZtLmNhbGxGcmFtZSgpOyAvLyBTYW1lIGFz
ICR2bS5jYWxsRnJhbWUoMCk7CisgICAgICAgICAgICB2YXIgY2FsbGVyQ2FsbGVyRnJhbWUgPSAk
dm0uY2FsbEZyYW1lKDIpOworCisgICAgICAgICAgICAvLyBXZSBjYW4gaW5zcGVjdCB0aGUgZm9s
bG93aW5nIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lOgorICAgICAgICAgICAgaWYg
KGN1cnJlbnRGcmFtZS52YWxpZCkgeworICAgICAgICAgICAgICAgICR2bS5wcmludGxuKCJuYW1l
IGlzICIsIGN1cnJlbnRGcmFtZS5uYW1lKSk7CisgICAgICAgICAgICAgICAgJHZtLnByaW50bG4o
ImNhbGxlZSBpcyAiLCAkdm0udmFsdWUoY3VycmVudEZyYW1lLmNhbGxlZSkpOworICAgICAgICAg
ICAgICAgICR2bS5wcmludGxuKCJjb2RlQmxvY2sgaXMgIiwgY3VycmVudEZyYW1lLmNvZGVCbG9j
ayk7CisgICAgICAgICAgICAgICAgJHZtLnByaW50bG4oInVubGlua2VkQ29kZUJsb2NrIGlzICIs
IGN1cnJlbnRGcmFtZS51bmxpbmtlZENvZGVCbG9jayk7CisgICAgICAgICAgICAgICAgJHZtLnBy
aW50bG4oImV4ZWN1dGFibGUgaXMgIiwgY3VycmVudEZyYW1lLmV4ZWN1dGFibGUpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgY2FsbGVlIGlzIGEgSlNPYmplY3Qu
ICBJIHByaW50ZWQgaXRzICR2bS52YWx1ZSgpIGJlY2F1c2UgSSB3YW50ZWQKKyAgICAgICAgICAg
IC8vIHRvIGRhdGFMb2cgaXRzIEpTVmFsdWUgaW5zdGVhZCBvZiBpdHMgdG9TdHJpbmcoKSByZXN1
bHQuCisKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCAkdm0ucHJpbnRsbigpIChhbmQgJHZtLnBy
aW50KCkpIGNhbiBub3cgcHJpbnQgaW50ZXJuYWwgSlNDZWxscworICAgICAgICAgICAgLy8gKGFu
ZCBTeW1ib2xzKSBhcyBKU1ZhbHVlIGR1bXBzLiBJdCB3b24ndCBqdXN0IGZhaWwgb24gdHJ5aW5n
IHRvIGRvIGEKKyAgICAgICAgICAgIC8vIHRvU3RyaW5nIG9uIGEgbm9uLW9iamVjdC4KKworICAg
ICAgICAgICAgLy8gRG9lcyB3aGF0IGl0IHNheXMgYWJvdXQgZW5hYmxpbmcvZGlzYWJsaW5nIGRl
YnVnZ2VyIG1vZGUuCisgICAgICAgICAgICAkdm0uZW5hYmxlRGVidWdnZXJNb2RlV2hlbklkbGUo
KTsKKyAgICAgICAgICAgICR2bS5kaXNhYmxlRGVidWdnZXJNb2RlV2hlbklkbGUoKTsKKworICAg
ICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoV1RGOjpKU0RvbGxhclZNQ2Fs
bEZyYW1lOjpKU0RvbGxhclZNQ2FsbEZyYW1lKToKKyAgICAgICAgKFdURjo6SlNEb2xsYXJWTUNh
bGxGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6SlNEb2xsYXJWTUNhbGxG
cmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6SlNEb2xsYXJWTUNhbGxGcmFtZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoV1RGOjpKU0RvbGxhclZNQ2FsbEZyYW1lOjphZGRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25Db2RlQmxvY2tGb3JGcmFtZSk6CisgICAgICAgIChKU0M6OmNvZGVCbG9ja0Zyb21Bcmcp
OgorICAgICAgICAoSlNDOjpkb1ByaW50bG4pOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByaW50
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25QcmludGxuKToKKyAgICAgICAgKEpTQzo6Y2hhbmdl
RGVidWdnZXJNb2RlV2hlbklkbGUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkVuYWJsZURlYnVn
Z2VyTW9kZVdoZW5JZGxlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EaXNhYmxlRGVidWdnZXJN
b2RlV2hlbklkbGUpOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbik6
CisKIDIwMTgtMDYtMjIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFByb3BlcnR5Q29uZGl0aW9uOjppc1ZhbGlkVmFsdWVGb3JBdHRyaWJ1dGVzKCkgc2hvdWxkIGFs
c28gY29uc2lkZXIgZGVsZXRlZCB2YWx1ZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyMzMxMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niw2ICs1
Niw3MSBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewogCitjbGFzcyBKU0Rv
bGxhclZNQ2FsbEZyYW1lIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKKyAgICB1c2lu
ZyBCYXNlID0gSlNEZXN0cnVjdGlibGVPYmplY3Q7CitwdWJsaWM6CisgICAgSlNEb2xsYXJWTUNh
bGxGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICB7IH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0RvbGxhclZNQ2FsbEZyYW1lKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCByZXF1ZXN0ZWRGcmFtZUluZGV4KQorICAgIHsKKyAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkp
OworICAgICAgICBKU0RvbGxhclZNQ2FsbEZyYW1lKiBmcmFtZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTRG9sbGFyVk1DYWxsRnJhbWU+KHZtLmhlYXAsIHNpemVvZihKU0RvbGxhclZN
Q2FsbEZyYW1lKSkpIEpTRG9sbGFyVk1DYWxsRnJhbWUodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IGZyYW1lLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlYywgcmVxdWVzdGVkRnJhbWVJbmRleCk7Cisg
ICAgICAgIHJldHVybiBmcmFtZTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgQ2FsbEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgcmVxdWVzdGVkRnJhbWVJbmRleCkKKyAg
ICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKworICAgICAgICBhdXRvIGFk
ZFByb3BlcnR5ID0gWyZdIChWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUsIEpTVmFsdWUgdmFsdWUp
IHsKKyAgICAgICAgICAgIEpTRG9sbGFyVk1DYWxsRnJhbWU6OmFkZFByb3BlcnR5KHZtLCBuYW1l
LCB2YWx1ZSk7CisgICAgICAgIH07CisKKyAgICAgICAgdW5zaWduZWQgZnJhbWVJbmRleCA9IDA7
CisgICAgICAgIGJvb2wgaXNWYWxpZCA9IGZhbHNlOworICAgICAgICBmcmFtZS0+aXRlcmF0ZShb
Jl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgeworCisgICAgICAgICAgICBpZiAoZnJhbWVJbmRl
eCsrICE9IHJlcXVlc3RlZEZyYW1lSW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNr
VmlzaXRvcjo6Q29udGludWU7CisKKyAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsZWUoKS5p
c0NlbGwoKSkKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eSh2bSwgImNhbGxlZSIsIHZpc2l0
b3ItPmNhbGxlZSgpLmFzQ2VsbCgpKTsKKworICAgICAgICAgICAgYWRkUHJvcGVydHkodm0sICJu
YW1lIiwganNTdHJpbmcoJnZtLCB2aXNpdG9yLT5mdW5jdGlvbk5hbWUoKSkpOworICAgICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
ICAgIGFkZFByb3BlcnR5KHZtLCAiY29kZUJsb2NrIiwgY29kZUJsb2NrKTsKKyAgICAgICAgICAg
IGFkZFByb3BlcnR5KHZtLCAidW5saW5rZWRDb2RlQmxvY2siLCBjb2RlQmxvY2stPnVubGlua2Vk
Q29kZUJsb2NrKCkpOworICAgICAgICAgICAgYWRkUHJvcGVydHkodm0sICJleGVjdXRhYmxlIiwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSk7CisgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1
ZTsKKworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgYWRkUHJvcGVydHkodm0sICJ2YWxpZCIsIGpzQm9vbGVhbihpc1ZhbGlkKSk7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIHZvaWQgYWRkUHJv
cGVydHkoVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IG5hbWUpOworICAgICAgICBwdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIHZhbHVlKTsKKyAgICB9
Cit9OworCitjb25zdCBDbGFzc0luZm8gSlNEb2xsYXJWTUNhbGxGcmFtZTo6c19pbmZvID0geyAi
Q2FsbEZyYW1lIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0RvbGxhclZNQ2FsbEZyYW1lKSB9OworCiBjbGFzcyBFbGVtZW50SGFuZGxlT3du
ZXI7CiBjbGFzcyBSb290OwogCkBAIC0xMjQ1LDI2ICsxMzEwLDQ1IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCisvLyBHZXRzIGEgSlNEb2xsYXJWTUNhbGxGcmFtZSBmb3IgYSBz
cGVjaWZpZWQgZnJhbWUgaW5kZXguCisvLyBVc2FnZTogdmFyIGNhbGxGcmFtZSA9ICR2bS5jYWxs
RnJhbWUoMCkgLy8gZnJhbWUgMCBpcyB0aGUgdG9wIGZyYW1lLgorLy8gVXNhZ2U6IHZhciBjYWxs
RnJhbWUgPSAkdm0uY2FsbEZyYW1lKCkgLy8gaW1wbGllcyBmcmFtZSAwIGkuZS4gY3VycmVudCBm
cmFtZS4KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbEZy
YW1lKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICB1bnNpZ25lZCBmcmFtZU51bWJlciA9IDE7Cisg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc1VJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIGluYyB0aGUgZnJhbWUgbnVtYmVyIGJlY2F1c2Ug
dGhlIGNhbGxlciB3b3VsZCBjb25zaWRlcgorICAgICAgICAvLyBpdHMgb3duIGZyYW1lIGFzIGZy
YW1lIDAuIEhlbmNlLCB3ZSBuZWVkIGRpc2NvdW50IHRoZSBmcmFtZSBmb3IgdGhpcworICAgICAg
ICAvLyBmdW5jdGlvbi4KKyAgICAgICAgZnJhbWVOdW1iZXIgPSB2YWx1ZS5hc1VJbnQzMigpICsg
MTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRG9sbGFyVk1DYWxsRnJh
bWU6OmNyZWF0ZShleGVjLCBmcmFtZU51bWJlcikpOworfQorCiAvLyBHZXRzIGEgdG9rZW4gZm9y
IHRoZSBDb2RlQmxvY2sgZm9yIGEgc3BlY2lmaWVkIGZyYW1lIGluZGV4LgogLy8gVXNhZ2U6IGNv
ZGVCbG9ja1Rva2VuID0gJHZtLmNvZGVCbG9ja0ZvckZyYW1lKDApIC8vIGZyYW1lIDAgaXMgdGhl
IHRvcCBmcmFtZS4KKy8vIFVzYWdlOiBjb2RlQmxvY2tUb2tlbiA9ICR2bS5jb2RlQmxvY2tGb3JG
cmFtZSgpIC8vIGltcGxpZXMgZnJhbWUgMCBpLmUuIGN1cnJlbnQgZnJhbWUuCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNvZGVCbG9ja0ZvckZyYW1lKEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIEpTVmFsdWUg
dmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBpZiAoIXZhbHVlLmlzVUlu
dDMyKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgdW5zaWduZWQgZnJhbWVOdW1iZXIgPSAxOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPj0gMSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CisgICAgICAgIGlmICghdmFsdWUuaXNVSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgLy8gV2UgbmVlZCB0
byBpbmMgdGhlIGZyYW1lIG51bWJlciBiZWNhdXNlIHRoZSBjYWxsZXIgd291bGQgY29uc2lkZXIK
KyAgICAgICAgLy8gaXRzIG93biBmcmFtZSBhcyBmcmFtZSAwLiBIZW5jZSwgd2UgbmVlZCBkaXNj
b3VudCB0aGUgZnJhbWUgZm9yIHRoaXMKKyAgICAgICAgLy8gZnVuY3Rpb24uCisgICAgICAgIGZy
YW1lTnVtYmVyID0gdmFsdWUuYXNVSW50MzIoKSArIDE7CisgICAgfQogCi0gICAgLy8gV2UgbmVl
ZCB0byBpbmMgdGhlIGZyYW1lIG51bWJlciBiZWNhdXNlIHRoZSBjYWxsZXIgd291bGQgY29uc2lk
ZXIKLSAgICAvLyBpdHMgb3duIGZyYW1lIGFzIGZyYW1lIDAuIEhlbmNlLCB3ZSBuZWVkIGRpc2Nv
dW50IHRoZSBmcmFtZSBmb3IgdGhpcwotICAgIC8vIGZ1bmN0aW9uLgotICAgIHVuc2lnbmVkIGZy
YW1lTnVtYmVyID0gdmFsdWUuYXNVSW50MzIoKSArIDE7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBWTUluc3BlY3Rvcjo6Y29kZUJsb2NrRm9yRnJhbWUoZXhlYywgZnJhbWVOdW1iZXIpOwot
ICAgIC8vIFRob3VnaCBDb2RlQmxvY2sgaXMgYSBKU0NlbGwsIGl0IGlzIG5vdCBzYWZlIHRvIHJl
dHVybiBpdCBkaXJlY3RseSBiYWNrIHRvIEpTIGNvZGUKLSAgICAvLyBhcyBpdCBpcyBhbiBpbnRl
cm5hbCB0eXBlIHRoYXQgdGhlIEpTIGNvZGUgY2Fubm90IGhhbmRsZS4gSGVuY2UsIHdlIGZpcnN0
IGVuY29kZSB0aGUKLSAgICAvLyBDb2RlQmxvY2sqIGFzIGEgZG91YmxlIHRva2VuICh3aGljaCBp
cyBzYWZlIGZvciBKUyBjb2RlIHRvIGhhbmRsZSkgYmVmb3JlIHJldHVybmluZyBpdC4KLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoYml0d2lzZV9jYXN0PGRvdWJsZT4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb2RlQmxvY2spKSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvZGVCbG9jayk7CiB9CiAKIHN0YXRpYyBD
b2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTI4MiwxMiAr
MTM2Niw4IEBAIHN0YXRpYyBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21BcmcoRXhlY1MKICAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVDb2RlQmxvY2sgPSBudWxscHRyOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9jayA9IGZ1bmMtPmpzRXhlY3V0YWJs
ZSgpLT5laXRoZXJDb2RlQmxvY2soKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodmFsdWUu
aXNEb3VibGUoKSkgewotICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgYSBkb3VibGUsIGl0IG1h
eSBiZSBhbiBlbmNvZGVkIENvZGVCbG9jayogdGhhdCBjYW1lIGZyb20KLSAgICAgICAgLy8gJHZt
LmNvZGVCbG9ja0ZvckZyYW1lKCkuIFdlJ2xsIHRyZWF0IGl0IGFzIGEgY2FuZGlkYXRlIGNvZGVC
bG9jayBhbmQgY2hlY2sgaWYgaXQncwotICAgICAgICAvLyB2YWxpZCBiZWxvdyBiZWZvcmUgdXNp
bmcuCi0gICAgICAgIGNhbmRpZGF0ZUNvZGVCbG9jayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJs
b2NrKj4oYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZS5hc0RvdWJsZSgpKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgY2FuZGlkYXRlQ29kZUJsb2NrID0gcmVpbnRlcnByZXRfY2Fz
dDxDb2RlQmxvY2sqPih2YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCiAgICAgaWYgKGNhbmRpZGF0
ZUNvZGVCbG9jayAmJiBWTUluc3BlY3Rvcjo6aXNWYWxpZENvZGVCbG9jayhleGVjLCBjYW5kaWRh
dGVDb2RlQmxvY2spKQpAQCAtMTMzMywxOSArMTQxMyw0MyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotLy8gUHJpbnRzIGEgc2VyaWVzIG9mIGNvbW1hIHNlcGFyYXRlIHN0cmlu
Z3Mgd2l0aG91dCBpbnNlcnRpbmcgYSBuZXdsaW5lLgotLy8gVXNhZ2U6ICR2bS5wcmludChzdHIx
LCBzdHIyLCBzdHIzKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25QcmludChFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZG9QcmludGxu
KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBhZGRMaW5lRmVlZCkKIHsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSBhcmcg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKTsKKyAgICAgICAgaWYgKGFyZy5pc0NlbGwoKQor
ICAgICAgICAgICAgJiYgIWFyZy5pc09iamVjdCgpCisgICAgICAgICAgICAmJiAhYXJnLmlzU3Ry
aW5nKCkKKyAgICAgICAgICAgICYmICFhcmcuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgZGF0
YUxvZyhhcmcpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgU3Ry
aW5nIGFyZ1N0ciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvV1RGU3RyaW5nKGV4ZWMp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAgICAgZGF0YUxvZyhhcmdTdHIpOwogICAgIH0KKyAgICBpZiAoYWRkTGluZUZlZWQpCisg
ICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAorLy8gUHJpbnRzIGEgc2VyaWVzIG9mIGNvbW1hIHNlcGFyYXRlIHN0cmlu
Z3Mgd2l0aG91dCBhcHBlbmRpbmcgYSBuZXdsaW5lLgorLy8gVXNhZ2U6ICR2bS5wcmludChzdHIx
LCBzdHIyLCBzdHIzKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25QcmludChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgY29uc3QgYm9vbCBhZGRMaW5lRmVlZCA9
IGZhbHNlOworICAgIHJldHVybiBkb1ByaW50bG4oZXhlYywgYWRkTGluZUZlZWQpOworfQorCisv
LyBQcmludHMgYSBzZXJpZXMgb2YgY29tbWEgc2VwYXJhdGUgc3RyaW5ncyBhbmQgYXBwZW5kcyBh
IG5ld2xpbmUuCisvLyBVc2FnZTogJHZtLnByaW50bG4oc3RyMSwgc3RyMiwgc3RyMykKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRsbihFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgY29uc3QgYm9vbCBhZGRMaW5lRmVlZCA9IHRydWU7CisgICAgcmV0dXJu
IGRvUHJpbnRsbihleGVjLCBhZGRMaW5lRmVlZCk7Cit9CisKIC8vIFByaW50cyB0aGUgY3VycmVu
dCBDYWxsRnJhbWUuCiAvLyBVc2FnZTogJHZtLnByaW50Q2FsbEZyYW1lKCkKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnRDYWxsRnJhbWUoRXhlY1N0YXRl
KiBleGVjKQpAQCAtMTcxNyw2ICsxODIxLDMwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2hhbmdlRGVidWdnZXJNb2RlV2hlbklkbGUo
RXhlY1N0YXRlKiBleGVjLCBEZWJ1Z2dlck1vZGUgbW9kZSkKK3sKKyAgICBib29sIG5ld0RlYnVn
Z2VyTW9kZSA9IChtb2RlID09IERlYnVnZ2VyT24pOworICAgIGlmIChPcHRpb25zOjpmb3JjZURl
YnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCkgPT0gbmV3RGVidWdnZXJNb2RlKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CisgICAgdm0tPndoZW5JZGxlKFs9XSAoKSB7CisgICAgICAgIE9wdGlvbnM6OmZv
cmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKSA9IG5ld0RlYnVnZ2VyTW9kZTsKKyAgICAg
ICAgdm0tPmRlbGV0ZUFsbENvZGUoUHJldmVudENvbGxlY3Rpb25BbmREZWxldGVBbGxDb2RlKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZURlYnVn
Z2VyTW9kZVdoZW5JZGxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gY2hhbmdlRGVi
dWdnZXJNb2RlV2hlbklkbGUoZXhlYywgRGVidWdnZXJPbik7Cit9CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGlzYWJsZURlYnVnZ2VyTW9kZVdoZW5JZGxl
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gY2hhbmdlRGVidWdnZXJNb2RlV2hlbklk
bGUoZXhlYywgRGVidWdnZXJPZmYpOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkdsb2JhbE9iamVjdENvdW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMtPnZtKCkuaGVhcC5nbG9iYWxP
YmplY3RDb3VudCgpKSk7CkBAIC0xODMyLDEyICsxOTYwLDE0IEBAIHZvaWQgSlNEb2xsYXJWTTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2MiLCBmdW5jdGlv
bkdDLCAwKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImVkZW5HQyIsIGZ1bmN0aW9uRWRlbkdDLCAw
KTsKIAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2FsbEZyYW1lIiwgZnVuY3Rpb25DYWxsRnJhbWUs
IDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY29kZUJsb2NrRm9yIiwgZnVuY3Rpb25Db2RlQmxv
Y2tGb3IsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY29kZUJsb2NrRm9yRnJhbWUiLCBmdW5j
dGlvbkNvZGVCbG9ja0ZvckZyYW1lLCAxKTsKICAgICBhZGRGdW5jdGlvbih2bSwgInByaW50U291
cmNlRm9yIiwgZnVuY3Rpb25QcmludFNvdXJjZUZvciwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0s
ICJwcmludEJ5dGVjb2RlRm9yIiwgZnVuY3Rpb25QcmludEJ5dGVjb2RlRm9yLCAxKTsKIAogICAg
IGFkZEZ1bmN0aW9uKHZtLCAicHJpbnQiLCBmdW5jdGlvblByaW50LCAxKTsKKyAgICBhZGRGdW5j
dGlvbih2bSwgInByaW50bG4iLCBmdW5jdGlvblByaW50bG4sIDEpOwogICAgIGFkZEZ1bmN0aW9u
KHZtLCAicHJpbnRDYWxsRnJhbWUiLCBmdW5jdGlvblByaW50Q2FsbEZyYW1lLCAwKTsKICAgICBh
ZGRGdW5jdGlvbih2bSwgInByaW50U3RhY2siLCBmdW5jdGlvblByaW50U3RhY2ssIDApOwogCkBA
IC0xODgyLDYgKzIwMTIsOSBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIAogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZW5hYmxlRXhjZXB0aW9uRnV6eiIsIGZ1bmN0aW9u
RW5hYmxlRXhjZXB0aW9uRnV6eiwgMCk7CiAKKyAgICBhZGRGdW5jdGlvbih2bSwgImVuYWJsZURl
YnVnZ2VyTW9kZVdoZW5JZGxlIiwgZnVuY3Rpb25FbmFibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZSwg
MCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJkaXNhYmxlRGVidWdnZXJNb2RlV2hlbklkbGUiLCBm
dW5jdGlvbkRpc2FibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZSwgMCk7CisKICAgICBhZGRGdW5jdGlv
bih2bSwgImdsb2JhbE9iamVjdENvdW50IiwgZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudCwgMCk7
CiAgICAgYWRkRnVuY3Rpb24odm0sICJnbG9iYWxPYmplY3RGb3JPYmplY3QiLCBmdW5jdGlvbkds
b2JhbE9iamVjdEZvck9iamVjdCwgMSk7CiAK
</data>
<flag name="review"
          id="361477"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>