<?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>153779</bug_id>
          
          <creation_ts>2016-02-01 16:32:38 -0800</creation_ts>
          <short_desc>Fix authentication with NetworkSession</short_desc>
          <delta_ts>2016-02-02 15:43: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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1161117</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-01 16:32:38 -0800</bug_when>
    <thetext>Fix authentication with NetworkSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161145</commentid>
    <comment_count>1</comment_count>
      <attachid>270456</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-01 17:21:53 -0800</bug_when>
    <thetext>Created attachment 270456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161421</commentid>
    <comment_count>2</comment_count>
      <attachid>270456</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-02-02 14:56:54 -0800</bug_when>
    <thetext>Comment on attachment 270456
Patch

This looks good.

I am concerned about the footprint ramifications of creating two NSURLSessions per SessionID as opposed to one. If a user has many private browsing tabs, that&apos;s almost doubling their NetworkProcess memory footprint.

PROBABLY not a big deal... unless it IS a big deal. In which case we need to know.

I asked Alex to try to gather some footprint metrics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161426</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-02 15:11:54 -0800</bug_when>
    <thetext>I estimate each unused NSURLSession to use about 3 KB of memory based on the following data:

// clang++ memtest.mm -framework Foundation &amp;&amp; ./a.out

#import &lt;Foundation/NSOperation.h&gt;
#import &lt;Foundation/NSURL.h&gt;
#import &lt;Foundation/NSURLCredential.h&gt;
#import &lt;Foundation/NSURLSession.h&gt;

int main() {
	/*
	numSessions  memory footprint
	0              0.69 MB
	100            1.4  MB
	1000           4.3  MB
	10000         33.8  MB
	100000       329.6  MB
	*/
    const int numSessions = 100000;
    for (int i=0;i&lt;numSessions;i++) {
        NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration ephemeralSessionConfiguration] delegate:nil delegateQueue:[NSOperationQueue mainQueue]];
        [session retain];
	}
	while(1);
    return 0;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161429</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-02-02 15:14:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I estimate each unused NSURLSession to use about 3 KB of memory based on the
&gt; following data:
&gt; 
&gt; // clang++ memtest.mm -framework Foundation &amp;&amp; ./a.out
&gt; 
&gt; #import &lt;Foundation/NSOperation.h&gt;
&gt; #import &lt;Foundation/NSURL.h&gt;
&gt; #import &lt;Foundation/NSURLCredential.h&gt;
&gt; #import &lt;Foundation/NSURLSession.h&gt;
&gt; 
&gt; int main() {
&gt; 	/*
&gt; 	numSessions  memory footprint
&gt; 	0              0.69 MB
&gt; 	100            1.4  MB
&gt; 	1000           4.3  MB
&gt; 	10000         33.8  MB
&gt; 	100000       329.6  MB
&gt; 	*/
&gt;     const int numSessions = 100000;
&gt;     for (int i=0;i&lt;numSessions;i++) {
&gt;         NSURLSession *session = [NSURLSession
&gt; sessionWithConfiguration:[NSURLSessionConfiguration
&gt; ephemeralSessionConfiguration] delegate:nil delegateQueue:[NSOperationQueue
&gt; mainQueue]];
&gt;         [session retain];
&gt; 	}
&gt; 	while(1);
&gt;     return 0;
&gt; }

I don&apos;t know what the threshold is for &quot;too big&quot;, but that&apos;s definitely under it.

R+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161440</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-02 15:43:06 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/196034</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270456</attachid>
            <date>2016-02-01 17:21:53 -0800</date>
            <delta_ts>2016-02-02 15:14:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153779-20160201172129.patch</filename>
            <type>text/plain</type>
            <size>11196</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTk4NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE2LTAyLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IGF1dGhl
