<?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>135545</bug_id>
          
          <creation_ts>2014-08-02 15:49:30 -0700</creation_ts>
          <short_desc>The parser should generate AST nodes the var declarations with no initializers</short_desc>
          <delta_ts>2015-01-30 00:58:35 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>141070</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026496</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-02 15:49:30 -0700</bug_when>
    <thetext>Currently, when the parser is parsing a variable declaration list and sees a var declarator without an initializer, it just adds the variable name to the environment in the parsing context, but does not actually create an AST node when there is no initializer. 
Because it doesn&apos;t create an AST node, the helper function that calls this parsing method may emit an EmptyExpression AST node, or may emit a CommaNode where there aren&apos;t nodes in the CommaNode representing empty initializers.
We should emit an AST node here that represents declaring variables without initializers because it gives high fidelity type profiling the opportunity to emit code that observes this variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026497</commentid>
    <comment_count>1</comment_count>
      <attachid>235940</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-02 16:09:54 -0700</bug_when>
    <thetext>Created attachment 235940
work in progress

What do you guys think of this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026706</commentid>
    <comment_count>2</comment_count>
      <attachid>235940</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-04 15:20:04 -0700</bug_when>
    <thetext>Comment on attachment 235940
work in progress

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

I think this approach is good. Some edits are in order.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1789
&gt; +    generator.emitDebugHook(WillExecuteStatement, lineNo(), startOffset(), lineStartOffset());

