<?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>146853</bug_id>
          
          <creation_ts>2015-07-10 13:36:50 -0700</creation_ts>
          <short_desc>Add HTMLMediaElement behavior and attribute value restrictions for MediaStream</short_desc>
          <delta_ts>2015-11-02 13:50:09 -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>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>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146788</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Daiter">mdaiter</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>mdaiter</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1108735</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Daiter">mdaiter</who>
    <bug_when>2015-07-10 13:36:50 -0700</bug_when>
    <thetext>HTMLMediaElement has necessary conditions when running a MediaStream. These conditions must be met to run with standard behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108736</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-10 13:38:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/21772688&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138617</commentid>
    <comment_count>2</comment_count>
      <attachid>264601</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-11-02 11:10:50 -0800</bug_when>
    <thetext>Created attachment 264601
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138631</commentid>
    <comment_count>3</comment_count>
      <attachid>264601</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-11-02 11:32:33 -0800</bug_when>
    <thetext>Comment on attachment 264601
Proposed patch.

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

r=me, with the most minor of nits. (Don&apos;t feel like you have to change the patch though.)

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:287
&gt; +    bool active = false;
&gt; +    for (auto&amp; track : m_trackSet.values()) {
&gt; +        if (!track-&gt;ended()) {
&gt; +            active = true;
&gt; +            break;
&gt; +        }
&gt; +    }

It&apos;s not really worth it, but you could do:

auto&amp; tracks = m_trackSet.values();
bool active = std::any_of(tracks.begin(), tracks.end(), [] (Track* track) { return !track-&gt;ended(); });

I wish we had those STL algorithms directly on our storage classes so we could do `m_trackSet.values().any_of([](auto track) { return !track-&gt;ended(); });`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138680</commentid>
    <comment_count>4</comment_count>
      <attachid>264601</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 13:50:06 -0800</bug_when>
    <thetext>Comment on attachment 264601
Proposed patch.

Clearing flags on attachment: 264601

Committed r191909: &lt;http://trac.webkit.org/changeset/191909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138681</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 13:50:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264601</attachid>
            <date>2015-11-02 11:10:50 -0800</date>
            <delta_ts>2015-11-02 13:50:06 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>ended_event_patch_2.txt</filename>
            <type>text/plain</type>
            <size>21458</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE1LTExLTAyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBIVE1MTWVkaWFF
