<?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>81840</bug_id>
          
          <creation_ts>2012-03-21 15:52:35 -0700</creation_ts>
          <short_desc>DFG speculation on booleans should be rationalized</short_desc>
          <delta_ts>2012-03-21 20:48: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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>584723</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-21 15:52:35 -0700</bug_when>
    <thetext>Right now there is a bit of a mess of calls to isKnownBoolean() for some code paths and shouldSpeculateBoolean() for others. From the standpoint of trying to reason about the types of nodes, we should stick to using shouldSpeculateBoolean() as the main guard, which secondary guards based on AbstractState to determine if the boolean checks have already been performed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584751</commentid>
    <comment_count>1</comment_count>
      <attachid>133141</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-21 16:32:30 -0700</bug_when>
    <thetext>Created attachment 133141
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584936</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-21 20:48:18 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/111649</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133141</attachid>
            <date>2012-03-21 16:32:30 -0700</date>
            <delta_ts>2012-03-21 17:35:30 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixspecbool_patch_1.diff</filename>
            <type>text/plain</type>
            <size>13939</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExNjE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDEyLTAzLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNwZWN1bGF0aW9uIG9uIGJvb2xlYW5zIHNob3VsZCBiZSByYXRpb25hbGl6ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxODQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHJl
bW92ZXMgaXNLbm93bkJvb2xlYW4oKSBhbmQgcmVwbGFjZXMgaXQgd2l0aCBBYnN0cmFjdFN0YXRl
LWJhc2VkCisgICAgICAgIG9wdGltaXphdGlvbiwgYW5kIGNsZWFucyB1cCB0aGUgY29udHJvbCBm
bG93IGluIGNvZGUgZ2VuIG1ldGhvZHMgZm9yCisgICAgICAgIEJyYW5jaCBhbmQgTG9naWNhbE5v
dC4gQWxzbyBmaXhlcyBhIGdvb2YgaW4gTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyLAorICAg
ICAgICBhbmQgcmVtb3ZlcyBpc0tub3duTm90Qm9vbGVhbigpIHNpbmNlIHRoYXQgbWV0aG9kIGFw
cGVhcmVkIHRvIGJlIGEKKyAgICAgICAgaGVscGVyIHVzZWQgc29sZWx5IGJ5IDMyXzY0J3Mgc3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhdGlvbigpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBwZXJm
b3JtYW5jZS1uZXV0cmFsLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNwZWN1bGF0
aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRC
cmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwog
MjAxMi0wMy0yMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4
IHJlbWFpbmluZyBXVEYgaW5jbHVkZXMgaW4gSmF2YVNjcmlwdENvcmUgaW4gcHJlcGFyYXRpb24g
Zm9yIG1vdmluZyBXVEYgaGVhZGVycyBvdXQgb2YgSmF2YVNjcmlwdENvcmUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24g
MTExNDkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIAogICAgIGNhc2UgTG9naWNhbE5vdDog
ewogICAgICAgICBOb2RlJiBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07Ci0gICAgICAg
IGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKGNoaWxkLnByZWRpY3Rpb24oKSkgfHwgIWNoaWxkLnBy
ZWRpY3Rpb24oKSkKKyAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24oY2hpbGQucHJlZGlj
dGlvbigpKSkKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRp
Y3RCb29sZWFuKTsKICAgICAgICAgZWxzZSBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlRmluYWxP
YmplY3RPck90aGVyKCkpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRl
cihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIpOwpAQCAtNjQ0LDcgKzY0NCw3IEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgLy8gcHJv
cGFnYXRpb24sIGFuZCB0byB0YWtlIGl0IG9uZSBzdGVwIGZ1cnRoZXIsIHdoZXJlIGEgdmFyaWFi
bGUncyB2YWx1ZQogICAgICAgICAvLyBpcyBzcGVjaWFsaXplZCBvbiBlYWNoIGRpcmVjdGlvbiBv
ZiBhIGJyYW5jaC4gRm9yIG5vdywgd2UgZG9uJ3QgZG8gdGhpcy4KICAgICAgICAgTm9kZSYgY2hp
bGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwotICAgICAgICBpZiAoaXNCb29sZWFuUHJlZGlj
dGlvbihjaGlsZC5wcmVkaWN0aW9uKCkpIHx8ICFjaGlsZC5wcmVkaWN0aW9uKCkpCisgICAgICAg
IGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCiAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Qm9vbGVhbik7CiAgICAgICAgIGVsc2UgaWYg
KGNoaWxkLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKQogICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEZpbmFsT2JqZWN0IHwgUHJlZGlj
dE90aGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAx
MTE0OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjk0LDcgKzY5NCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIHNo
b3VsZFNwZWN1bGF0ZU51bWJlcigpCiAgICAgewotICAgICAgICByZXR1cm4gaXNOdW1iZXJQcmVk
aWN0aW9uKHByZWRpY3Rpb24oKSkgfHwgcHJlZGljdGlvbigpID09IFByZWRpY3ROb25lOworICAg
ICAgICByZXR1cm4gaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAg
IAogICAgIGJvb2wgc2hvdWxkTm90U3BlY3VsYXRlSW50ZWdlcigpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJl
dmlzaW9uIDExMTQ5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODUsMTUgKzEyODUsMTUgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKICAgICAgZGF0YUxvZygiU3BlY0Jvb2xAJWQgICAiLCBub2RlSW5kZXgpOwog
I2VuZGlmCi0gICAgaWYgKGlzS25vd25Ob3RCb29sZWFuKG5vZGVJbmRleCkpIHsKKyAgICBOb2Rl
JiBub2RlID0gbV9qaXQuZ3JhcGgoKVtub2RlSW5kZXhdOworICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25J
bmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOworICAgIGlmICgo
bm9kZS5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpLmlzQm9v
bGVhbigpKQorICAgICAgICB8fCAhKGluZm8uaXNKU0Jvb2xlYW4oKSB8fCBpbmZvLmlzVW5rbm93
bkpTKCkpKSB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsK
ICAgICB9CiAKLSAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKLSAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICBHZW5l
cmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXTsKLQog
ICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0
Tm9uZTogewogCkBAIC0xNDc4LDcgKzE0NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0T3JPdGhlCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90
KE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKGlzS25vd25Cb29sZWFuKG5vZGUuY2hpbGQxKCkuaW5k
ZXgoKSkgfHwgaXNCb29sZWFuUHJlZGljdGlvbihtX2ppdC5nZXRQcmVkaWN0aW9uKG5vZGUuY2hp
bGQxKCkuaW5kZXgoKSkpKSB7CisgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZUJvb2xlYW4oKSkgewogICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2
YWx1ZSk7CiAgICAgICAgIG1faml0LnhvcjMyKFRydXN0ZWRJbW0zMigxKSwgdmFsdWUuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7CkBAIC0xNTY3LDcgKzE1NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0QnJhbmNoKE5vZGUmIG5vCiAgICAgQmxvY2tJbmRleCB0YWtlbiA9IG5vZGUudGFrZW5C
bG9ja0luZGV4KCk7CiAgICAgQmxvY2tJbmRleCBub3RUYWtlbiA9IG5vZGUubm90VGFrZW5CbG9j
a0luZGV4KCk7CiAKLSAgICBpZiAoaXNLbm93bkJvb2xlYW4obm9kZS5jaGlsZDEoKS5pbmRleCgp
KSkgeworICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkp
IHsKICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24gY29uZGl0aW9u
ID0gTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm87CiAKQEAgLTI3MjksOCArMjcyOSw2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIC8v
IEZJWE1FOiBBZGQgc3RyaW5nIHNwZWN1bGF0aW9uIGhlcmUuCiAgICAgICAgIAotICAgICAgICBi
b29sIHdhc1ByaW1pdGl2ZSA9IGlzS25vd25OdW1lcmljKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkg
fHwgaXNLbm93bkJvb2xlYW4obm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKLSAgICAgICAgCiAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzLCBvcDEpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0UGF5bG9hZCh0aGlzLCBvcDEsIGZhbHNlKTsKQEAgLTI3NDIsNyArMjc0MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIG9w
MS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGlmICh3YXNQcmltaXRpdmUpIHsKKyAgICAgICAg
aWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSAmIH4oUHJlZGljdE51
bWJlciB8IFByZWRpY3RCb29sZWFuKSkpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxVGFn
R1BSLCByZXN1bHRUYWdHUFIpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFQYXlsb2FkR1BS
LCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MTExNDkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2MCwxNiArMTU2MCw2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUxvZ2ljYWxOb3QoTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoaXNLbm93bkJvb2xlYW4obm9kZS5j
aGlsZDEoKS5pbmRleCgpKSkgewotICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCB2YWx1ZSk7Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1
bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1
bHQuZ3ByKCkpOwotICAgICAgICAKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCks
IG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmpl
Y3RPck90aGVyKCkpIHsKICAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5v
ZGUuY2hpbGQxKCksICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhl
clByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAg
ICAgICByZXR1cm47CkBAIC0xNTk5LDcgKzE1ODksMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgIH0KICAgICAKICAgICBQcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBtX2ppdC5nZXRQcmVkaWN0aW9uKG5vZGUuY2hpbGQxKCkpOwotICAgIGlmIChpc0Jv
b2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pIHx8ICFwcmVkaWN0aW9uKSB7CisgICAgaWYgKGlz
Qm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikpIHsKKyAgICAgICAgaWYgKGlzQm9vbGVhblBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsg
Ly8gRklYTUU6IFdlIGNvdWxkIHJldXNlLCBidXQgb24gc3BlY3VsYXRpb24gZmFpbCB3b3VsZCBu
ZWVkIHJlY292ZXJ5IHRvIHJlc3RvcmUgdGFnIChha2luIHRvIGFkZCkuCiAgICAgICAgIApAQCAt
MTY2NywyMSArMTY2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSYg
bm8KICAgICBCbG9ja0luZGV4IHRha2VuID0gbm9kZS50YWtlbkJsb2NrSW5kZXgoKTsKICAgICBC
bG9ja0luZGV4IG5vdFRha2VuID0gbm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKTsKICAgICAKLSAg
ICBpZiAoaXNLbm93bkJvb2xlYW4obm9kZS5jaGlsZDEoKS5pbmRleCgpKSkgewotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvOwotICAgICAgICAKLSAgICAgICAgaWYgKHRha2VuID09IChtX2Jsb2NrICsgMSkp
IHsKLSAgICAgICAgICAgIGNvbmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpaZXJvOwotICAgICAg
ICAgICAgQmxvY2tJbmRleCB0bXAgPSB0YWtlbjsKLSAgICAgICAgICAgIHRha2VuID0gbm90VGFr
ZW47Ci0gICAgICAgICAgICBub3RUYWtlbiA9IHRtcDsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgYnJhbmNoVGVzdDMyKGNvbmRpdGlvbiwgdmFsdWVHUFIsIFRydXN0ZWRJbW0zMih0cnVl
KSwgdGFrZW4pOwotICAgICAgICBqdW1wKG5vdFRha2VuKTsKLSAgICAgICAgCi0gICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKLSAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CisgICAgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CiAgICAgICAg
IGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwg
JkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgfSBlbHNlIGlmIChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewogICAgICAg
ICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4s
ICZKU0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwpAQCAtMTcwOCwxOCArMTY5NSwzMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUmIG5vCiAgICAgICAgIAogICAgICAgICBu
b1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICAgICAgCiAgICAgICAgIGJvb2wgcHJlZGljdEJvb2xlYW4gPSBpc0Jvb2xlYW5QcmVk
aWN0aW9uKG1faml0LmdldFByZWRpY3Rpb24obm9kZS5jaGlsZDEoKSkpOwogICAgIAogICAgICAg
ICBpZiAocHJlZGljdEJvb2xlYW4pIHsKLSAgICAgICAgICAgIGJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSkpLCBub3RUYWtlbik7Ci0gICAgICAgICAgICBi
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCB0YWtlbik7
Ci0KLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFs
dWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgaWYgKGlz
Qm9vbGVhblByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
IHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmRp
dGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGlmICh0YWtlbiA9PSAobV9ibG9jayArIDEpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpaZXJvOworICAgICAgICAgICAgICAgICAg
ICBCbG9ja0luZGV4IHRtcCA9IHRha2VuOworICAgICAgICAgICAgICAgICAgICB0YWtlbiA9IG5v
dFRha2VuOworICAgICAgICAgICAgICAgICAgICBub3RUYWtlbiA9IHRtcDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYnJhbmNoVGVzdDMyKGNv
bmRpdGlvbiwgdmFsdWVHUFIsIFRydXN0ZWRJbW0zMih0cnVlKSwgdGFrZW4pOworICAgICAgICAg
ICAgICAgIGp1bXAobm90VGFrZW4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBicmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSwg
bm90VGFrZW4pOworICAgICAgICAgICAgICAgIGJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHRydWUpKSksIHRha2VuKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
bm9kZS5jaGlsZDEoKSwgbV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHZhbHVlLnVzZSgpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisgICAgICAgIAogICAgICAgICAgICAgYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgdmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcigwKSkpLCBub3RUYWtlbik7CiAgICAgICAgICAgICBicmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdmFsdWVHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciwgdGFrZW4pOwogICAgIApAQCAtMjc1NCw4ICsyNzU1LDYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6
IEFkZCBzdHJpbmcgc3BlY3VsYXRpb24gaGVyZS4KICAgICAgICAgCi0gICAgICAgIGJvb2wgd2Fz
UHJpbWl0aXZlID0gaXNLbm93bk51bWVyaWMobm9kZS5jaGlsZDEoKS5pbmRleCgpKSB8fCBpc0tu
b3duQm9vbGVhbihub2RlLmNoaWxkMSgpLmluZGV4KCkpOwotICAgICAgICAKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIG9wMSk7CiAgICAgICAgIApAQCAtMjc2NCw3ICsyNzYzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAg
b3AxLnVzZSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHdhc1ByaW1pdGl2ZSkKKyAgICAgICAg
aWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSAmIH4oUHJlZGljdE51
bWJlciB8IFByZWRpY3RCb29sZWFuKSkpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwg
cmVzdWx0R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QgYWxyZWFkeVByaW1pdGl2ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMTE0OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg0LDMxICsxODQsNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjppc0tub3duTm90TnVt
YmVyKE5vCiAgICAgICAgIHx8IChub2RlLmhhc0NvbnN0YW50KCkgJiYgIWlzTnVtYmVyQ29uc3Rh
bnQobm9kZUluZGV4KSk7CiB9CiAKLWJvb2wgU3BlY3VsYXRpdmVKSVQ6OmlzS25vd25Cb29sZWFu
KE5vZGVJbmRleCBub2RlSW5kZXgpCi17Ci0gICAgTm9kZSYgbm9kZSA9IG1faml0LmdyYXBoKClb
bm9kZUluZGV4XTsKLSAgICBpZiAobm9kZS5oYXNCb29sZWFuUmVzdWx0KCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIAotICAgIGlmIChpc0Jvb2xlYW5Db25zdGFudChub2RlSW5kZXgpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICBHZW5lcmF0aW9uSW5mbyYgaW5m
byA9IG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXTsKLSAgICAKLSAgICByZXR1cm4g
aW5mby5pc0pTQm9vbGVhbigpOwotfQotCi1ib29sIFNwZWN1bGF0aXZlSklUOjppc0tub3duTm90
Qm9vbGVhbihOb2RlSW5kZXggbm9kZUluZGV4KQotewotICAgIE5vZGUmIG5vZGUgPSBtX2ppdC5n
cmFwaCgpW25vZGVJbmRleF07Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9
IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dl
bmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlcl07Ci0gICAgaWYgKG5vZGUuaGFzQ29uc3RhbnQo
KSAmJiAhdmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KS5pc0Jvb2xlYW4oKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICEoaW5mby5pc0pTQm9vbGVhbigpIHx8IGluZm8uaXNV
bmtub3duSlMoKSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihNYWNy
b0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNj
cmF0Y2gyLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiAxMTE0OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTczMCw3ICs3MzAsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNLbm93bk5vdEludGVnZXIoTm9kZUluZGV4KTsKICAgICBib29sIGlz
S25vd25Ob3ROdW1iZXIoTm9kZUluZGV4KTsKIAotICAgIGJvb2wgaXNLbm93bkJvb2xlYW4oTm9k
ZUluZGV4KTsKICAgICBib29sIGlzS25vd25Ob3RCb29sZWFuKE5vZGVJbmRleCk7CiAKICAgICBi
b29sIGlzS25vd25Ob3RDZWxsKE5vZGVJbmRleCk7Cg==
</data>
<flag name="review"
          id="137038"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>