bnRpY2F0aW9uIHdpdGggTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZml4ZXMgbWFueSB0ZXN0cywgaW5jbHVkaW5nIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLWF1dGhvcml6YXRpb24uaHRtbC4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2FkKToKKyAgICAgICAgTmV0d29ya2luZ0NvbnRl
eHRzIGFyZSBub3QgdXNlZCB3aXRoIE5ldHdvcmtTZXNzaW9uLiAgTmV0d29ya1Nlc3Npb24gaXMg
dXNlZCBpbnN0ZWFkLgorICAgICAgICBQYXNzIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMgdG8gdGhl
IE5ldHdvcmtMb2FkIHNvIGl0IGtub3dzIHdoZXRoZXIgdG8gdXNlIGEgc2Vzc2lvbiB3aXRoIGNy
ZWRlbnRpYWwgc3RvcmFnZSBvciBub3QuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpk
aWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgQWx3YXlzIGNhbGwgY29udGludWVDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIGJlY2F1c2Ugd2UgbWlnaHQgbmVlZCBjcmVk
ZW50aWFscyBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgor
ICAgICAgICBSZWplY3QgdGhlIHByb3RlY3Rpb24gc3BhY2UgaWYgd2UgY2Fubm90IGF1dGhlbnRp
Y2F0ZSBhZ2FpbnN0IHRoaXMgcHJvdGVjdGlvbiBzcGFjZS4KKyAgICAgICAgSWYgdGhlIHByb3Rl
Y3Rpb24gc3BhY2UgaXMgbm90IHBhc3N3b3JkLWJhc2VkIChzdWNoIGFzIFNlcnZlclRydXN0RXZh
bHVhdGlvblJlcXVlc3RlZCkgYW5kIHdlIGNhbiBhdXRoZW50aWNhdGUgYWdhaW5zdCB0aGlzIHBy
b3RlY3Rpb24gc3BhY2UsCisgICAgICAgIHRoZW4gcGVyZm9ybSBkZWZhdWx0IGhhbmRsaW5nIGlu
c3RlYWQgb2YgYXNraW5nIHRoZSBVSSBwcm9jZXNzIGZvciBhIHBhc3N3b3JkLCB3aGljaCB3b3Vs
ZG4ndCBtZWFuIGFueXRoaW5nLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAg
VXNlIGEgTlNVUkxTZXNzaW9uIHdpdGggY29uZmlndXJhdGlvbi5VUkxDcmVkZW50aWFsU3RvcmFn
ZSA9IG5pbCBidXQgd2l0aCB0aGUgc2FtZSBjb29raWUgc3RvcmFnZSBmb3IgcmVxdWVzdHMgd2l0
aG91dCBjcmVkZW50aWFscy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29y
a1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrRm9ySWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp0YWtlRG93bmxvYWRJRCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZSk6CisgICAgICAgIEFsd2F5cyBzZW5kIGEgcmVwbHkgbWVzc2FnZSBzbyB3ZSBj
YW4gYWx3YXlzIGRvIHRoZSBjYWxsYmFja3Mgb2YgTlNVUkxTZXNzaW9uIGRlbGVnYXRlcy4KKwog
MjAxNi0wMi0wMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gUmVtb3ZlIHNvbWUgbW9yZSBfX2hhc19pbmNsdWRlIGd1YXJkcwpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMTk1
NzgxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBOZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmIGNsaWVudCwgY29u
c3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCisjaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCiAgICAgLCBtX25ldHdvcmtpbmdDb250ZXh0KFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjpjcmVhdGUocGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkpCisjZW5kaWYKICAgICAsIG1fY3VycmVudFJlcXVl
c3QocGFyYW1ldGVycy5yZXF1ZXN0KQogewogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9u
KHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkgewotICAgICAgICBtX3Rhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtEYXRhVGFzaz4oKm5ldHdvcmtTZXNzaW9uLCAqdGhpcywgcGFyYW1ldGVycy5y
ZXF1ZXN0KTsKKyAgICAgICAgbV90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRGF0YVRh
c2s+KCpuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVy
cy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmRlZmVy
c0xvYWRpbmcpCiAgICAgICAgICAgICBtX3Rhc2stPnJlc3VtZSgpOwogICAgIH0gZWxzZQpAQCAt
MTkzLDIxICsxOTUsMjEgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShj
bwogICAgIC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0Zm9ybS1sZXZl
bCBpZiByZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgogICAgIGlmIChjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZAog
ICAgICAgICAmJiAhTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkhhbmRsZUhUVFBTU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywgQ3Jl
ZGVudGlhbCgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCBDcmVkZW50aWFsKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyOworICAgIG1fY2hhbGxlbmdlID0gY2hhbGxlbmdlOworCiAg
ICAgaWYgKG1fY2xpZW50LmlzU3luY2hyb25vdXMoKSkgewogICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFzayB0aGUgV2ViUHJvY2VzcyBsaWtlIHRoZSBhc3luY2hyb25vdXMgY2FzZSBiZWxv
dyBkb2VzLgogICAgICAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSBpbXBvc3NpYmxlIGFzIHRoZSBX
ZWJQcm9jZXNzIGlzIGJsb2NrZWQgd2FpdGluZyBvbiB0aGlzIHN5bmNocm9ub3VzIGxvYWQuCiAg
ICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBjYW4ganVtcCBzdHJhaWdodCB0byB0aGUg
VUkgcHJvY2VzcyB0byByZXNvbHZlIHRoaXMuCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcs
IENyZWRlbnRpYWwoKSk7CisgICAgICAgIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZSh0cnVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKLSAgICBtX2NoYWxs
ZW5nZSA9IGNoYWxsZW5nZTsKLSAgICBtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlQXN5bmMoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9jbGllbnQuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZUFzeW5jKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTMyMiw2ICsz
MjQsMTEgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVDYW5BdXRoZW50aWNhdAogICAgIEFT
U0VSVChtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2UsIENyZWRlbnRpYWwoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX2NoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRs
aW5nLCBDcmVkZW50aWFsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAxOTU3ODEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsNyArMTIyLDYgQEAgcHJpdmF0ZToKIAogICAgIE5ldHdvcmtMb2FkQ2xp
ZW50JiBtX2NsaWVudDsKICAgICBjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0
ZXJzOwotICAgIFJlZlB0cjxSZW1vdGVOZXR3b3JraW5nQ29udGV4dD4gbV9uZXR3b3JraW5nQ29u
dGV4dDsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrRGF0YVRhc2s+IG1fdGFzazsKICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBtX2NoYWxsZW5nZTsKQEAgLTEzMCw2ICsxMjksNyBAQCBwcml2YXRlOgogICAgIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogICAgIFJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXIgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogI2Vsc2UK
KyAgICBSZWZQdHI8UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX2hhbmRsZTsKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgJKHJldmlzaW9uIDE5NTc4MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgT0JKQ19DTEFT
UyBXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU7CiAKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZVR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTg0LDcgKzg1
LDcgQEAgcHVibGljOgogY2xhc3MgTmV0d29ya0RhdGFUYXNrIHsKICAgICBmcmllbmQgY2xhc3Mg
TmV0d29ya1Nlc3Npb247CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTmV0d29ya0RhdGFUYXNrKE5l
dHdvcmtTZXNzaW9uJiwgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgZXhwbGljaXQgTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtT
ZXNzaW9uJiwgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMpOwogCiAgICAgdm9pZCBzdXNw
ZW5kKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKQEAgLTE0Niw3ICsxNDcsOCBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFU
YXNrKj4gbV9kYXRhVGFza01hcDsKICAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFzazo6VGFza0lk
ZW50aWZpZXIsIERvd25sb2FkSUQ+IG1fZG93bmxvYWRNYXA7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJldGFpblB0cjxO
U1VSTFNlc3Npb24+IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICBSZXRhaW5Q
dHI8TlNVUkxTZXNzaW9uPiBtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7CiAgICAg
UmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gbV9zZXNzaW9uRGVsZWdhdGU7CiAj
ZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDE5NTc4MSkKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMywxMiArMjMzLDE1IEBAIE5ldHdvcmtTZXNzaW9uOjpO
ZXR3b3JrU2Vzc2lvbihUeXBlIHR5cGUKICAgICAgICAgaWYgKENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYgc3RvcmFnZSA9IHN0b3JhZ2VTZXNzaW9uLT5jb29raWVTdG9yYWdlKCkuZ2V0KCkpCiAgICAg
ICAgICAgICBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlID0gW1tbTlNIVFRQQ29va2ll
U3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpzdG9yYWdlXSBhdXRv
cmVsZWFzZV07CiAgICAgfQotICAgIG1fc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldp
dGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG1f
c2Vzc2lvbkRlbGVnYXRlLmdldCgpKSBkZWxlZ2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1h
aW5RdWV1ZV1dOworICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSA9IFtOU1VSTFNl
c3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3Rh
dGljX2Nhc3Q8aWQ+KG1fc2Vzc2lvbkRlbGVnYXRlLmdldCgpKSBkZWxlZ2F0ZVF1ZXVlOltOU09w
ZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOworICAgIGNvbmZpZ3VyYXRpb24uVVJMQ3JlZGVudGlh
bFN0b3JhZ2UgPSBuaWw7CisgICAgbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlID0g
W05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBkZWxl
Z2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVl
dWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiB9CiAKIE5ldHdvcmtTZXNzaW9uOjp+
TmV0d29ya1Nlc3Npb24oKQogewotICAgIFttX3Nlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07
CisgICAgW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBpbnZhbGlkYXRlQW5kQ2FuY2Vs
XTsKKyAgICBbbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlIGludmFsaWRhdGVBbmRD
YW5jZWxdOwogfQogCiBOZXR3b3JrRGF0YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpkYXRhVGFza0Zv
cklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmll
cikKQEAgLTI3MCw3ICsyNzMsNyBAQCBEb3dubG9hZElEIE5ldHdvcmtTZXNzaW9uOjp0YWtlRG93
bmxvYWRJCiAgICAgcmV0dXJuIGRvd25sb2FkSUQ7CiB9CiAKLU5ldHdvcmtEYXRhVGFzazo6TmV0
d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrU2Vzc2lvblRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0
aENyZWRlbnRpYWxzKQorTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzKQogICAgIDogbV9zZXNzaW9uKHNl
c3Npb24pCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CkBAIC0yODAsOCArMjgzLDExIEBAIE5l
dHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmsKICAgICBtX3VzZXIgPSByZXF1
ZXN0LnVybCgpLnVzZXIoKTsKICAgICBtX3Bhc3N3b3JkID0gcmVxdWVzdC51cmwoKS5wYXNzKCk7
CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwotICAgIAotICAgIG1fdGFzayA9IFtt
X3Nlc3Npb24ubV9zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6VXBkYXRlSFRUUEJvZHkpXTsKKworICAgIGlmIChzdG9yZWRDcmVkZW50aWFs
cyA9PSBXZWJDb3JlOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQorICAgICAgICBtX3Rhc2sgPSBb
bV9zZXNzaW9uLm1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBkYXRhVGFza1dpdGhSZXF1
ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OlVwZGF0ZUhUVFBCb2R5KV07CisgICAg
ZWxzZQorICAgICAgICBtX3Rhc2sgPSBbbV9zZXNzaW9uLm1fc2Vzc2lvbldpdGhvdXRDcmVkZW50
aWFsU3RvcmFnZSBkYXRhVGFza1dpdGhSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNv
cmU6OlVwZGF0ZUhUVFBCb2R5KV07CiAgICAgCiAgICAgQVNTRVJUKCFtX3Nlc3Npb24ubV9kYXRh
VGFza01hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcigpKSk7CiAgICAgbV9zZXNzaW9uLm1fZGF0
YVRhc2tNYXAuYWRkKHRhc2tJZGVudGlmaWVyKCksIHRoaXMpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAxOTU3ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsMTAgKzIwNyw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICNpZiBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcGFjZSkKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYm9vbCByZXN1bHQgPSBtX2NvcmVMb2FkZXItPmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKTsKKyAgICBib29sIHJlc3VsdCA9IG1f
Y29yZUxvYWRlciA/IG1fY29yZUxvYWRlci0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZShwcm90ZWN0aW9uU3BhY2UpIDogZmFsc2U7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShyZXN1bHQpKTsKIH0K
</data>
<flag name="review"
          id="295290"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>