bGVtZW50IGJlaGF2aW9yIGFuZCBhdHRyaWJ1dGUgdmFsdWUgcmVzdHJpY3Rpb25zIGZvciBNZWRp
YVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2ODUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtOjpzY2hlZHVsZUFjdGl2ZVN0YXRlQ2hhbmdlKTogRG8gbm90aGluZyBpZiB0
aGUgYWN0aXZlIHN0YXRlIGhhc24ndCBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW06OmFjdGl2aXR5RXZlbnRUaW1lckZpcmVkKTogUmVtb3ZlIEZJWE1FLgorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQcm9kdWNpbmdEYXRhKTogQWRkIGNvbW1lbnRz
LiBOb3RpZnkgb2JzZXJ2ZXJzIHRoYXQgdGhlIHRyYWNrIGVuZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tFbmRlZCk6IERvbid0IGRpc3BhdGNoIGV2ZW50cyBh
ZnRlciBoYXZpbmcgYmVlbiBzdG9wcGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6dHJhY2tNdXRlZENoYW5nZWQpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkZWZh
dWx0UGxheWJhY2tSYXRlKTogQWx3YXlzIHJldHVybiAxIHdoZW4gdXNpbmcgYSBNZWRpYVN0cmVh
bS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFj
a1JhdGUpOiBEbyBub3RoaW5nIHdoZW4gdXNpbmcgYSBNZWRpYVN0cmVhbS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSk6IEFsd2F5cyByZXR1cm4gMSB3
aGVuIHVzaW5nIGEgTWVkaWFTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRQbGF5YmFja1JhdGUpOiBEbyBub3RoaW5nIHdoZW4gdXNpbmcgYSBNZWRpYVN0cmVh
bS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkKTogQXNrIHRoZSBt
ZWRpYSBlbmdpbmUgd2hlbiB1c2luZyBhIE1lZGlhU3RyZWFtLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cHJlbG9hZCk6IEFsd2F5cyByZXR1cm4gIm5vbmUiIHdoZW4gdXNp
bmcgYSBNZWRpYVN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFByZWxvYWQpOiBEbyBub3RoaW5nIHdoZW4gdXNpbmcgYSBNZWRpYVN0cmVhbS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOiBBdm9p
ZCB1bm5lY2Vzc2FyeSBjb21wYXJpc29ucyB3aGVuIHRoZSBkdXJhdGlvbgorICAgICAgICAgIGlz
IG5vdCBkZWZpbml0ZS4gU2VuZCBlbmRlZCBldmVudCB3aGVuIE1lZGlhU3RyZWFtIHNheXMgc3Ry
ZWFtIGhhcyBlbmRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjplbmRlZCk6IE5ldywgcGFzc3Ro
cm91Z2ggdG8gZW5naW5lLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmxvYWQpOiBTZXQgbV9lbmRlZCBmcm9tIHN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCk6IFBhdXNlIHRo
ZSBzdHJlYW0gaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwbGF5KTogUmV0dXJuIGVhcmx5IGlmIGVuZGVkIG9yIGFs
cmVhZHkgcGxheWluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGF1c2UpOiBSZXR1cm4gZWFybHkgaWYgZW5kZWQgb3IgYWxyZWFkeSBw
YXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmN1cnJlbnRSZWFkeVN0YXRlKTogQ2xlYW51cC4gVHJ5IHRvIGdyYWIgYSBwYXVzZWQK
KyAgICAgICAgICBpbWFnZSBpZiB0aGUgc3RyZWFtIGlzbid0IGFjdGl2ZS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlUmVhZHlT
dGF0ZSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6YWN0aXZlU3RhdHVzQ2hhbmdlZCk6IENhbGwgdXBkYXRlUmVhZHlTdGF0ZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtUHJpdmF0ZTo6dHJhY2tFbmFibGVkQ2hhbmdlZCk6IENhbGwgdXBkYXRlQWN0aXZlU3Rh
dGUgc28gdGhlIHN0YXRlIHdpbGwKKyAgICAgICAgICBiZSB1cGRhdGVkIGlmIG5lY2Vzc2FyeS4K
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcCk6IERvbid0IGNh
bGwgcmVzZXQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gdGVhciBldmVyeXRoaW5nIGRvd24uCisKIDIw
MTUtMTAtMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIE1ha2UgZXZlcnkgcG9ydCBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRpbWVyIGlu
c3RlYWQgb2YgdXNpbmcgZ2xvYmFsIGZ1bmN0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDE5MTc4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNiArMjc4LDE4IEBAIGJvb2wgTWVkaWFTdHJlYW06Omlu
dGVybmFsUmVtb3ZlVHJhY2soUmUKIAogdm9pZCBNZWRpYVN0cmVhbTo6c2NoZWR1bGVBY3RpdmVT
dGF0ZUNoYW5nZSgpCiB7CisgICAgYm9vbCBhY3RpdmUgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8m
IHRyYWNrIDogbV90cmFja1NldC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXRyYWNrLT5lbmRl
ZCgpKSB7CisgICAgICAgICAgICBhY3RpdmUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1faXNBY3RpdmUgPT0gYWN0aXZlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2lzQWN0aXZlID0gYWN0aXZlOworCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudE5hbWUgPSBtX2lzQWN0aXZlID8gZXZlbnROYW1lcygpLmluYWN0aXZlRXZlbnQg
OiBldmVudE5hbWVzKCkuYWN0aXZlRXZlbnQ7CiAgICAgbV9zY2hlZHVsZWRBY3Rpdml0eUV2ZW50
cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSkpOwogCkBAIC0y
OTAsMTEgKzMwMiw4IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFjdGl2aXR5RXZlbnRUaW1lckZpcmUK
ICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gZXZlbnRzOwogICAgIGV2ZW50cy5zd2FwKG1fc2No
ZWR1bGVkQWN0aXZpdHlFdmVudHMpOwogCi0gICAgZm9yIChhdXRvJiBldmVudCA6IGV2ZW50cykg
ewotICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4ndCBiZSByaWdodCwgdGhlIGV2ZW50IHR5cGUg
aXMgc2V0IGZyb20gbV9pc0FjdGl2ZSBpbiBzY2hlZHVsZUFjdGl2ZVN0YXRlQ2hhbmdlISAtIGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE1MDYzNQotICAgICAgICBtX2lzQWN0aXZlID0gZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuYWN0aXZlRXZlbnQ7CisgICAgZm9yIChhdXRvJiBldmVudCA6
IGV2ZW50cykKICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCkpOwotICAgIH0K
IAogICAgIGV2ZW50cy5jbGVhcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCShyZXZpc2lvbiAx
OTE3ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTWVk
aWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIApAQCAtMTM2LDEwICsxMzcsMjMgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNr
OjpzdG9wUHJvZHVjaW5nRGF0YQogICAgIC8vIHRoZSAiSW1wbGVtZW50ZWRBcyIgSURMIGF0dHJp
YnV0ZS4gVGhpcyBpcyBkb25lIGJlY2F1c2UgQWN0aXZlRE9NT2JqZWN0IHJlcXVpcmVzCiAgICAg
Ly8gYSAic3RvcCIgbWV0aG9kLgogCisgICAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFj
YXB0dXJlLW1haW4vI3dpZGwtTWVkaWFTdHJlYW1UcmFjay1zdG9wLXZvaWQKKyAgICAvLyA0LjMu
My4yIE1ldGhvZHMKKyAgICAvLyBXaGVuIGEgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QncyBzdG9w
KCkgbWV0aG9kIGlzIGludm9rZWQsIHRoZSBVc2VyIEFnZW50IG11c3QgcnVuIGZvbGxvd2luZyBz
dGVwczoKKyAgICAvLyAxLiBMZXQgdHJhY2sgYmUgdGhlIGN1cnJlbnQgTWVkaWFTdHJlYW1UcmFj
ayBvYmplY3QuCisgICAgLy8gMi4gSWYgdHJhY2sgaXMgc291cmNlZCBieSBhIG5vbi1sb2NhbCBz
b3VyY2UsIHRoZW4gYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKHJlbW90ZSgpIHx8IGVuZGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIDMuIE5vdGlmeSB0cmFjaydzIHNvdXJjZSB0
aGF0IHRyYWNrIGlzIGVuZGVkIHNvIHRoYXQgdGhlIHNvdXJjZSBtYXkgYmUgc3RvcHBlZCwgdW5s
ZXNzIG90aGVyCisgICAgLy8gTWVkaWFTdHJlYW1UcmFjayBvYmplY3RzIGRlcGVuZCBvbiBpdC4K
KyAgICAvLyA0LiBTZXQgdHJhY2sncyByZWFkeVN0YXRlIGF0dHJpYnV0ZSB0byBlbmRlZC4KICAg
ICBtX3ByaXZhdGUtPmVuZFRyYWNrKCk7CisKKyAgICAvLyBNZWRpYVN0cmVhbVByaXZhdGU6OmVu
ZFRyYWNrIHdpbGwgbm90IHJlc3VsdCBpbiBhIGNhbGwgdG8gTWVkaWFTdHJlYW1UcmFjazo6dHJh
Y2tFbmRlZCwgc28KKyAgICAvLyBub3RpZnkgb2JzZXJ2ZXJzIG5vdyBvciB0aGV5IHdvbid0IGtu
b3cgYWJvdXQgdGhlIGNoYW5nZS4KKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZl
cnMpCisgICAgICAgIG9ic2VydmVyLT50cmFja0RpZEVuZCgpOwogfQogCiBSZWZQdHI8TWVkaWFU
cmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDb25zdHJhaW50cygpIGNvbnN0
CkBAIC0xOTIsNiArMjA2LDkgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdmVPYnNlcnZl
cihNZQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKQogeworICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2
ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CiAKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCkBAIC0yMDIsNiAr
MjE5LDkgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0VuZGVkKE1lZGlhUwogICAgIAog
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpCiB7CisgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9N
T2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZl
RE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQXRvbWljU3Ry
aW5nIGV2ZW50VHlwZSA9IG11dGVkKCkgPyBldmVudE5hbWVzKCkubXV0ZUV2ZW50IDogZXZlbnRO
YW1lcygpLnVubXV0ZUV2ZW50OwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dFR5cGUsIGZhbHNlLCBmYWxzZSkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5MTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OTIsMTEgKzI3OTIsMzEg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZWQoKSBjb25zdAogCiBkb3VibGUgSFRNTE1l
ZGlhRWxlbWVudDo6ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9tZWRpYWNhcHR1cmUtbWFp
bi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCisgICAgLy8gImRlZmF1bHRQbGF5YmFj
a1JhdGUiIC0gT24gc2V0dGluZzogaWdub3JlZC4gT24gZ2V0dGluZzogcmV0dXJuIDEuMAorICAg
IC8vIEEgTWVkaWFTdHJlYW0gaXMgbm90IHNlZWthYmxlLiBUaGVyZWZvcmUsIHRoaXMgYXR0cmli
dXRlIG11c3QgYWx3YXlzIGhhdmUgdGhlCisgICAgLy8gdmFsdWUgMS4wIGFuZCBhbnkgYXR0ZW1w
dCB0byBhbHRlciBpdCBtdXN0IGJlIGlnbm9yZWQuIE5vdGUgdGhhdCB0aGlzIGFsc28gbWVhbnMK
KyAgICAvLyB0aGF0IHRoZSByYXRlY2hhbmdlIGV2ZW50IHdpbGwgbm90IGZpcmUuCisgICAgaWYg
KG1fbWVkaWFTdHJlYW1TcmNPYmplY3QpCisgICAgICAgIHJldHVybiAxOworI2VuZGlmCisKICAg
ICByZXR1cm4gbV9kZWZhdWx0UGxheWJhY2tSYXRlOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlIHJhdGUpCiB7CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9tZWRpYWNhcHR1cmUtbWFp
bi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCisgICAgLy8gImRlZmF1bHRQbGF5YmFj
a1JhdGUiIC0gT24gc2V0dGluZzogaWdub3JlZC4gT24gZ2V0dGluZzogcmV0dXJuIDEuMAorICAg
IC8vIEEgTWVkaWFTdHJlYW0gaXMgbm90IHNlZWthYmxlLiBUaGVyZWZvcmUsIHRoaXMgYXR0cmli
dXRlIG11c3QgYWx3YXlzIGhhdmUgdGhlCisgICAgLy8gdmFsdWUgMS4wIGFuZCBhbnkgYXR0ZW1w
dCB0byBhbHRlciBpdCBtdXN0IGJlIGlnbm9yZWQuIE5vdGUgdGhhdCB0aGlzIGFsc28gbWVhbnMK
KyAgICAvLyB0aGF0IHRoZSByYXRlY2hhbmdlIGV2ZW50IHdpbGwgbm90IGZpcmUuCisgICAgaWYg
KG1fbWVkaWFTdHJlYW1TcmNPYmplY3QpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAg
aWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUoJXApIC0gJWYiLCB0aGlz
LCByYXRlKTsKICAgICAgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRlID0gcmF0ZTsKQEAgLTI4MTYs
NiArMjgzNiwxNSBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6cmVxdWVzdGVkUGxheWJhCiAK
IGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1JhdGUoKSBjb25zdAogeworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFjYXB0
dXJlLW1haW4vI21lZGlhc3RyZWFtcy1pbi1tZWRpYS1lbGVtZW50cworICAgIC8vICJwbGF5YmFj
a1JhdGUiIC0gQSBNZWRpYVN0cmVhbSBpcyBub3Qgc2Vla2FibGUuIFRoZXJlZm9yZSwgdGhpcyBh
dHRyaWJ1dGUgbXVzdCBhbHdheXMKKyAgICAvLyBoYXZlIHRoZSB2YWx1ZSAxLjAgYW5kIGFueSBh
dHRlbXB0IHRvIGFsdGVyIGl0IG11c3QgYmUgaWdub3JlZC4gTm90ZSB0aGF0IHRoaXMgYWxzbwor
ICAgIC8vIG1lYW5zIHRoYXQgdGhlIHJhdGVjaGFuZ2UgZXZlbnQgd2lsbCBub3QgZmlyZS4KKyAg
ICBpZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYK
KwogICAgIHJldHVybiBtX3JlcXVlc3RlZFBsYXliYWNrUmF0ZTsKIH0KIApAQCAtMjgyMyw2ICsy
ODUyLDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKGQKIHsKICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5YmFja1JhdGUoJXApIC0gJWYi
LCB0aGlzLCByYXRlKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLy8gaHR0cDov
L3czYy5naXRodWIuaW8vbWVkaWFjYXB0dXJlLW1haW4vI21lZGlhc3RyZWFtcy1pbi1tZWRpYS1l
bGVtZW50cworICAgIC8vICJwbGF5YmFja1JhdGUiIC0gQSBNZWRpYVN0cmVhbSBpcyBub3Qgc2Vl
a2FibGUuIFRoZXJlZm9yZSwgdGhpcyBhdHRyaWJ1dGUgbXVzdCBhbHdheXMKKyAgICAvLyBoYXZl
IHRoZSB2YWx1ZSAxLjAgYW5kIGFueSBhdHRlbXB0IHRvIGFsdGVyIGl0IG11c3QgYmUgaWdub3Jl
ZC4gTm90ZSB0aGF0IHRoaXMgYWxzbworICAgIC8vIG1lYW5zIHRoYXQgdGhlIHJhdGVjaGFuZ2Ug
ZXZlbnQgd2lsbCBub3QgZmlyZS4KKyAgICBpZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkKKyAg
ICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBpZiAobV9wbGF5ZXIgJiYgcG90ZW50aWFsbHlQ
bGF5aW5nKCkgJiYgbV9wbGF5ZXItPnJhdGUoKSAhPSByYXRlICYmICFtX21lZGlhQ29udHJvbGxl
cikKICAgICAgICAgbV9wbGF5ZXItPnNldFJhdGUocmF0ZSk7CiAKQEAgLTI4NTksNiArMjg5Nywx
NCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFdlYmtpdFByZXNlcnZlCiAKIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6ZW5kZWQoKSBjb25zdAogeworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisgICAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFjYXB0dXJlLW1haW4vI21lZGlhc3Ry
ZWFtcy1pbi1tZWRpYS1lbGVtZW50cworICAgIC8vIFdoZW4gdGhlIE1lZGlhU3RyZWFtIHN0YXRl
IG1vdmVzIGZyb20gdGhlIGFjdGl2ZSB0byB0aGUgaW5hY3RpdmUgc3RhdGUsIHRoZSBVc2VyIEFn
ZW50CisgICAgLy8gbXVzdCByYWlzZSBhbiBlbmRlZCBldmVudCBvbiB0aGUgSFRNTE1lZGlhRWxl
bWVudCBhbmQgc2V0IGl0cyBlbmRlZCBhdHRyaWJ1dGUgdG8gdHJ1ZS4KKyAgICBpZiAobV9tZWRp
YVN0cmVhbVNyY09iamVjdCAmJiBtX3BsYXllciAmJiBtX3BsYXllci0+ZW5kZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIC8vIDQuOC4xMC44IFBsYXlpbmcgdGhlIG1l
ZGlhIHJlc291cmNlCiAgICAgLy8gVGhlIGVuZGVkIGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0cnVl
IGlmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBlbmRlZCAKICAgICAvLyBwbGF5YmFjayBhbmQgdGhl
IGRpcmVjdGlvbiBvZiBwbGF5YmFjayBpcyBmb3J3YXJkcywgYW5kIGZhbHNlIG90aGVyd2lzZS4K
QEAgLTI4NzIsNiArMjkxOCwxMyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmF1dG9wbGF5KCkg
Y29uc3QKIAogU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OnByZWxvYWQoKSBjb25zdAogeworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFj
YXB0dXJlLW1haW4vI21lZGlhc3RyZWFtcy1pbi1tZWRpYS1lbGVtZW50cworICAgIC8vICJwcmVs
b2FkIiAtIE9uIGdldHRpbmc6IG5vbmUuIE9uIHNldHRpbmc6IGlnbm9yZWQuCisgICAgaWYgKG1f
bWVkaWFTdHJlYW1TcmNPYmplY3QpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vbmUi
KTsKKyNlbmRpZgorCiAgICAgc3dpdGNoIChtX3ByZWxvYWQpIHsKICAgICBjYXNlIE1lZGlhUGxh
eWVyOjpOb25lOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJub25lIik7CkBAIC0yODg4
LDYgKzI5NDEsMTMgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OnByZWxvYWQoKSBjb25zdAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYgcHJlbG9hZCkK
IHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKCVwKSAtICVz
IiwgdGhpcywgcHJlbG9hZC51dGY4KCkuZGF0YSgpKTsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorICAgIC8vIGh0dHA6Ly93M2MuZ2l0aHViLmlvL21lZGlhY2FwdHVyZS1tYWluLyNtZWRpYXN0
cmVhbXMtaW4tbWVkaWEtZWxlbWVudHMKKyAgICAvLyAicHJlbG9hZCIgLSBPbiBnZXR0aW5nOiBu
b25lLiBPbiBzZXR0aW5nOiBpZ25vcmVkLgorICAgIGlmIChtX21lZGlhU3RyZWFtU3JjT2JqZWN0
KQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIHNldEF0dHJpYnV0ZShwcmVsb2FkQXR0
ciwgcHJlbG9hZCk7CiB9CiAKQEAgLTQyMzAsOSArNDI5MCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2gKICAgICBNZWRpYVRpbWUgbm93ID0gY3VycmVudE1lZGlh
VGltZSgpOwogICAgIE1lZGlhVGltZSBkdXIgPSBkdXJhdGlvbk1lZGlhVGltZSgpOwogICAgIGRv
dWJsZSBwbGF5YmFja1JhdGUgPSByZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKTsKLSAgICAKKwogICAg
IC8vIFdoZW4gdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gcmVhY2hlcyB0aGUgZW5kIG9m
IHRoZSBtZWRpYSByZXNvdXJjZSB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgZm9sbG93IHRoZXNl
IHN0ZXBzOgotICAgIGlmIChkdXIuaXNWYWxpZCgpICYmIGR1cikgeworICAgIGlmIChkdXIgJiYg
ZHVyLmlzVmFsaWQoKSAmJiAhZHVyLmlzSW5kZWZpbml0ZSgpKSB7CiAgICAgICAgIC8vIElmIHRo
ZSBtZWRpYSBlbGVtZW50IGhhcyBhIGxvb3AgYXR0cmlidXRlIHNwZWNpZmllZCBhbmQgZG9lcyBu
b3QgaGF2ZSBhIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwKICAgICAgICAgaWYgKGxvb3AoKSAm
JiAhbV9tZWRpYUNvbnRyb2xsZXIgJiYgcGxheWJhY2tSYXRlID4gMCkgewogICAgICAgICAgICAg
bV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKQEAgLTQyNjAsMTAgKzQzMjAsMjMgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaAogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKLSNpZiBQTEFURk9STShJ
T1MpCi0gICAgICAgIC8vIFRoZSBjb250cm9sbGVyIGNoYW5nZXMgbW92aWUgdGltZSBkaXJlY3Rs
eSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhyb3VnaCBoZXJlIHNvIHdlIG5lZWQKLSAgICAgICAgLy8g
dG8gcG9zdCB0aW1ldXBkYXRlIGV2ZW50cyBpbiByZXNwb25zZSB0byB0aW1lIGNoYW5nZXMuCi0g
ICAgICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgICAgICBpZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkgeworICAgICAgICAg
ICAgLy8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFjYXB0dXJlLW1haW4vI2V2ZW50LW1lZGlh
c3RyZWFtLWluYWN0aXZlCisgICAgICAgICAgICAvLyA2LiBNZWRpYVN0cmVhbXMgaW4gTWVkaWEg
RWxlbWVudHMKKyAgICAgICAgICAgIC8vIFdoZW4gdGhlIE1lZGlhU3RyZWFtIHN0YXRlIG1vdmVz
IGZyb20gdGhlIGFjdGl2ZSB0byB0aGUgaW5hY3RpdmUgc3RhdGUsIHRoZSBVc2VyIEFnZW50Cisg
ICAgICAgICAgICAvLyBtdXN0IHJhaXNlIGFuIGVuZGVkIGV2ZW50IG9uIHRoZSBIVE1MTWVkaWFF
bGVtZW50IGFuZCBzZXQgaXRzIGVuZGVkIGF0dHJpYnV0ZSB0byB0cnVlLgorICAgICAgICAgICAg
Ly8gTm90ZSB0aGF0IG9uY2UgZW5kZWQgZXF1YWxzIHRydWUgdGhlIEhUTUxNZWRpYUVsZW1lbnQg
d2lsbCBub3QgcGxheSBtZWRpYSBldmVuIGlmIG5ldworICAgICAgICAgICAgLy8gTWVkaWFTdHJl
YW1UcmFjaydzIGFyZSBhZGRlZCB0byB0aGUgTWVkaWFTdHJlYW0gKGNhdXNpbmcgaXQgdG8gcmV0
dXJuIHRvIHRoZSBhY3RpdmUKKyAgICAgICAgICAgIC8vIHN0YXRlKSB1bmxlc3MgYXV0b3BsYXkg
aXMgdHJ1ZSBvciB0aGUgd2ViIGFwcGxpY2F0aW9uIHJlc3RhcnRzIHRoZSBlbGVtZW50LCBlLmcu
LAorICAgICAgICAgICAgLy8gYnkgY2FsbGluZyBwbGF5KCkKKyAgICAgICAgICAgIGlmICghbV9z
ZW50RW5kRXZlbnQgJiYgbV9wbGF5ZXIgJiYgbV9wbGF5ZXItPmVuZGVkKCkpIHsKKyAgICAgICAg
ICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CisgICAgICAgICAgICAgICAgbV9wYXVzZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIHNldFBsYXlpbmcoZmFsc2UpOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDE5MTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzOCw2ICsx
MzM4LDExIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBsYXllcjo6ZmlsZVNpemUKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5maWxlU2l6ZSgpOwogfQogCitib29sIE1lZGlhUGxheWVyOjplbmRl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZW5kZWQoKTsKK30KKwogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiB1bnNpZ25lZCBsb25nIE1lZGlhUGxheWVyOjp0b3RhbFZpZGVv
RnJhbWVzKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTkxNzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTkxLDYgKzU5MSw4
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29u
c3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKSBj
b25zdDsKIAorICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJG
YWN0b3J5KikgY29uc3Q7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTE3ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCisgICAg
dmlydHVhbCBib29sIGVuZGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIHRvdGFsVmlkZW9GcmFt
ZXMoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGRyb3BwZWRWaWRl
b0ZyYW1lcygpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCShy
ZXZpc2lvbiAxOTE3ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDkgKzEyNCwxMiBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IGV4
dHJhTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAorICAgIGJvb2wg
ZW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2VuZGVkOyB9CisKICAgICBib29sIHNo
b3VsZEJlUGxheWluZygpIGNvbnN0OwogCiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgY3Vy
cmVudFJlYWR5U3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZVJlYWR5U3RhdGUoKTsKIAogICAgIGVu
dW0gUmVuZGVyaW5nTW9kZVN0YXR1cyB7CiAgICAgICAgIFJlbmRlcmluZ01vZGVVbmNoYW5nZWQs
CkBAIC0xNTksNiArMTYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV93YWl0aW5nRm9yTmV3RnJhbWUge2ZhbHNlIH07CiAgICAgYm9vbCBtX2hh
dmVFdmVyUGxheWVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZW5kZWQgeyBmYWxzZSB9OwogfTsK
ICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJldmlzaW9uIDE5MTc4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTI1LDE4ICsxMjUsMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iagogICAgIG1fbWVkaWFTdHJlYW1Qcml2YXRlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKIAog
ICAgIG1fcHJldmlld0xheWVyID0gbnVsbHB0cjsKKyAgICBtX2VuZGVkID0gIW1fbWVkaWFTdHJl
YW1Qcml2YXRlLT5hY3RpdmUoKTsKIAogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7
CiAgICAgICAgIHNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6SWRsZSk7Ci0gICAgICAgIGlm
IChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU1ldGFkYXRhKQot
ICAgICAgICAgICAgdGhpcy0+c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6
SGF2ZU1ldGFkYXRhKTsKKyAgICAgICAgdXBkYXRlUmVhZHlTdGF0ZSgpOwogICAgIH0pOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCgp
CiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjYW5jZWxMb2FkKCVwKSIsIHRoaXMpOwotICAgIHBhdXNlKCk7CisgICAgaWYgKG1fcGxheWlu
ZykKKyAgICAgICAgcGF1c2UoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnByZXBhcmVUb1BsYXkoKQpAQCAtMjAwLDE5ICsyMDEsMjAgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogewogICAgIExPRyhNZWRpYSwgIk1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxheSglcCkiLCB0aGlzKTsKIAot
ICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxl
KCkgfHwgbV9wbGF5aW5nIHx8IG1fZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGxh
eWluZyA9IHRydWU7CiAgICAgbV9oYXZlRXZlclBsYXllZCA9IHRydWU7CiAgICAgc2V0UGF1c2Vk
SW1hZ2VWaXNpYmxlKGZhbHNlKTsKKyAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSgpCiB7CiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSglcCki
LCB0aGlzKTsKIAotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSkKKyAgICBpZiAoIW1ldGFE
YXRhQXZhaWxhYmxlKCkgfHwgIW1fcGxheWluZyB8fCBtX2VuZGVkKQogICAgICAgICByZXR1cm47
CiAKICAgICBzZXRQYXVzZWRJbWFnZVZpc2libGUodHJ1ZSk7CkBAIC0yOTAsMjMgKzI5Miw0NiBA
QCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhCiAKIE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVu
dFJlYWR5U3RhdGUoKQogewotICAgIGlmIChtX21lZGlhU3RyZWFtUHJpdmF0ZSkgewotICAgICAg
ICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZSgpKQotICAgICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YTsKKyAgICBpZiAoIW1fbWVk
aWFTdHJlYW1Qcml2YXRlKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6
OkhhdmVOb3RoaW5nOwogCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6
SGF2ZUN1cnJlbnREYXRhOworICAgIGlmIChtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlKCkp
IHsKKyAgICAgICAgaWYgKCFtX2hhdmVFdmVyUGxheWVkKQorICAgICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRnV0dXJlRGF0YTsKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YTsKICAgICB9CiAKLSAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOworICAgIGlmICghbV9wYXVz
ZWRJbWFnZSkKKyAgICAgICAgc2V0UGF1c2VkSW1hZ2VWaXNpYmxlKHRydWUpOworCisgICAgaWYg
KG1fcGF1c2VkSW1hZ2UpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6
SGF2ZUN1cnJlbnREYXRhOworCisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlTWV0YWRhdGE7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjphY3RpdmVTdGF0dXNDaGFuZ2VkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp1cGRhdGVSZWFkeVN0YXRlKCkKIHsKICAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBuZXdSZWFkeVN0YXRlID0gY3VycmVudFJlYWR5U3RhdGUoKTsKIAotICAgIHNjaGVk
dWxlRGVmZXJyZWRUYXNrKFt0aGlzLCBuZXdSZWFkeVN0YXRlXSB7Ci0gICAgICAgIGlmIChuZXdS
ZWFkeVN0YXRlICE9IG1fcmVhZHlTdGF0ZSkKLSAgICAgICAgICAgIHNldFJlYWR5U3RhdGUobmV3
UmVhZHlTdGF0ZSk7CisgICAgaWYgKG5ld1JlYWR5U3RhdGUgIT0gbV9yZWFkeVN0YXRlKQorICAg
ICAgICBzZXRSZWFkeVN0YXRlKG5ld1JlYWR5U3RhdGUpOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWN0aXZlU3RhdHVzQ2hhbmdlZCgpCit7CisgICAg
c2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKKyAgICAgICAgYm9vbCBlbmRlZCA9ICFtX21l
ZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlKCk7CisgICAgICAgIGlmIChlbmRlZCAmJiBtX3BsYXlp
bmcpCisgICAgICAgICAgICBwYXVzZSgpOworCisgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsK
KworICAgICAgICBpZiAoZW5kZWQgIT0gbV9lbmRlZCkgeworICAgICAgICAgICAgbV9lbmRlZCA9
IGVuZGVkOworICAgICAgICAgICAgaWYgKG1fcGxheWVyKQorICAgICAgICAgICAgICAgIG1fcGxh
eWVyLT50aW1lQ2hhbmdlZCgpOworICAgICAgICB9CiAgICAgfSk7CiB9CiAKQEAgLTM2NCwxMCAr
Mzg5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlm
IChtX3dhaXRpbmdGb3JOZXdGcmFtZSAmJiBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+aXNQcm9kdWNp
bmdEYXRhKCkpCiAgICAgICAgIHNldFBhdXNlZEltYWdlVmlzaWJsZShmYWxzZSk7CiAKLSAgICBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRlID0gY3VycmVudFJlYWR5U3RhdGUo
KTsKLSAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpcywgc2l6ZUNoYW5nZWQsIG5ld1JlYWR5
U3RhdGUsIHN0YXR1c10gewotICAgICAgICBpZiAobmV3UmVhZHlTdGF0ZSAhPSBtX3JlYWR5U3Rh
dGUpCi0gICAgICAgICAgICBzZXRSZWFkeVN0YXRlKG5ld1JlYWR5U3RhdGUpOworICAgIHNjaGVk
dWxlRGVmZXJyZWRUYXNrKFt0aGlzLCBzaXplQ2hhbmdlZCwgc3RhdHVzXSB7CisgICAgICAgIHVw
ZGF0ZVJlYWR5U3RhdGUoKTsKIAogICAgICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICAgICAg
cmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Qcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCShyZXZpc2lvbiAxOTE3ODkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNiArMjY4LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZh
dGU6OnRyYWNrU3RhdGVzQ2hhbgogdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrRW5hYmxl
ZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogewogICAgIHNjaGVkdWxlRGVmZXJy
ZWRUYXNrKFt0aGlzXSB7CisgICAgICAgIHVwZGF0ZUFjdGl2ZVN0YXRlKE5vdGlmeUNsaWVudE9w
dGlvbjo6Tm90aWZ5KTsKICAgICAgICAgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIH0p
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5MTc4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDYgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpzdG9wKE9ic2VydmVyKgogICAgIH0KIAogICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7Ci0g
ICAgcmVzZXQoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3RvcChP
YnNlcnZlciogY2FsbGluZ09ic2VydmVyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>