<?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>53497</bug_id>
          
          <creation_ts>2011-02-01 08:40:19 -0800</creation_ts>
          <short_desc>Web Inspector: do not hide scope variables with command line api.</short_desc>
          <delta_ts>2011-02-08 07:28:06 -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>Web Inspector (Deprecated)</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53997</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>jeromed</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>343235</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-01 08:40:19 -0800</bug_when>
    <thetext>1. Stop on a breakpoint with &quot;dir&quot; or &quot;$&quot; variables in scope.
2. Eval &quot;dir&quot; in the console.

Expected: dir value
Actual: dir function from the command line API.

The reason is that we eval &quot;with (commandLineApi) { expression }&quot;. It does not seem feasible to support both: command line api and proper eval in scope on a breakpoint. Options are:
a. do not inject command line api while on a breakpoint (pros: no confusion, cons: no inspect methods and other command line goodness)
b. inject an object with the API, so that user could type foo.inspect()
c. inject missing functions into the console object.

I am leaning toward (a) for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343283</commentid>
    <comment_count>1</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2011-02-01 09:56:14 -0800</bug_when>
    <thetext>So, with (a), you won&apos;t get the command line api at a breakpoint, but you will get it when you&apos;re NOT stopped at a breakpoint.  Seems confusing.  

Can we query the scope and only expose properties that won&apos;t shadow something on the stack?

In any case, it seems like having all the API in an object like &quot;console&quot; would be a nice capability, that we could support no matter what else we do?

Wonder what FireBug does - they would at least have a problem of not making shadowable API available - if they don&apos;t have the same problem we do.  Would be nice to have both debuggers have the same capability (in terms of adding all the API to console, or whatever).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343328</commentid>
    <comment_count>2</comment_count>
    <who name="Jerome Duval">jeromed</who>
    <bug_when>2011-02-01 10:32:10 -0800</bug_when>
    <thetext>If the fact that a value can be shadowed can be detected, then I think we could ask for disambiguation from the user (with a little popup menu?).

Stuffing the API in some object just makes it harder to have a collision, not impossible ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343668</commentid>
    <comment_count>3</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2011-02-01 16:40:51 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; If the fact that a value can be shadowed can be detected, then I think we could ask for disambiguation from the user (with a little popup menu?).
&gt; 
&gt; Stuffing the API in some object just makes it harder to have a collision, not impossible ;)

If the user shadows &quot;console&quot; with their own variable, they have bigger problems than shadowed functions from the console command-line.  eg, they won&apos;t be able to console.log().  &quot;console&quot; seems like a pretty safe namespace to hang some more debug API on.

The only thing I don&apos;t like about it, is that it make the name of something like &quot;keys()&quot; longer - &quot;console.keys()&quot;.  But since it&apos;s something needed only for shadowed command-line APIs, don&apos;t think the long-form would get used much; nice to know it&apos;s there - but I will likely forget.  :-)

I wonder also about maybe having some kind of command-line prefix that would change the behavior.  For instance, if the first char in the command-line input is a &quot;.&quot;, then don&apos;t use the command-line API when invoking the command.  Or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343892</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-01 23:41:06 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; So, with (a), you won&apos;t get the command line api at a breakpoint, but you will get it when you&apos;re NOT stopped at a breakpoint.  Seems confusing.  
&gt; 
&gt; Can we query the scope and only expose properties that won&apos;t shadow something on the stack?
&gt; 
&gt; In any case, it seems like having all the API in an object like &quot;console&quot; would be a nice capability, that we could support no matter what else we do?
&gt; 
&gt; Wonder what FireBug does - they would at least have a problem of not making shadowable API available - if they don&apos;t have the same problem we do.  Would be nice to have both debuggers have the same capability (in terms of adding all the API to console, or whatever).

