<?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>62308</bug_id>
          
          <creation_ts>2011-06-08 12:42:45 -0700</creation_ts>
          <short_desc>CachedResourceLoader doesn&apos;t need to know about CachedResourceRequest</short_desc>
          <delta_ts>2011-06-08 15:50:10 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>417419</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-06-08 12:42:45 -0700</bug_when>
    <thetext>Currently, CachedResourceLoader only uses CachedResourceRequests to keep them alive (it holds the primary RefPtr) and to cancel them (CachedResourceLoader::cancelRequests()).  It appears cancelRequests() isn&apos;t strictly necessary (DocumentLoader cancels all its subresources, which accomplishes the same thing), and I can&apos;t think of a good reason not to let CachedResource own the CachedResourceRequest (especially since the same CachedResourceRequest may be used in multiple Document).

Patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417421</commentid>
    <comment_count>1</comment_count>
      <attachid>96462</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-06-08 12:46:07 -0700</bug_when>
    <thetext>Created attachment 96462
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417426</commentid>
    <comment_count>2</comment_count>
      <attachid>96462</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-08 12:50:34 -0700</bug_when>
    <thetext>Comment on attachment 96462
patch

At first glance, this patch looks very cool.  I need to study it in more detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417431</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-06-08 12:53:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 96462 [details])
&gt; At first glance, this patch looks very cool.  I need to study it in more detail.

The main thing I&apos;m concerned about is that I&apos;m removing CachedResourceLoader::m_loadDoneActionTimer.  It appears it&apos;s not doing anything on trunk (since loadDone() shouldn&apos;t be getting called with a null CachedResourceRequest anymore), but it&apos;s not 100% clear to me whether or not it should be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417436</commentid>
    <comment_count>4</comment_count>
      <attachid>96462</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-08 12:58:14 -0700</bug_when>
    <thetext>Comment on attachment 96462
patch

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:-604
&gt; -    for (unsigned i = 0; i &lt; requestsToCancel.size(); ++i)
&gt; -        requestsToCancel[i]-&gt;didFail(true);

Where did this didFail call go?  It looks like we&apos;re supposed to call didFail on requests when the Document dies.

&gt; Source/WebCore/loader/cache/CachedResourceRequest.cpp:131
&gt; -        return 0;
&gt; +        return PassOwnPtr&lt;CachedResourceRequest&gt;();

return nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417453</commentid>
    <comment_count>5</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-06-08 13:15:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 96462 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96462&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:-604
&gt; &gt; -    for (unsigned i = 0; i &lt; requestsToCancel.size(); ++i)
&gt; &gt; -        requestsToCancel[i]-&gt;didFail(true);
&gt; 
&gt; Where did this didFail call go?  It looks like we&apos;re supposed to call didFail on requests when the Document dies.

Currently, we cancel CachedResourceRequests and sever their connection from their SubresourceLoader, but don&apos;t actually cancel the SubresourceLoader until later.  This merges the two cancellation paths.

My attempt at a trac stacktrace (tractrace?):

http://trac.webkit.org/browser/trunk/Source/WebCore/loader/SubresourceLoader.cpp#L230
http://trac.webkit.org/browser/trunk/Source/WebCore/loader/ResourceLoader.cpp#L363
http://trac.webkit.org/browser/trunk/Source/WebCore/loader/DocumentLoader.cpp#L78
http://trac.webkit.org/browser/trunk/Source/WebCore/loader/DocumentLoader.cpp#L756
http://trac.webkit.org/browser/trunk/Source/WebCore/loader/DocumentLoader.cpp#L262


&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceRequest.cpp:131
&gt; &gt; -        return 0;
&gt; &gt; +        return PassOwnPtr&lt;CachedResourceRequest&gt;();
&gt; 
&gt; return nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417471</commentid>
    <comment_count>6</comment_count>
      <attachid>96462</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-08 13:41:58 -0700</bug_when>
    <thetext>Comment on attachment 96462
patch