This seems like it might be too much debug hook. Now, we&apos;ll have two debug hooks for the statement &quot;var x;&quot;: one for the VarStatementNode, and one for the EmptyVarExpressionNode. Probably the right thing to do is not to debug hook here, since usually only statements debug hook, and we don&apos;t stop the debugger in the middle of expressions.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1791
&gt; +    if (generator.isProfilingTypesWithHighFidelity()) {

It&apos;s nice to make this a &quot;not&quot; check followed by early return. That way, the rest of the code doesn&apos;t have to indent, and you rarely get super-indented code.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1796
&gt; +            //RegisterID* finalDest = generator.finalDestination(dst);

Nix this.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1804
&gt; +    // It&apos;s safe to return null here because this node will always be part of VarStatementNode which ignores our return value.

&quot;part of&quot; =&gt; &quot;a child node of&quot;

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:649
&gt; -    
&gt; +

Revert whitespace change please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029521</commentid>
    <comment_count>3</comment_count>
      <attachid>236691</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-15 16:43:14 -0700</bug_when>
    <thetext>Created attachment 236691
patch

Patch with Geoff&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029814</commentid>
    <comment_count>4</comment_count>
      <attachid>236691</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-18 11:39:25 -0700</bug_when>
    <thetext>Comment on attachment 236691
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029825</commentid>
    <comment_count>5</comment_count>
      <attachid>236691</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-18 12:11:55 -0700</bug_when>
    <thetext>Comment on attachment 236691
patch

Clearing flags on attachment: 236691

Committed r172717: &lt;http://trac.webkit.org/changeset/172717&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029826</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-18 12:11:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235940</attachid>
            <date>2014-08-02 16:09:54 -0700</date>
            <delta_ts>2014-08-15 16:43:14 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8061</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHJldmlzaW9uIDE3MTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3Nyw2ICsx
NzgyLDI5IEBAIHZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEVtcHR5VmFyRXhwcmVzc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK1JlZ2lzdGVySUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQoreworICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBsaW5lTm8oKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVz
V2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGlmIChMb2NhbCBsb2NhbCA9IGdlbmVyYXRv
ci5sb2NhbChtX2lkZW50KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShsb2NhbC5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVIYXNHbG9i
YWxJRCwgbnVsbHB0cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBtX2lkZW50KTsKKyAgICAgICAgICAgIC8vUmVnaXN0ZXJJRCogZmluYWxEZXN0
ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIG1faWRlbnQsIERvTm90VGhyb3dJZk5vdEZvdW5k
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSh2YWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVHZXRGcm9tU2NvcGUsICZtX2lkZW50
KTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ0V4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3Np
dGlvbigpLm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgfQorCisgICAgLy8g
SXQncyBzYWZlIHRvIHJldHVybiBudWxsIGhlcmUgYmVjYXVzZSB0aGlzIG5vZGUgd2lsbCBhbHdh
eXMgYmUgcGFydCBvZiBWYXJTdGF0ZW1lbnROb2RlIHdoaWNoIGlnbm9yZXMgb3VyIHJldHVybiB2
YWx1ZS4KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIElmRWxzZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIHN0YXRpYyBpbmxpbmUgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudE5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMTcxOTM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNiwxNCArNDE2LDE2
IEBAIHB1YmxpYzoKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFy
dCwgaW50IGVuZCkKICAgICB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHJlc3VsdDsKLSAgICAg
ICAgaWYgKCFleHByKQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX3ZtKSBFbXB0eVN0YXRl
bWVudE5vZGUobG9jYXRpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBu
ZXcgKG1fdm0pIFZhclN0YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1
bHQgPSBuZXcgKG1fdm0pIFZhclN0YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgICAg
ICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRp
b24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBFbXB0eVZhckV4cHJlc3Npb24obG9jYXRpb24sIGlk
ZW50aWZpZXIpOworICAgIH0KKwogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cmVzc2lvbiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZW5kKQogICAgIHsKICAgICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3IChtX3ZtKSBS
ZXR1cm5Ob2RlKGxvY2F0aW9uLCBleHByZXNzaW9uKTsKQEAgLTY0NCw3ICs2NDYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGFzc2lnbm1lbnRTdGFja0RlcHRoLS07CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQotICAgIAorCiAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0TmFtZShQcm9wZXJ0
eSBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJvcGVydHktPm5hbWUoKTsgfQogICAgIFByb3Bl
cnR5Tm9kZTo6VHlwZSBnZXRUeXBlKFByb3BlcnR5IHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBw
cm9wZXJ0eS0+dHlwZSgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxNzE5MzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NjU1LDYgKzY1NSwxMyBAQCBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGNvbnN0IEpT
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KKworICAgIGlubGluZSBFbXB0
eVZhckV4cHJlc3Npb246OkVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKKyAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAgIHsKKyAgICB9Cisg
ICAgCiAgICAgCiAgICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50
Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKQogICAgICAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCkBAIC04MzQsNyArODQxLDcgQEAgaW5saW5lIFJlc29sdmVOb2Rl
OjpSZXNvbHZlTm9kZShjb25zdCBKUwogICAgIHsKICAgICAgICAgQVNTRVJUKGwpOwogICAgIH0K
LSAgICAKKwogICAgIGlubGluZSBFbnVtZXJhdGlvbk5vZGU6OkVudW1lcmF0aW9uTm9kZShWTSog
dm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlY29uc3RydWN0aW9uUGF0dGVy
bk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2xl
eHByKG5ldyAodm0pIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRl
cm4sIDApKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24g
MTcxOTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjEyLDYgKzEyMTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKIAorICAgIGNsYXNzIEVtcHR5VmFyRXhwcmVz
c2lvbiA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBFbXB0
eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYp
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworCisgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CisgICAgfTsKKworCiAgICAgY2xhc3MgSWZF
bHNlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIElm
RWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlv
biwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHJldmlzaW9uIDE3MTkz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDU4LDYgKzQ1OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3MKICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IGZhbHNlOwogICAgICAgICBp
ZiAobWF0Y2goSURFTlQpKSB7CiAgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiB2YXJTdGFydCA9
IHRva2VuU3RhcnRQb3NpdGlvbigpOworICAgICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHZhclN0
YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgICAgIGlkZW50U3RhcnQgPSB2
YXJTdGFydDsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKICAgICAgICAgICAgIGxhc3RJZGVudCA9IG5hbWU7CkBAIC00NzUsNyArNDc2
LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKGluaXRpYWxpemVyLCAiRXhwZWN0ZWQgZXhwcmVzc2lvbiBhcyB0
aGUgaW50aWFsaXplciBmb3IgdGhlIHZhcmlhYmxlICciLCBuYW1lLT5pbXBsKCksICInIik7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNz
aWduUmVzb2x2ZShsb2NhdGlvbiwgKm5hbWUsIGluaXRpYWxpemVyLCB2YXJTdGFydCwgdmFyRGl2
b3QsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlRW1wdHlWYXJFeHBy
ZXNzaW9uKHZhclN0YXJ0TG9jYXRpb24sICpuYW1lKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGxhc3RJZGVudCA9IDA7CiAgICAgICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJzZURl
Y29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRvVmFyaWFibGVzKTsKQEAg
LTQ5MCwxMiArNDkyLDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3MKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGhhc0lu
aXRpYWxpemVyKSB7Ci0gICAgICAgICAgICBpZiAoIXZhckRlY2xzKQotICAgICAgICAgICAgICAg
IHZhckRlY2xzID0gbm9kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB2YXJE
ZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobG9jYXRpb24sIHZhckRlY2xzLCBub2Rl
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXZhckRlY2xzKQorICAgICAgICAgICAgdmFyRGVj
bHMgPSBub2RlOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRleHQu
Y29tYmluZUNvbW1hTm9kZXMobG9jYXRpb24sIHZhckRlY2xzLCBub2RlKTsKICAgICB9IHdoaWxl
IChtYXRjaChDT01NQSkpOwogICAgIGlmIChsYXN0SWRlbnQpCiAgICAgICAgIGxhc3RQYXR0ZXJu
ID0gY3JlYXRlQmluZGluZ1BhdHRlcm4oY29udGV4dCwgRGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcywg
Kmxhc3RJZGVudCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaAkocmV2aXNpb24gMTcxOTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw2ICsxNTgsNyBA
QCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkg
eyByZXR1cm4gQ29uZGl0aW9uYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNz
aWduUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBi
b29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9u
TmFtZVN0YXJ0KGludCwgaW50KSB7IH0K
</data>
<flag name="review"
          id="260578"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236691</attachid>
            <date>2014-08-15 16:43:14 -0700</date>
            <delta_ts>2014-08-18 12:11:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8768</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyNjU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE0LTA4LTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSBwYXJzZXIgc2hvdWxkIGdlbmVyYXRlIEFTVCBub2RlcyB0aGUgdmFyIGRlY2xhcmF0aW9u
cyB3aXRoIG5vIGluaXRpYWxpemVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBKU0MncyBwYXJzZXIgaWdub3JlcyB2YXJpYWJsZSBk
ZWNsYXJhdGlvbnMKKyAgICAgICAgdGhhdCBoYXZlIG5vIGFzc2lnbm1lbnQgaW5pdGlhbGl6ZXIg
dmFsdWUgYmVjYXVzZSBhbGwgCisgICAgICAgIHZhcmlhYmxlcyBhcmUgaW1wbGljaXRseSBhc3Np
Z25lZCB0byB1bmRlZmluZWQuIEJ1dCwgCisgICAgICAgIHR5cGUgcHJvZmlsaW5nIG5lZWRzIGFu
IEFTVCBub2RlIHRvIGJlIGdlbmVyYXRlZCBmb3IgdGhlc2UgCisgICAgICAgIGVtcHR5IHZhcmlh
YmxlIGRlY2xhcmF0aW9ucyBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIGFibGUgdG8gCisgICAgICAg
IHByb2ZpbGUgdGhlaXIgdGV4dCBsb2NhdGlvbnMgYW5kIHRvIHNlZSB0aGF0IHRoZWlyIHR5cGUg
CisgICAgICAgIGlzIHVuZGVmaW5lZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlRW1wdHlWYXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oOgorICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJlc3Npb246OkVtcHR5VmFyRXhwcmVzc2lv
bik6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW9u
TGlzdCk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKToKKwogMjAxNC0wOC0xNSAg
QnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogcmV3cml0ZSBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yIHRvIGJlIG1vZHVsYXIgYW5k
IHRlc3RhYmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzI2NTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3ODIsNiArMTc4MiwyNyBAQCB2b2lkIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiB9CiAKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVZhckV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitSZWdpc3RlcklEKiBFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3sKKyAgICBpZiAo
IWdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbCht
X2lkZW50KSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KGxvY2FsLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZUhhc0dsb2JhbElELCBudWxscHRy
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgbV9pZGVudCwgRG9O
b3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dp
dGhIaWdoRmlkZWxpdHkodmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlR2V0RnJvbVNj
b3BlLCAmbV9pZGVudCk7CisgICAgfQorCisgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgSlNUZXh0UG9zaXRpb24oLTEs
IHBvc2l0aW9uKCkub2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwgLTEpKTsKKworICAgIC8vIEl0
J3Mgc2FmZSB0byByZXR1cm4gbnVsbCBoZXJlIGJlY2F1c2UgdGhpcyBub2RlIHdpbGwgYWx3YXlz
IGJlIGEgY2hpbGQgbm9kZSBvZiBWYXJTdGF0ZW1lbnROb2RlIHdoaWNoIGlnbm9yZXMgb3VyIHJl
dHVybiB2YWx1ZS4KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIElmRWxzZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIHN0YXRpYyBpbmxpbmUgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50
KFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudE5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMTcyNjU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNiwxNCAr
NDE2LDE2IEBAIHB1YmxpYzoKICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGlu
dCBzdGFydCwgaW50IGVuZCkKICAgICB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHJlc3VsdDsK
LSAgICAgICAgaWYgKCFleHByKQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX3ZtKSBFbXB0
eVN0YXRlbWVudE5vZGUobG9jYXRpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1
bHQgPSBuZXcgKG1fdm0pIFZhclN0YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAg
ICByZXN1bHQgPSBuZXcgKG1fdm0pIFZhclN0YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOwog
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5zdGFydE9mZnNldCwg
bG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IChtX3ZtKSBFbXB0eVZhckV4cHJlc3Npb24obG9jYXRp
b24sIGlkZW50aWZpZXIpOworICAgIH0KKwogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVy
blN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcmVzc2lvbiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3ICht
X3ZtKSBSZXR1cm5Ob2RlKGxvY2F0aW9uLCBleHByZXNzaW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxNzI2
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNjU1LDYgKzY1NSwxMiBAQCBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJl
c29sdmVOb2RlKGNvbnN0IEpTCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0K
KworICAgIGlubGluZSBFbXB0eVZhckV4cHJlc3Npb246OkVtcHR5VmFyRXhwcmVzc2lvbihjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICAgICAgLCBtX2lkZW50KGlkZW50
KQorICAgIHsKKyAgICB9CiAgICAgCiAgICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlv
biwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKQogICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAxNzI2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMTIsNiArMTIxMiwxNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwogCisg
ICAgY2xhc3MgRW1wdHlWYXJFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAg
ICB9OworCisKICAgICBjbGFzcyBJZkVsc2VOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgSWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1l
bnROb2RlKiBlbHNlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAkocmV2aXNpb24gMTcyNjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgsNiArNDU4LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBib29sIGhhc0luaXRpYWxp
emVyID0gZmFsc2U7CiAgICAgICAgIGlmIChtYXRjaChJREVOVCkpIHsKICAgICAgICAgICAgIEpT
VGV4dFBvc2l0aW9uIHZhclN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgICAgICAg
ICBKU1Rva2VuTG9jYXRpb24gdmFyU3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAg
ICAgICAgICAgaWRlbnRTdGFydCA9IHZhclN0YXJ0OwogICAgICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogbmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICAgICAgbGFzdElkZW50
ID0gbmFtZTsKQEAgLTQ3NSw3ICs0NzYsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzCiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIsICJF
eHBlY3RlZCBleHByZXNzaW9uIGFzIHRoZSBpbnRpYWxpemVyIGZvciB0aGUgdmFyaWFibGUgJyIs
IG5hbWUtPmltcGwoKSwgIiciKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBu
b2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlh
bGl6ZXIsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBub2RlID0gY29u
dGV4dC5jcmVhdGVFbXB0eVZhckV4cHJlc3Npb24odmFyU3RhcnRMb2NhdGlvbiwgKm5hbWUpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGFzdElkZW50ID0gMDsKICAgICAgICAgICAg
IGF1dG8gcGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIERlY29u
c3RydWN0VG9WYXJpYWJsZXMpOwpAQCAtNDkwLDEyICs0OTIsMTAgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKLSAgICAgICAgICAgIGlmICghdmFy
RGVjbHMpCi0gICAgICAgICAgICAgICAgdmFyRGVjbHMgPSBub2RlOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHZhckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFOb2Rlcyhs
b2NhdGlvbiwgdmFyRGVjbHMsIG5vZGUpOwotICAgICAgICB9CisgICAgICAgIGlmICghdmFyRGVj
bHMpCisgICAgICAgICAgICB2YXJEZWNscyA9IG5vZGU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHZhckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFOb2Rlcyhsb2NhdGlvbiwgdmFyRGVj
bHMsIG5vZGUpOwogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAgICAgaWYgKGxhc3RJZGVu
dCkKICAgICAgICAgbGFzdFBhdHRlcm4gPSBjcmVhdGVCaW5kaW5nUGF0dGVybihjb250ZXh0LCBE
ZWNvbnN0cnVjdFRvVmFyaWFibGVzLCAqbGFzdElkZW50LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxNzI2NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU4LDYgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlv
bmFsRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eVZhckV4
cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0
dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIGlu
dCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsg
fQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>