I think FireBug does not export Command line API while on a breakpoint. Anyways, I was going to remove our support for it, but you gave me an idea:
  When command line API is needed, before every evaluation on a callframe, go through the command line api properties (log, inspect, etc.) and hide the ones that match any of the scope roots (local, closures, with) or global object properties. It looks like it should work and should not be expensive: we already have scope roots, checking for (&quot;log&quot; in window) should not be bad either. It will still hide non-enumerable properties, but that should be fine (window.foo) will still work as a workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346643</commentid>
    <comment_count>5</comment_count>
      <attachid>81485</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-07 10:16:53 -0800</bug_when>
    <thetext>Created attachment 81485
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347264</commentid>
    <comment_count>6</comment_count>
      <attachid>81485</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-02-08 03:53:39 -0800</bug_when>
    <thetext>Comment on attachment 81485
[PATCH] Proposed change.

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

&gt; LayoutTests/inspector/console-api-on-call-frame.html:49
&gt; +on a call frame.

Please add a link to the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347290</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-08 05:29:41 -0800</bug_when>
    <thetext>Committed r77924: &lt;http://trac.webkit.org/changeset/77924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347301</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-08 05:59:04 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r77924: &lt;http://trac.webkit.org/changeset/77924&gt;

8-10 inspector tests fail on all bot because of this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347308</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-08 06:05:10 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/77924 might have broken Qt Linux Release
The following tests are not passing:
http/tests/inspector/extensions-headers.html
http/tests/inspector/extensions-resources-redirect.html
inspector/extensions-api.html
inspector/extensions-audits-api.html
inspector/extensions-audits.html
inspector/extensions-eval.html
inspector/extensions-events.html
inspector/extensions-resources.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347352</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-08 07:28:06 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; http://trac.webkit.org/changeset/77924 might have broken Qt Linux Release
&gt; The following tests are not passing:
&gt; http/tests/inspector/extensions-headers.html
&gt; http/tests/inspector/extensions-resources-redirect.html
&gt; inspector/extensions-api.html
&gt; inspector/extensions-audits-api.html
&gt; inspector/extensions-audits.html
&gt; inspector/extensions-eval.html
&gt; inspector/extensions-events.html
&gt; inspector/extensions-resources.html

Re-applied as r77929.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81485</attachid>
            <date>2011-02-07 10:16:53 -0800</date>
            <delta_ts>2011-02-08 03:53:39 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>command_line</filename>
            <type>text/plain</type>
            <size>12486</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNjYyYTE2Li4xYjUwNTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDIt
MDcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90
IGhpZGUgc2NvcGUgdmFyaWFibGVzIHdpdGggY29tbWFuZCBsaW5lIGFwaS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNDk3CisKKyAgICAgICAgKiBp
bnNwZWN0b3IvY29uc29sZS1hcGktb24tY2FsbC1mcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLmh0bWw6IEFkZGVk
LgorCiAyMDExLTAyLTA3ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29uc29sZS1hcGktb24tY2FsbC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1hcGktb24tY2FsbC1mcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYxMTRjOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IHRoYXQgY29tbWFuZCBsaW5lIGFwaSBk
b2VzIG5vdCBtYXNrIHZhbHVlcyBvZiBzY29wZSB2YXJpYWJsZXMgd2hpbGUgZXZhbHVhdGluZyBv
biBhIGNhbGwgZnJhbWUuCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgorU2V0IHRpbWVyIGZvciB0
ZXN0IGZ1bmN0aW9uLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitFdmFsdWF0ZWQgaW4gY29u
c29sZSBpbiB0aGUgdG9wIGZyYW1lIGNvbnRleHQ6IGRpciArIGNsZWFyICsgaW5zcGVjdCA9ICJk
aXJjbGVhcmluc3BlY3QiCitFdmFsdWF0ZWQgaW4gY29uc29sZSBpbiB0aGUgdG9wIGZyYW1lIGNv
bnRleHQ6IHR5cGVvZiAkJCA9ICJmdW5jdGlvbiIKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4K
K0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUtYXBpLW9uLWNhbGwtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjI5NjBkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3dpbmRvdy5pbnNw
ZWN0ID0gImluc3BlY3QiOwordmFyIGNsZWFyID0gImNsZWFyIjsKKworZnVuY3Rpb24gdGVzdEZ1
bmN0aW9uKCkKK3sKKyAgICB2YXIgZGlyID0gImRpciI7CisgICAgZGVidWdnZXI7Cit9CisKK3Zh
ciB0ZXN0ID0gZnVuY3Rpb24oKQoreworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRl
c3Qoc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5ydW5UZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDIpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJbkNvbnNvbGUoImRpciArIGNsZWFyICsgaW5zcGVjdCIsIHN0ZXAzKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGVwMyhyZXN1bHQpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiRXZhbHVhdGVkIGluIGNvbnNvbGUgaW4gdGhlIHRvcCBmcmFtZSBjb250ZXh0
OiBkaXIgKyBjbGVhciArIGluc3BlY3QgPSAiICsgcmVzdWx0KTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluQ29uc29sZSgidHlwZW9mICQkIiwgc3RlcDQpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXA0KHJlc3VsdCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJFdmFsdWF0ZWQgaW4gY29uc29sZSBpbiB0aGUgdG9wIGZyYW1lIGNvbnRleHQ6IHR5
cGVvZiAkJCA9ICIgKyByZXN1bHQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVi
dWdnZXJUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0IHRoYXQgY29tbWFuZCBsaW5lIGFwaSBkb2VzIG5v
dCBtYXNrIHZhbHVlcyBvZiBzY29wZSB2YXJpYWJsZXMgd2hpbGUgZXZhbHVhdGluZworb24gYSBj
YWxsIGZyYW1lLgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYyNmMx
YS4uMzg1MGE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTAyLTA3ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRvIG5vdCBoaWRlIHNj
b3BlIHZhcmlhYmxlcyB3aXRoIGNvbW1hbmQgbGluZSBhcGkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQ5NworCisgICAgICAgIFRlc3Q6IGluc3Bl
Y3Rvci9jb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKwogMjAxMS0wMi0wNyAgTWFjaWVqIFN0YWNob3dp
YWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3Rv
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291
cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
CmluZGV4IGI3Y2FhMzQuLjgxOGU4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTE5NiwxMCArMTk2LDEwIEBAIEluamVjdGVk
U2NyaXB0LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9u
UmVzdWx0ID09PSAib2JqZWN0IikKICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZVByb3Bl
cnR5TmFtZXMoZXhwcmVzc2lvblJlc3VsdCwgcHJvcHMpOwotICAgIAorCiAgICAgICAgICAgICBp
ZiAoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJv
cCBpbiB0aGlzLl9jb21tYW5kTGluZUFQSSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcHNbcHJv
cF0gPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gQ29tbWFuZExpbmVB
UEkubWVtYmVyc18pCisgICAgICAgICAgICAgICAgICAgIHByb3BzW0NvbW1hbmRMaW5lQVBJLm1l
bWJlcnNfW3Byb3BdXSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gY2F0Y2goZSkg
ewogICAgICAgICB9CkBAIC0yMjYsOCArMjI2LDggQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgaWYgKGluY2x1ZGVDb21tYW5k
TGluZUFQSSkgewotICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gdGhpcy5fY29tbWFu
ZExpbmVBUEkpCi0gICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BdID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIENvbW1hbmRMaW5lQVBJLm1lbWJlcnNfKQorICAg
ICAgICAgICAgICAgICAgICBwcm9wc1tDb21tYW5kTGluZUFQSS5tZW1iZXJzX1twcm9wXV0gPSB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgfQpAQCAt
MjUzLDI0ICsyNTMsMjQgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAv
LyBPbmx5IGluc3RhbGwgY29tbWFuZCBsaW5lIGFwaSBvYmplY3QgZm9yIHRoZSB0aW1lIG9mIGV2
YWx1YXRpb24uCiAgICAgICAgIC8vIFN1cnJvdW5kIHRoZSBleHByZXNzaW9uIGluIHdpdGggc3Rh
dGVtZW50cyB0byBpbmplY3Qgb3VyIGNvbW1hbmQgbGluZSBBUEkgc28gdGhhdAogICAgICAgICAv
LyB0aGUgd2luZG93IG9iamVjdCBwcm9wZXJ0aWVzIHN0aWxsIHRha2UgbW9yZSBwcmVjZWRlbnQg
dGhhbiBvdXIgQVBJIGZ1bmN0aW9ucy4KLSAgICAgICAgaWYgKGluc3BlY3RlZFdpbmRvdy5jb25z
b2xlKQotICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuX2NvbW1hbmRMaW5lQVBJ
ID0gdGhpcy5fY29tbWFuZExpbmVBUEk7Ci0gICAgCi0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQg
bG9jYWwgdmFyaWFibGVzIHRvIGJlIHNoYWRvd2VkIGJ5IGdsb2JhbCBvbmVzIHdoZW4gZXZhbHVh
dGluZyBvbiBDYWxsRnJhbWUuCi0gICAgICAgIGlmICghaXNFdmFsT25DYWxsRnJhbWUpCi0gICAg
ICAgICAgICBleHByZXNzaW9uID0gIndpdGggKHdpbmRvdykge1xuIiArIGV4cHJlc3Npb24gKyAi
XG59ICI7Ci0gICAgICAgIGlmIChpbmplY3RDb21tYW5kTGluZUFQSSkKLSAgICAgICAgICAgIGV4
cHJlc3Npb24gPSAid2l0aCAoKHdpbmRvdyAmJiB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29u
c29sZS5fY29tbWFuZExpbmVBUEkpIHx8IHt9KSB7XG4iICsgZXhwcmVzc2lvbiArICJcbn0iOwot
ICAgICAgICB2YXIgdmFsdWUgPSBldmFsRnVuY3Rpb24uY2FsbChvYmplY3QsIGV4cHJlc3Npb24p
OwotICAgIAotICAgICAgICBpZiAoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUpCi0gICAgICAgICAg
ICBkZWxldGUgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuX2NvbW1hbmRMaW5lQVBJOwotICAgIAot
ICAgICAgICAvLyBXaGVuIGV2YWx1YXRpbmcgb24gY2FsbCBmcmFtZSBlcnJvciBpcyBub3QgdGhy
b3duLCBidXQgcmV0dXJuZWQgYXMgYSB2YWx1ZS4KLSAgICAgICAgaWYgKHRoaXMuX3R5cGUodmFs
dWUpID09PSAiZXJyb3IiKQotICAgICAgICAgICAgdGhyb3cgdmFsdWUudG9TdHJpbmcoKTsKLSAg
ICAKLSAgICAgICAgcmV0dXJuIHZhbHVlOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBp
ZiAoaW5qZWN0Q29tbWFuZExpbmVBUEkgJiYgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUpIHsKKyAg
ICAgICAgICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5fY29tbWFuZExpbmVBUEkgPSBu
ZXcgQ29tbWFuZExpbmVBUEkodGhpcy5fY29tbWFuZExpbmVBUElJbXBsLCBpc0V2YWxPbkNhbGxG
cmFtZSA/IG9iamVjdCA6IG51bGwpOworICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAid2l0
aCAoKHdpbmRvdyAmJiB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5fY29tbWFuZExp
bmVBUEkpIHx8IHt9KSB7XG4iICsgZXhwcmVzc2lvbiArICJcbn0iOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBldmFsRnVuY3Rpb24uY2FsbChvYmplY3QsIGV4cHJl
c3Npb24pOworCisgICAgICAgICAgICAvLyBXaGVuIGV2YWx1YXRpbmcgb24gY2FsbCBmcmFtZSBl
cnJvciBpcyBub3QgdGhyb3duLCBidXQgcmV0dXJuZWQgYXMgYSB2YWx1ZS4KKyAgICAgICAgICAg
IGlmICh0aGlzLl90eXBlKHZhbHVlKSA9PT0gImVycm9yIikKKyAgICAgICAgICAgICAgICB0aHJv
dyB2YWx1ZS50b1N0cmluZygpOworCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAg
IH0gZmluYWxseSB7CisgICAgICAgICAgICBpZiAoaW5qZWN0Q29tbWFuZExpbmVBUEkgJiYgaW5z
cGVjdGVkV2luZG93LmNvbnNvbGUpCisgICAgICAgICAgICAgICAgZGVsZXRlIGluc3BlY3RlZFdp
bmRvdy5jb25zb2xlLl9jb21tYW5kTGluZUFQSTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBn
ZXROb2RlSWQ6IGZ1bmN0aW9uKG5vZGUpCkBAIC00NzQsNDkgKzQ3NCw2IEBAIEluamVjdGVkU2Ny
aXB0LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIC8vIFdlIGRvbid0IHVzZSBTdHJpbmco
b2JqKSBiZWNhdXNlIGluc3BlY3RlZFdpbmRvdy5TdHJpbmcgaXMgdW5kZWZpbmVkIGlmIG93bmlu
ZyBmcmFtZSBuYXZpZ2F0ZWQgdG8gYW5vdGhlciBwYWdlLgogICAgICAgICByZXR1cm4gIiIgKyBv
Ymo7Ci0gICAgfSwKLQotICAgIF9sb2dFdmVudDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICBjb25zb2xlLmxvZyhldmVudC50eXBlLCBldmVudCk7Ci0gICAgfSwKLQotICAgIF9ub3Jt
YWxpemVFdmVudFR5cGVzOiBmdW5jdGlvbih0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICh0eXBl
b2YgdHlwZXMgPT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgdHlwZXMgPSBbICJtb3VzZSIs
ICJrZXkiLCAibG9hZCIsICJ1bmxvYWQiLCAiYWJvcnQiLCAiZXJyb3IiLCAic2VsZWN0IiwgImNo
YW5nZSIsICJzdWJtaXQiLCAicmVzZXQiLCAiZm9jdXMiLCAiYmx1ciIsICJyZXNpemUiLCAic2Ny
b2xsIiBdOwotICAgICAgICBlbHNlIGlmICh0eXBlb2YgdHlwZXMgPT09ICJzdHJpbmciKQotICAg
ICAgICAgICAgdHlwZXMgPSBbIHR5cGVzIF07Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICBpZiAodHlwZXNbaV0gPT09ICJtb3VzZSIpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnNw
bGljZSgwLCAwLCAibW91c2Vkb3duIiwgIm1vdXNldXAiLCAiY2xpY2siLCAiZGJsY2xpY2siLCAi
bW91c2Vtb3ZlIiwgIm1vdXNlb3ZlciIsICJtb3VzZW91dCIpOwotICAgICAgICAgICAgZWxzZSBp
ZiAodHlwZXNbaV0gPT09ICJrZXkiKQotICAgICAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMCwg
MCwgImtleWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2luc3BlY3RlZE5vZGU6IGZ1bmN0aW9uKG51
bSkKLSAgICB7Ci0gICAgICAgIHZhciBub2RlSWQgPSBJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVj
dGVkTm9kZShudW0pOwotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZUZvcklkKG5vZGVJZCk7Ci0g
ICAgfSwKLQotICAgIF9iaW5kVG9TY3JpcHQ6IGZ1bmN0aW9uKGZ1bmMpCi0gICAgewotICAgICAg
ICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7Ci0g
ICAgICAgIGZ1bmN0aW9uIGJvdW5kKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZ1
bmMuYXBwbHkoaW5qZWN0ZWRTY3JpcHQsIGFyZ3MuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKGFyZ3VtZW50cykpKTsKLSAgICAgICAgfQotICAgICAgICBib3VuZC50b1N0cmluZyA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuICJib3VuZDogIiArIGZ1bmM7Ci0gICAg
ICAgIH07Ci0gICAgICAgIHJldHVybiBib3VuZDsKICAgICB9CiB9CiAKQEAgLTYwNSwxNSArNTYy
LDQ0IEBAIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsKICAgICB9
CiB9CiAKLWZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKCkKK2Z1bmN0aW9uIENvbW1hbmRMaW5lQVBJ
KGNvbW1hbmRMaW5lQVBJSW1wbCwgY2FsbEZyYW1lKQoreworICAgIGZ1bmN0aW9uIGluU2NvcGVW
YXJpYWJsZXMobmFtZSkKKyAgICB7CisgICAgICAgIGlmICghY2FsbEZyYW1lKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBzY29wZUNoYWluID0gY2FsbEZyYW1lLnNj
b3BlQ2hhaW47CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgaWYgKG1lbWJlciBpbiBzY29wZUNoYWluW2ldKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IENvbW1hbmRMaW5lQVBJLm1lbWJlcnNf
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBtZW1iZXIgPSBDb21tYW5kTGluZUFQSS5tZW1i
ZXJzX1tpXTsKKyAgICAgICAgaWYgKG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGluU2NvcGVWYXJpYWJsZXMobWVtYmVyKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHRoaXNbbWVtYmVyXSA9IGNvbW1hbmRMaW5l
QVBJSW1wbFttZW1iZXJdLmJpbmQoY29tbWFuZExpbmVBUElJbXBsKTsKKyAgICB9Cit9CisKK0Nv
bW1hbmRMaW5lQVBJLm1lbWJlcnNfID0gWworICAgICIkIiwgIiQkIiwgIiR4IiwgImRpciIsICJk
aXJ4bWwiLCAia2V5cyIsICJ2YWx1ZXMiLCAicHJvZmlsZSIsICJwcm9maWxlRW5kIiwKKyAgICAi
bW9uaXRvckV2ZW50cyIsICJ1bm1vbml0b3JFdmVudHMiLCAiaW5zcGVjdCIsICJjb3B5IiwgImNs
ZWFyIgorXTsKKworZnVuY3Rpb24gQ29tbWFuZExpbmVBUElJbXBsKCkKIHsKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDU7ICsraSkKLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIkIiAr
IGksIGluamVjdGVkU2NyaXB0Ll9iaW5kVG9TY3JpcHQoaW5qZWN0ZWRTY3JpcHQuX2luc3BlY3Rl
ZE5vZGUsIGkpKTsKKyAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIkIiArIGksIHRoaXMu
X2JpbmRUb1NjcmlwdCh0aGlzLl9pbnNwZWN0ZWROb2RlLCBpKSk7CiB9CiAKLUNvbW1hbmRMaW5l
QVBJLnByb3RvdHlwZSA9IHsKLSAgICAvLyBPbmx5IGFkZCBBUEkgZnVuY3Rpb25zIGhlcmUsIHBy
aXZhdGUgc3R1ZmYgc2hvdWxkIGdvIHRvCi0gICAgLy8gSW5qZWN0ZWRTY3JpcHQgc28gdGhhdCBp
dCBpcyBub3Qgc3VnZ2VzdGVkIGJ5IHRoZSBjb21wbGV0aW9uLgorQ29tbWFuZExpbmVBUElJbXBs
LnByb3RvdHlwZSA9IHsKICAgICAkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQuYXBwbHkoZG9jdW1lbnQsIGFyZ3VtZW50cykKQEAgLTY3
NSwxMCArNjYxLDEwIEBAIENvbW1hbmRMaW5lQVBJLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJl
bW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHR5cGVzID0g
aW5qZWN0ZWRTY3JpcHQuX25vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOworICAgICAgICB0eXBl
cyA9IHRoaXMuX25vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBvYmplY3QucmVtb3Zl
RXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgaW5qZWN0ZWRTY3JpcHQuX2xvZ0V2ZW50LCBmYWxzZSk7
Ci0gICAgICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgaW5qZWN0ZWRT
Y3JpcHQuX2xvZ0V2ZW50LCBmYWxzZSk7CisgICAgICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRM
aXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgIG9i
amVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCB0aGlzLl9sb2dFdmVudCwgZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfSwKIApAQCAtNjg2LDkgKzY3Miw5IEBAIENvbW1hbmRMaW5lQVBJLnBy
b3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZl
bnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHR5cGVzID0gaW5qZWN0ZWRTY3JpcHQuX25vcm1hbGl6ZUV2ZW50VHlw
ZXModHlwZXMpOworICAgICAgICB0eXBlcyA9IHRoaXMuX25vcm1hbGl6ZUV2ZW50VHlwZXModHlw
ZXMpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIGluamVjdGVkU2Ny
aXB0Ll9sb2dFdmVudCwgZmFsc2UpOworICAgICAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlz
dGVuZXIodHlwZXNbaV0sIHRoaXMuX2xvZ0V2ZW50LCBmYWxzZSk7CiAgICAgfSwKIAogICAgIGlu
c3BlY3Q6IGZ1bmN0aW9uKG9iamVjdCkKQEAgLTcyMSwxMCArNzA3LDUyIEBAIENvbW1hbmRMaW5l
QVBJLnByb3RvdHlwZSA9IHsKICAgICBjbGVhcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
SW5qZWN0ZWRTY3JpcHRIb3N0LmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgfSwKKworICAg
IF9iaW5kVG9TY3JpcHQ6IGZ1bmN0aW9uKGZ1bmMpCisgICAgeworICAgICAgICB2YXIgYXJncyA9
IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CisgICAgICAgIGZ1bmN0
aW9uIGJvdW5kKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaW5q
ZWN0ZWRTY3JpcHQsIGFyZ3MuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3Vt
ZW50cykpKTsKKyAgICAgICAgfQorICAgICAgICBib3VuZC50b1N0cmluZyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgcmV0dXJuICJib3VuZDogIiArIGZ1bmM7CisgICAgICAgIH07CisgICAg
ICAgIHJldHVybiBib3VuZDsKKyAgICB9LAorCisgICAgX2luc3BlY3RlZE5vZGU6IGZ1bmN0aW9u
KG51bSkKKyAgICB7CisgICAgICAgIHZhciBub2RlSWQgPSBJbmplY3RlZFNjcmlwdEhvc3QuaW5z
cGVjdGVkTm9kZShudW0pOworICAgICAgICByZXR1cm4gdGhpcy5fbm9kZUZvcklkKG5vZGVJZCk7
CisgICAgfSwKKworICAgIF9ub3JtYWxpemVFdmVudFR5cGVzOiBmdW5jdGlvbih0eXBlcykKKyAg
ICB7CisgICAgICAgIGlmICh0eXBlb2YgdHlwZXMgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAg
ICAgdHlwZXMgPSBbICJtb3VzZSIsICJrZXkiLCAibG9hZCIsICJ1bmxvYWQiLCAiYWJvcnQiLCAi
ZXJyb3IiLCAic2VsZWN0IiwgImNoYW5nZSIsICJzdWJtaXQiLCAicmVzZXQiLCAiZm9jdXMiLCAi
Ymx1ciIsICJyZXNpemUiLCAic2Nyb2xsIiBdOworICAgICAgICBlbHNlIGlmICh0eXBlb2YgdHlw
ZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgdHlwZXMgPSBbIHR5cGVzIF07CisKKyAgICAg
ICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodHlwZXNbaV0gPT09ICJtb3VzZSIpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCAibW91c2Vkb3duIiwgIm1vdXNldXAiLCAi
Y2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3ZlciIsICJtb3VzZW91dCIp
OworICAgICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXkiKQorICAgICAgICAgICAg
ICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwgImtleWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tpXSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgX2xvZ0V2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKGV2ZW50LnR5
cGUsIGV2ZW50KTsKICAgICB9CiB9CiAKLWluamVjdGVkU2NyaXB0Ll9jb21tYW5kTGluZUFQSSA9
IG5ldyBDb21tYW5kTGluZUFQSSgpOworaW5qZWN0ZWRTY3JpcHQuX2NvbW1hbmRMaW5lQVBJSW1w
bCA9IG5ldyBDb21tYW5kTGluZUFQSUltcGwoKTsKIHJldHVybiBpbmplY3RlZFNjcmlwdDsKIH0p
Ci0K
</data>
<flag name="review"
          id="73073"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>