Ok.  I&apos;m sold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417557</commentid>
    <comment_count>7</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-06-08 14:46:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/88391</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417621</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-08 15:45:31 -0700</bug_when>
    <thetext>I feel that these classes may be getting progressively misnamed. When looking at names alone, of course a loader _should_ know about its request! I&apos;m not commenting on this particular patch here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417624</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-08 15:46:53 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I feel that these classes may be getting progressively misnamed. When looking at names alone, of course a loader _should_ know about its request! I&apos;m not commenting on this particular patch here.

Do you think the problem is that CachedResourceLoader shouldn&apos;t be called a &quot;loader&quot; or that CachedResourceRequest shouldn&apos;t be called a &quot;request&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417629</commentid>
    <comment_count>10</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-06-08 15:50:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; I feel that these classes may be getting progressively misnamed. When looking at names alone, of course a loader _should_ know about its request! I&apos;m not commenting on this particular patch here.
&gt; 
&gt; Do you think the problem is that CachedResourceLoader shouldn&apos;t be called a &quot;loader&quot; or that CachedResourceRequest shouldn&apos;t be called a &quot;request&quot; ?

I&apos;ve actually been wondering about that too (CachedResourceLoader specifically).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96462</attachid>
            <date>2011-06-08 12:46:07 -0700</date>
            <delta_ts>2011-06-08 13:41:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>crr.txt</filename>
            <type>text/plain</type>
            <size>14500</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MTk3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDYtMDYgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYWxsIGtub3dsZWRnZSBvZiBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3RzIGZyb20KKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIuIFRoaXMgcHV0cyB0
aGUgZnVsbCBidXJkZW4gb2YKKyAgICAgICAgY2FuY2VsaW5nIHRoZXNlIHJlcXVlc3RzIG9uIERv
Y3VtZW50TG9hZGVyICh2aWEKKyAgICAgICAgU3VicmVzb3VyY2VMb2FkZXIpLCBhbmQgbWFrZXMg
YSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QKKyAgICAgICAgYW4gT3duUHRyIGluIENhY2hlZFJlc291
cmNlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjMwOAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpDYWNo
ZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c3RvcExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6fkNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNh
Y2hlZFJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6On5DYWNoZWRSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
UmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZVJlcXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjplbmQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaDoKKwogMjAxMS0wNi0wNiAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDg3ODA3KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDkgKzQz
MCw2IEBACiAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVn
LmNnaT9pZD0xMDUzNwogICAgICAgICBkb2MtPnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkNvbXBs
ZXRlKTsKIAotICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNl
TG9hZGVyID0gZG9jLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKQotICAgICAgICAgICAgY2FjaGVk
UmVzb3VyY2VMb2FkZXItPmNhbmNlbFJlcXVlc3RzKCk7Ci0KICNpZiBFTkFCTEUoREFUQUJBU0Up
CiAgICAgICAgIGRvYy0+c3RvcERhdGFiYXNlcygwKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiA4NzgwNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDYgQEAKIENhY2hlZFJl
c291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKLSAgICAs
IG1fbG9hZERvbmVBY3Rpb25UaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRE
b25lQWN0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKICAgICAs
IG1fbG9hZEZpbmlzaGluZyhmYWxzZSkKICAgICAsIG1fYWxsb3dTdGFsZVJlc291cmNlcyhmYWxz
ZSkKQEAgLTk3LDcgKzk2LDYgQEAKIHsKICAgICBtX2RvY3VtZW50ID0gMDsKIAotICAgIGNhbmNl
bFJlcXVlc3RzKCk7CiAgICAgY2xlYXJQcmVsb2FkcygpOwogICAgIERvY3VtZW50UmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChE
b2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQpAQCAtNTU0LDU2ICs1NTIsMjAgQEAKICAgICBtX2RvY3Vt
ZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZS0+dXJsKCkpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlTG9hZGVyOjpsb2FkU3RhcnRlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFBhc3NS
ZWZQdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KQordm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6bG9hZERvbmUoKQogewotICAgIEFTU0VSVChyZXF1ZXN0KTsKLSAgICBpbmNyZW1l
bnRSZXF1ZXN0Q291bnQocmVzb3VyY2UpOwotICAgIG1fcmVxdWVzdHMuYWRkKHJlcXVlc3QpOwot
fQotCi12b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoZWRSZXNvdXJjZVJl
cXVlc3QqIHJlcXVlc3QpCi17CiAgICAgbV9sb2FkRmluaXNoaW5nID0gZmFsc2U7Ci0gICAgUmVm
UHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gcHJvdGVjdChyZXF1ZXN0KTsKLSAgICBpZiAocmVx
dWVzdCkKLSAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUocmVxdWVzdCk7CiAgICAgaWYgKGZyYW1l
KCkpCiAgICAgICAgIGZyYW1lKCktPmxvYWRlcigpLT5sb2FkRG9uZSgpOwotCi0gICAgaWYgKCFy
ZXF1ZXN0KSB7Ci0gICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IHBhc3NlZCB0byB0aGlzIGZ1bmN0
aW9uIGlzIG51bGwsIGxvYWREb25lIGZpbmlzaGVkIHN5bmNocm9ub3VzbHkgZnJvbSB3aGVuCi0g
ICAgICAgIC8vIHRoZSBsb2FkIHdhcyBzdGFydGVkLCBzbyB3ZSB3YW50IHRvIGtpY2sgb2ZmIG91
ciBuZXh0IHNldCBvZiBsb2FkcyAodmlhIGNoZWNrRm9yUGVuZGluZ1ByZWxvYWRzCi0gICAgICAg
IC8vIGFuZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cykgYXN5bmNocm9ub3VzbHkuCi0gICAgICAgIG1f
bG9hZERvbmVBY3Rpb25UaW1lci5zdGFydE9uZVNob3QoMCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmxvYWREb25lQWN0aW9uVGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJj
ZUxvYWRlcj4qKQotewotICAgIHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKLX0KLQogdm9pZCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cGVyZm9ybVBvc3RMb2FkQWN0aW9ucygpCiB7CiAgICAgY2hl
Y2tGb3JQZW5kaW5nUHJlbG9hZHMoKTsKICAgICByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2Vy
dmVQZW5kaW5nUmVxdWVzdHMoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsUmVxdWVzdHMoKQotewotICAgIGNsZWFyUGVuZGluZ1ByZWxvYWRzKCk7Ci0gICAgVmVjdG9y
PENhY2hlZFJlc291cmNlUmVxdWVzdCosIDI1Nj4gcmVxdWVzdHNUb0NhbmNlbDsKLSAgICBSZXF1
ZXN0U2V0OjppdGVyYXRvciBlbmQgPSBtX3JlcXVlc3RzLmVuZCgpOwotICAgIGZvciAoUmVxdWVz
dFNldDo6aXRlcmF0b3IgaSA9IG1fcmVxdWVzdHMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKLSAg
ICAgICAgcmVxdWVzdHNUb0NhbmNlbC5hcHBlbmQoKCppKS5nZXQoKSk7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmVxdWVzdHNUb0NhbmNlbC5zaXplKCk7ICsraSkKLSAgICAgICAg
cmVxdWVzdHNUb0NhbmNlbFtpXS0+ZGlkRmFpbCh0cnVlKTsKLX0KLQogdm9pZCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6bm90aWZ5TG9hZGVkRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKIHsKICAgICBpZiAoIXJlc291cmNlIHx8ICFmcmFtZSgpIHx8IHJlc291cmNlLT5z
dGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDg3
ODA3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkuaCIKLSNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
QEAgLTQyLDcgKzQxLDYgQEAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNo
ZWRGb250OwogY2xhc3MgQ2FjaGVkSW1hZ2U7Ci1jbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBDYWNoZWRYU0xTdHlsZVNoZWV0OwogY2xhc3Mg
RG9jdW1lbnQ7CkBAIC05MiwxMCArOTAsOCBAQAogCiAgICAgdm9pZCByZW1vdmVDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSopIGNvbnN0OwogCi0gICAgdm9pZCBsb2FkU3RhcnRlZChDYWNo
ZWRSZXNvdXJjZSosIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Pik7CiAgICAgdm9p
ZCBsb2FkRmluaXNoaW5nKCkgeyBtX2xvYWRGaW5pc2hpbmcgPSB0cnVlOyB9Ci0gICAgdm9pZCBs
b2FkRG9uZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QqKTsKLSAgICB2b2lkIGNhbmNlbFJlcXVlc3Rz
KCk7CisgICAgdm9pZCBsb2FkRG9uZSgpOwogICAgIAogICAgIHZvaWQgaW5jcmVtZW50UmVxdWVz
dENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0
Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKQEAgLTExOSwxNiArMTE1LDExIEBACiAgICAg
dm9pZCBub3RpZnlMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBi
b29sIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmLCBib29sIGZv
clByZWxvYWQgPSBmYWxzZSk7CiAKLSAgICB2b2lkIGxvYWREb25lQWN0aW9uVGltZXJGaXJlZChU
aW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4qKTsKLQogICAgIHZvaWQgcGVyZm9ybVBvc3RMb2Fk
QWN0aW9ucygpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CiAg
ICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CiAgICAg
RG9jdW1lbnQqIG1fZG9jdW1lbnQ7Ci0KLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPENhY2hl
ZFJlc291cmNlUmVxdWVzdD4gPiBSZXF1ZXN0U2V0OwotICAgIFJlcXVlc3RTZXQgbV9yZXF1ZXN0
czsKICAgICAKICAgICBpbnQgbV9yZXF1ZXN0Q291bnQ7CiAgICAgCkBAIC0xMzksOCArMTMwLDYg
QEAKICAgICAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICB9OwogICAgIERlcXVlPFBlbmRpbmdQ
cmVsb2FkPiBtX3BlbmRpbmdQcmVsb2FkczsKLQotICAgIFRpbWVyPENhY2hlZFJlc291cmNlTG9h
ZGVyPiBtX2xvYWREb25lQWN0aW9uVGltZXI7CiAgICAgCiAgICAgLy8yOSBiaXRzIGxlZnQKICAg
ICBib29sIG1fYXV0b0xvYWRJbWFnZXMgOiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA4NzgwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDYgQEAKIAogQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlKQogICAgIDogbV9yZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCkKLSAgICAsIG1fcmVxdWVzdCgwKQogICAgICwgbV9sb2FkUHJpb3JpdHko
ZGVmYXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKHR5cGUpKQogICAgICwgbV9yZXNwb25zZVRp
bWVzdGFtcChjdXJyZW50VGltZSgpKQogICAgICwgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUoMCkK
QEAgLTEzNiw5ICsxMzUsMTEgQEAKIHsKICAgICBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Mg
PSBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOwogICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAg
UmVmUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IENhY2hlZFJlc291cmNlUmVx
dWVzdDo6bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgdGhpcywgaW5jcmVtZW50YWwsIHNlY3Vy
aXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOwotICAgIGlmIChyZXF1ZXN0KQot
ICAgICAgICBjYWNoZWRSZXNvdXJjZUxvYWRlci0+bG9hZFN0YXJ0ZWQodGhpcywgcmVxdWVzdCk7
CisgICAgbV9yZXF1ZXN0ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKGNhY2hlZFJlc291
cmNlTG9hZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNl
TG9hZENhbGxiYWNrcyk7CisgICAgaWYgKG1fcmVxdWVzdCkgeworICAgICAgICBtX3N0YXR1cyA9
IFBlbmRpbmc7CisgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0
Q291bnQodGhpcyk7CisgICAgfQogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eSgpCkBAIC0yNTYsMTcgKzI1NywxNiBAQAogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
bV9jYWNoZWRNZXRhZGF0YS5nZXQoKTsKIH0KLQotdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0UmVx
dWVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QpCisgICAgCit2b2lkIENhY2hlZFJl
c291cmNlOjpzdG9wTG9hZGluZygpCiB7Ci0gICAgaWYgKHJlcXVlc3QgJiYgIW1fcmVxdWVzdCkK
LSAgICAgICAgbV9zdGF0dXMgPSBQZW5kaW5nOwotICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7Cisg
ICAgQVNTRVJUKG1fcmVxdWVzdCk7ICAgICAgICAgICAgCisgICAgbV9yZXF1ZXN0LmNsZWFyKCk7
CiAKICAgICAvLyBBbGwgbG9hZHMgZmluaXNoIHdpdGggZGF0YShhbGxEYXRhUmVjZWl2ZWQgPSB0
cnVlKSBvciBlcnJvcigpLCBleGNlcHQgZm9yCiAgICAgLy8gY2FuY2VsZWQgbG9hZHMsIHdoaWNo
IHNpbGVudGx5IHNldCBvdXIgcmVxdWVzdCB0byAwLiBCZSBzdXJlIHRvIG5vdGlmeSBvdXIKICAg
ICAvLyBjbGllbnQgaW4gdGhhdCBjYXNlLCBzbyB3ZSBkb24ndCBzZWVtIHRvIGNvbnRpbnVlIGxv
YWRpbmcgZm9yZXZlci4KLSAgICBpZiAoIW1fcmVxdWVzdCAmJiBpc0xvYWRpbmcoKSkgeworICAg
IGlmIChpc0xvYWRpbmcoKSkgewogICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICAgICAg
c2V0U3RhdHVzKENhbmNlbGVkKTsKICAgICAgICAgY2hlY2tOb3RpZnkoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA4Nzgw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAKICAgICB2b2lkIHNldEluTGl2ZURlY29kZWRS
ZXNvdXJjZXNMaXN0KGJvb2wgYikgeyBtX2luTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0ID0gYjsg
fQogICAgIGJvb2wgaW5MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKSB7IHJldHVybiBtX2luTGl2
ZURlY29kZWRSZXNvdXJjZXNMaXN0OyB9CiAgICAgCi0gICAgdm9pZCBzZXRSZXF1ZXN0KENhY2hl
ZFJlc291cmNlUmVxdWVzdCopOworICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKIAogICAgIFNoYXJl
ZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgQVNTRVJUKCFtX3B1cmdlYWJsZURhdGEpOyByZXR1cm4g
bV9kYXRhLmdldCgpOyB9CiAKQEAgLTIzOCw3ICsyMzgsNyBAQAogCiAgICAgUmVzb3VyY2VSZXF1
ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAgIFN0cmluZyBtX2FjY2VwdDsKLSAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QqIG1fcmVxdWVzdDsKKyAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1
ZXN0PiBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7
CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkocmV2
aXNpb24gODc4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTcgKzc5LDE1IEBACiAgICAgLCBt
X211bHRpcGFydChmYWxzZSkKICAgICAsIG1fZmluaXNoaW5nKGZhbHNlKQogewotICAgIG1fcmVz
b3VyY2UtPnNldFJlcXVlc3QodGhpcyk7CiB9CiAKIENhY2hlZFJlc291cmNlUmVxdWVzdDo6fkNh
Y2hlZFJlc291cmNlUmVxdWVzdCgpCiB7Ci0gICAgbV9yZXNvdXJjZS0+c2V0UmVxdWVzdCgwKTsK
IH0KIAotUGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZFJlc291cmNlUmVx
dWVzdDo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSwgYm9vbCBpbmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVja1Bv
bGljeSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCitQYXNz
T3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpsb2Fk
KENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3Vy
aXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKIHsKLSAgICBSZWZQdHI8
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYobmV3IENhY2hlZFJlc291
cmNlUmVxdWVzdChjYWNoZWRSZXNvdXJjZUxvYWRlciwgcmVzb3VyY2UsIGluY3JlbWVudGFsKSk7
CisgICAgT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UHRyKG5l
dyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHJlc291cmNlLCBp
bmNyZW1lbnRhbCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHJl
c291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0VGFyZ2V0
VHlwZShjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUocmVzb3VyY2UtPnR5cGUoKSkpOwpA
QCAtMTMwLDcgKzEyOCw3IEBACiAgICAgICAgIGlmIChyZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFs
aWRhdGUoKSkgCiAgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXZhbGlkYXRpb25GYWlsZWQo
cmVzb3VyY2UpOyAKICAgICAgICAgcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpMb2Fk
RXJyb3IpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8Q2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0PigpOwogICAgIH0KICAgICByZXF1ZXN0LT5tX2xvYWRlciA9IGxv
YWRlcjsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CkBAIC0xNjUsMjEgKzE2MywxNSBA
QAogICAgICAgICBpZiAoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgICAg
IG1fcmVzb3VyY2UtPmZpbmlzaCgpOwogICAgIH0KLSAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVy
LT5sb2FkRG9uZSh0aGlzKTsKKyAgICBlbmQoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6OmRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRGYWlsKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2xvYWRlcikKKyAgICBp
ZiAobV9maW5pc2hpbmcgfHwgIW1fbG9hZGVyKQogICAgICAgICByZXR1cm47Ci0gICAgZGlkRmFp
bCgpOwotfQogCi12b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZGlkRmFpbChib29sIGNhbmNl
bGxlZCkKLXsKLSAgICBpZiAobV9maW5pc2hpbmcpCi0gICAgICAgIHJldHVybjsKLQorICAgIGJv
b2wgY2FuY2VsbGVkID0gZXJyb3IuaXNDYW5jZWxsYXRpb24oKTsKICAgICBMT0coUmVzb3VyY2VM
b2FkaW5nLCAiRmFpbGVkIHRvIGxvYWQgJyVzJyAoY2FuY2VsbGVkPSVkKS5cbiIsIG1fcmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgY2FuY2VsbGVkKTsKIAogICAgIC8v
IFByZXZlbnQgdGhlIGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkIGJlZm9yZSB3ZSBhcmUg
ZG9uZSB3aXRoCkBAIC0yMDEsNyArMTkzLDcgQEAKICAgICBpZiAoY2FuY2VsbGVkIHx8ICFtX3Jl
c291cmNlLT5pc1ByZWxvYWRlZCgpKQogICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9y
ZXNvdXJjZSk7CiAgICAgCi0gICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+bG9hZERvbmUodGhp
cyk7CisgICAgZW5kKCk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRSZWNl
aXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCkBAIC0yMjEsNyArMjEzLDcgQEAKICAgICAgICAgICAgIGlmIChtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpKQogICAgICAgICAgICAgICAgIG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmZyYW1lKCktPmxvYWRlcigpLT5jaGVja0NvbXBsZXRlZCgpOwogCi0gICAg
ICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5sb2FkRG9uZSh0aGlzKTsKKyAgICAgICAg
ICAgIGVuZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IAogICAgICAgICAvLyBE
aWQgbm90IGdldCAzMDQgcmVzcG9uc2UsIGNvbnRpbnVlIGFzIGEgcmVndWxhciByZXNvdXJjZSBs
b2FkLgpAQCAtMjgxLDUgKzI3MywxMSBAQAogICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+aXNDYWNo
ZVZhbGlkYXRvcigpKTsKICAgICBtX3Jlc291cmNlLT5zZXRTZXJpYWxpemVkQ2FjaGVkTWV0YWRh
dGEoZGF0YSwgc2l6ZSk7CiB9CisgICAgCit2b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6ZW5k
KCkKK3sKKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5sb2FkRG9uZSgpOworICAgIG1fcmVz
b3VyY2UtPnN0b3BMb2FkaW5nKCk7Cit9CiAKIH0gLy9uYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaAkocmV2aXNpb24gODc4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIApAQCAtMzgsMTEgKzM5LDEwIEBACiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICAg
ICBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAotICAgIGNsYXNzIENhY2hlZFJlc291cmNlUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZFJlc291cmNlUmVxdWVzdD4sIHByaXZhdGUg
U3VicmVzb3VyY2VMb2FkZXJDbGllbnQgeworICAgIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVz
dCA6IHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBsb2FkKENhY2hlZFJl
c291cmNlTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqLCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0
eUNoZWNrUG9saWN5LCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOworICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IGxvYWQoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSosIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hl
Y2tQb2xpY3ksIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgICAgIH5DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QoKTsKLSAgICAgICAgdm9pZCBkaWRGYWlsKGJvb2wgY2FuY2VsbGVk
ID0gZmFsc2UpOwogCiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJj
ZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7IH0KIApAQCAt
NTQsNiArNTQsNyBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFk
YXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiwgZG91YmxlKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CisgICAgICAgIHZvaWQgZW5kKCk7CiAKICAgICAgICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBtX2xvYWRlcjsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1f
Y2FjaGVkUmVzb3VyY2VMb2FkZXI7Cg==
</data>
<flag name="review"
          id="90159"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="90160"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>