<?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>172867</bug_id>
          
          <creation_ts>2017-06-02 11:59:03 -0700</creation_ts>
          <short_desc>Can&apos;t extend RTCPeerConnection</short_desc>
          <delta_ts>2021-04-24 12:24:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>174313</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Morris">andrew</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>aiham</cc>
    
    <cc>ashvayka</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>keith_miller</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1315149</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Morris">andrew</who>
    <bug_when>2017-06-02 11:59:03 -0700</bug_when>
    <thetext>This code:

class PC extends RTCPeerConnection {}
const pc = new PC();
console.log(pc instanceof PC);

outputs `false`. It should output `true`. Trying to define new methods for pc via the PC prototype also fails. This prevents our attempt to use webrtc/adapter without modifying globals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315154</commentid>
    <comment_count>1</comment_count>
    <who name="Andrew Morris">andrew</who>
    <bug_when>2017-06-02 12:07:07 -0700</bug_when>
    <thetext>Also seeing this behavior, might be the same underlying issue:

```js
function Foo() {}

Foo.prototype = Object.create(RTCPeerConnection.prototype);
Foo.prototype.constructor = Foo;

console.log(RTCPeerConnection.prototype.constructor !== Foo);
```

Again, output is `false`, should be `true`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315364</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-02 20:59:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/32551195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315865</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-05 20:01:12 -0700</bug_when>
    <thetext>This seems like a generic JS bindings bug where we do not support having a JS class extend a platform object such as RTCPeerConnection or Document (I verified that it does not work for Document either).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315866</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-05 20:03:23 -0700</bug_when>
    <thetext>Saam / Keith pointed me to our getDOMStructure() implementation which likely needs to be aware of the fact we&apos;re building for a subclass. Ditto for WrapperClass::createPrototype(vm, globalObject)) which likely needs to call createSubclassStructure() if needed.

I am really not familiar with this so I hope what I typed makes sense :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315875</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-05 20:30:55 -0700</bug_when>
    <thetext>Sam/Keith, any idea for a workaround? Maybe à JS object wrapping a peerconnection, or a proxy on the peerconnection prototype...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315890</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-05 21:41:39 -0700</bug_when>
    <thetext>(In reply to Andrew Morris from comment #1)
&gt; Also seeing this behavior, might be the same underlying issue:
&gt; 
&gt; ```js
&gt; function Foo() {}
&gt; 
&gt; Foo.prototype = Object.create(RTCPeerConnection.prototype);
&gt; Foo.prototype.constructor = Foo;
&gt; 
&gt; console.log(RTCPeerConnection.prototype.constructor !== Foo);
&gt; ```
&gt; 
&gt; Again, output is `false`, should be `true`.

Based on my reading of the spec it looks like FF and Chrome are wrong here, although I could be wrong. For some reason they are adding a &quot;constructor&quot; property to the object returned by Object.create which is intercepting your assignment on the next line. See: https://tc39.github.io/ecma262/#sec-object.create.

(In reply to youenn fablet from comment #5)
&gt; Sam/Keith, any idea for a workaround? Maybe à JS object wrapping a
&gt; peerconnection, or a proxy on the peerconnection prototype...

The best workaround I can think of (which is a little annoying is to set the prototype in your constructor) i.e.

class PC extends RTCPeerConnection {
    constructor() {
        super(...arguments);
        this.__proto__ = PC.prototype;
    }
}

That should be roughly the same as RTCPeerConnection properly subclassing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316013</commentid>
    <comment_count>7</comment_count>
      <attachid>312077</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-06 09:11:07 -0700</bug_when>
    <thetext>Created attachment 312077
WIP

Works for RTCPeerConnection, doesn&apos;t seem to work for other Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753875</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-24 12:24:18 -0700</bug_when>
    <thetext>Proper subclassing of WebIDL interfaces was implemented in r256716, including RTCPeerConnection.
Both code snippets in comment #0 and comment #1 now output `true`.

*** This bug has been marked as a duplicate of bug 174313 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312077</attachid>
            <date>2017-06-06 09:11:07 -0700</date>
            <delta_ts>2017-06-06 09:11:07 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-172867-20170606091106.patch</filename>
            <type>text/plain</type>
            <size>18638</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhjNGFlMDM3YmJhODY4
MDY3NzY4MTJiZDYwNGIzNjA4NjdjZjlmYi4uMGE2NmM5NzkzODJiMzg0NmRiMjE3OWU4M2U1OTQ1
ZTcwMzM0M2RkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA2LTA2ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIENhbid0IGV4dGVu
ZCBSVENQZWVyQ29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcyODY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFz
cz46OmNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JDcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlckNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01CYXNlU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldERP
TVByb3RvdHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
SXRlcmFibGVEZWZpbml0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6
Om5ld1J1bnRpbWVPYmplY3QpOgorICAgICAgICAoT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6
CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVhdGUpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorCiAyMDE3LTA2LTAyICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTaG91bGQgc2VlIGFjdGl2ZSBXZWIgU29ja2V0cyB3aGVuIG9wZW5pbmcgV2ViIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0
cnVjdG9yLmgKaW5kZXggNzRlZTNhNWNhZjNmODQ4NzdhYjkwNGIzZWIzMmQwYjcwNmZlNTcwNS4u
NDA2YWVhZTA1YjYyOTQxMjJkNWM4NDNiYTNkYTM2MjU2ZTU1OTFkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC05
MiwzNCArOTIsNTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlMKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgSlNDbGFzcz4gaW5saW5lCi10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxKU0RPTU9iamVj
dEluc3BlY3RvcjxKU0NsYXNzPjo6aXNTaW1wbGVXcmFwcGVyLCBKU0M6OkpTT2JqZWN0Jj46OnR5
cGUgY3JlYXRlSlNPYmplY3QoSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz4mIGNvbnN0
cnVjdG9yKQordHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SlNET01PYmplY3RJbnNwZWN0b3I8SlND
bGFzcz46OmlzU2ltcGxlV3JhcHBlciwgSlNDOjpKU09iamVjdCo+Ojp0eXBlIGNyZWF0ZUpTT2Jq
ZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFz
cz4mIGNvbnN0cnVjdG9yKQogewogICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpjb25zdHJ1Y3Rv
ci5nbG9iYWxPYmplY3QoKTsKLSAgICByZXR1cm4gKkpTQ2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1
Y3R1cmU8SlNDbGFzcz4oZ2xvYmFsT2JqZWN0LnZtKCksIGdsb2JhbE9iamVjdCksICZnbG9iYWxP
YmplY3QsIEpTQ2xhc3M6OkRPTVdyYXBwZWQ6OmNyZWF0ZSgpKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3Qudm0oKSk7CisKKyAgICBhdXRvIHN0cnVj
dHVyZSA9IGdldERPTVN0cnVjdHVyZTxKU0NsYXNzPihnbG9iYWxPYmplY3Qudm0oKSwgc3RhdGUs
IGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisKKyAgICByZXR1cm4gSlNDbGFzczo6Y3JlYXRlKHN0cnVjdHVyZSwgJmdsb2JhbE9iamVjdCwg
SlNDbGFzczo6RE9NV3JhcHBlZDo6Y3JlYXRlKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBK
U0NsYXNzPiBpbmxpbmUKLXR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEpTRE9NT2JqZWN0SW5zcGVj
dG9yPEpTQ2xhc3M+Ojppc0J1aWx0aW4sIEpTQzo6SlNPYmplY3QmPjo6dHlwZSBjcmVhdGVKU09i
amVjdChKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPiYgY29uc3RydWN0b3IpCit0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxKU0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6aXNCdWls
dGluLCBKU0M6OkpTT2JqZWN0Kj46OnR5cGUgY3JlYXRlSlNPYmplY3QoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPiYgY29uc3RydWN0b3IpCiB7
CiAgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmNvbnN0cnVjdG9yLmdsb2JhbE9iamVjdCgpOwot
ICAgIHJldHVybiAqSlNDbGFzczo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxKU0NsYXNzPihnbG9i
YWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgJmdsb2JhbE9iamVjdCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZ2xvYmFsT2JqZWN0LnZtKCkpOworCisgICAgYXV0
byBzdHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNDbGFzcz4oZ2xvYmFsT2JqZWN0LnZtKCks
IHN0YXRlLCBnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOworCisgICAgcmV0dXJuIEpTQ2xhc3M6OmNyZWF0ZShzdHJ1Y3R1cmUsICZnbG9iYWxP
YmplY3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUKLXR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPEpTRE9NT2JqZWN0SW5zcGVjdG9yPEpTQ2xhc3M+Ojppc0NvbXBsZXhX
cmFwcGVyLCBKU0M6OkpTT2JqZWN0Kj46OnR5cGUgY3JlYXRlSlNPYmplY3QoSlNET01CdWlsdGlu
Q29uc3RydWN0b3I8SlNDbGFzcz4mIGNvbnN0cnVjdG9yKQordHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8SlNET01PYmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzQ29tcGxleFdyYXBwZXIsIEpTQzo6
SlNPYmplY3QqPjo6dHlwZSBjcmVhdGVKU09iamVjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
RE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+JiBjb25zdHJ1Y3RvcikKIHsKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY29uc3RydWN0b3Iuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
ICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqY29uc3RydWN0b3IuZ2xvYmFsT2JqZWN0KCk7Ci0g
ICAgcmV0dXJuIEpTQ2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNDbGFzcz4oZ2xvYmFs
T2JqZWN0LnZtKCksIGdsb2JhbE9iamVjdCksICZnbG9iYWxPYmplY3QsIEpTQ2xhc3M6OkRPTVdy
YXBwZWQ6OmNyZWF0ZSgqY29udGV4dCkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKworICAgIGF1dG8gc3RydWN0dXJlID0gZ2V0RE9N
U3RydWN0dXJlPEpTQ2xhc3M+KGdsb2JhbE9iamVjdC52bSgpLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIHJldHVy
biBKU0NsYXNzOjpjcmVhdGUoc3RydWN0dXJlLCAmZ2xvYmFsT2JqZWN0LCBKU0NsYXNzOjpET01X
cmFwcGVkOjpjcmVhdGUoKmNvbnRleHQpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFz
cz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RPTUJ1aWx0aW5D
b25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y29uc3RydWN0KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBBU1NFUlQoc3RhdGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBKU0M6OmpzQ2FzdDxK
U0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLT5qc0NhbGxlZSgpKTsKLSAgICByZXR1cm4g
Y2FzdGVkVGhpcy0+Y2FsbENvbnN0cnVjdG9yKCpzdGF0ZSwgY3JlYXRlSlNPYmplY3QoKmNhc3Rl
ZFRoaXMpKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHN0YXRlLT52
bSgpKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSBjcmVhdGVKU09iamVjdCgqc3RhdGUs
ICpjYXN0ZWRUaGlzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OmVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIGNhc3RlZFRoaXMtPmNhbGxDb25zdHJ1Y3Rvcigq
c3RhdGUsIG9iamVjdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBK
U0M6OkNvbnN0cnVjdFR5cGUgSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46OmdldENv
bnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggNzc4
NTc3ZGRiNjA2NzJhYzA3M2U2M2FlZmI3M2QzNjMzMjBjMjgwNy4uZjExYmY5MGEyY2YwMzI4ZDAw
ZTY0ZWMyOTE2NmUyNjlhZDZlZDVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01JdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSXRlcmF0b3IuaApAQCAtMTM3LDE0ICsxMzcsMTkgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBq
c1BhaXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWMKICAgICByZXR1cm4ganNQYWlyKHN0YXRlLCBnbG9iYWxPYmplY3QsIHRvSlM8Rmlyc3RUeXBl
PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZTEpLCB0b0pTPFNlY29uZFR5cGU+KHN0YXRlLCBn
bG9iYWxPYmplY3QsIHZhbHVlMikpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0l0ZXJhdG9y
PiBKU0M6OkpTVmFsdWUgaXRlcmF0b3JDcmVhdGUodHlwZW5hbWUgSlNJdGVyYXRvcjo6V3JhcHBl
ciYsIEl0ZXJhdGlvbktpbmQpOwordGVtcGxhdGU8dHlwZW5hbWUgSlNJdGVyYXRvcj4gSlNDOjpK
U1ZhbHVlIGl0ZXJhdG9yQ3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgdHlwZW5hbWUgSlNJdGVyYXRv
cjo6V3JhcHBlciYsIEl0ZXJhdGlvbktpbmQpOwogdGVtcGxhdGU8dHlwZW5hbWUgSlNJdGVyYXRv
cj4gSlNDOjpKU1ZhbHVlIGl0ZXJhdG9yRm9yRWFjaChKU0M6OkV4ZWNTdGF0ZSYsIHR5cGVuYW1l
IEpTSXRlcmF0b3I6OldyYXBwZXImLCBKU0M6OlRocm93U2NvcGUmKTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgSlNJdGVyYXRvcj4gSlNDOjpKU1ZhbHVlIGl0ZXJhdG9yQ3JlYXRlKHR5cGVuYW1lIEpT
SXRlcmF0b3I6OldyYXBwZXImIHRoaXNPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKK3RlbXBs
YXRlPHR5cGVuYW1lIEpTSXRlcmF0b3I+IEpTQzo6SlNWYWx1ZSBpdGVyYXRvckNyZWF0ZShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIHR5cGVuYW1lIEpTSXRlcmF0b3I6OldyYXBwZXImIHRoaXNPYmpl
Y3QsIEl0ZXJhdGlvbktpbmQga2luZCkKIHsKICAgICBBU1NFUlQodGhpc09iamVjdC5nbG9iYWxP
YmplY3QoKSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICp0aGlzT2Jq
ZWN0Lmdsb2JhbE9iamVjdCgpOwotICAgIHJldHVybiBKU0l0ZXJhdG9yOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LnZtKCksIGdldERPTVN0cnVjdHVyZTxKU0l0ZXJhdG9yPihnbG9iYWxPYmplY3Qudm0o
KSwgZ2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdCwga2luZCk7CisKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3Qudm0oKSk7CisgICAgYXV0byBzdHJ1Y3R1
cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNJdGVyYXRvcj4oZ2xvYmFsT2JqZWN0LnZtKCksIHN0YXRl
LCBnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNW
YWx1ZSgpKTsKKworICAgIHJldHVybiBKU0l0ZXJhdG9yOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LnZt
KCksIHN0cnVjdHVyZSwgdGhpc09iamVjdCwga2luZCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEpTV3JhcHBlciwgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuaAppbmRleCAyNjNjNmYxOTQ5NGU0MzgzM2I1
Y2ZiMTc1ZTViZmU3YjlmMzczMzUxLi5hZmRlMmNlMjcwNjY5ZWMyMjMzM2EyYWEwNmUzNmI1MzY4
NThhMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNh
Y2hlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV0VCQ09SRV9FWFBP
UlQgSlNDOjpTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVj
dCYsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CiBXRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVy
ZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlN0cnVjdHVyZSos
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFz
cz4gSlNDOjpTdHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVyZShKU0M6OlZNJiwgSlNET01HbG9iYWxP
YmplY3QmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gSlNDOjpTdHJ1Y3R1cmUq
IGdldERPTVN0cnVjdHVyZShKU0M6OlZNJiwgSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwogdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzPiBKU0M6OlN0cnVjdHVyZSog
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSopOwogdGVtcGxhdGU8dHlw
ZW5hbWUgV3JhcHBlckNsYXNzPiBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIApAQCAtODAsMjIgKzgwLDMwIEBAIGlubGluZSBK
U0RPTUdsb2JhbE9iamVjdCogZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShKU0M6
OkV4ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
V3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFdyYXBwZXJDbGFzcz4KK2lubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NQmFzZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERPTVN0cnVjdHVyZShn
bG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHN0cnVj
dHVyZTsKICAgICByZXR1cm4gY2FjaGVET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBXcmFwcGVy
Q2xhc3M6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpj
cmVhdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpLCBXcmFwcGVyQ2xhc3M6OmluZm8oKSk7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4KK2lubGluZSBKU0M6OlN0cnVj
dHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkV4ZWNTdGF0ZSYgZXhlYywg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBhdXRvIGJhc2VTdHJ1Y3R1
cmUgPSBnZXRET01CYXNlU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4odm0sIGdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoJmV4ZWMsIGV4ZWMubmV3VGFyZ2V0KCksIGJhc2VTdHJ1Y3R1cmUpOworfQorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZGVwcmVjYXRl
ZEdldERPTVN0cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBpcyB3cm9uZy4gSXQgdXNlcyB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBm
b3IgY3JlYXRpbmcgdGhlIHByb3RvdHlwZSBzdHJ1Y3R1cmUuCi0gICAgcmV0dXJuIGdldERPTVN0
cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGV4ZWMtPnZtKCksICpkZXByZWNhdGVkR2xvYmFsT2JqZWN0
Rm9yUHJvdG90eXBlKGV4ZWMpKTsKKyAgICByZXR1cm4gZ2V0RE9NQmFzZVN0cnVjdHVyZTxXcmFw
cGVyQ2xhc3M+KGV4ZWMtPnZtKCksICpkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBl
KGV4ZWMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlND
OjpKU09iamVjdCogZ2V0RE9NUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0M6OkpTT2JqZWN0
Kj4oYXNPYmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4odm0sIGdsb2JhbE9iamVj
dCktPnN0b3JlZFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNP
YmplY3QqPihhc09iamVjdChnZXRET01CYXNlU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4odm0sIGds
b2JhbE9iamVjdCktPnN0b3JlZFByb3RvdHlwZSgpKSk7CiB9CiAKIGlubGluZSBKU0M6OldlYWtI
YW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6QXJy
YXlCdWZmZXIqKQpAQCAtMTg2LDcgKzE5NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNz
LCB0eXBlbmFtZSBUPiBpbmxpbmUgYXV0byBjcmVhdGVXcmFwcGVyKEpTRE9NR2xvYmFsT2JqCiAK
ICAgICBBU1NFUlQoIWdldENhY2hlZFdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21P
YmplY3QpKTsKICAgICBhdXRvKiBkb21PYmplY3RQdHIgPSBkb21PYmplY3QucHRyKCk7Ci0gICAg
YXV0byogd3JhcHBlciA9IFdyYXBwZXJDbGFzczo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxXcmFw
cGVyQ2xhc3M+KGdsb2JhbE9iamVjdC0+dm0oKSwgKmdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVj
dCwgV1RGTW92ZShkb21PYmplY3QpKTsKKyAgICBhdXRvKiB3cmFwcGVyID0gV3JhcHBlckNsYXNz
OjpjcmVhdGUoZ2V0RE9NQmFzZVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGdsb2JhbE9iamVjdC0+
dm0oKSwgKmdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdCwgV1RGTW92ZShkb21PYmplY3QpKTsK
ICAgICBjYWNoZVdyYXBwZXIoZ2xvYmFsT2JqZWN0LT53b3JsZCgpLCBkb21PYmplY3RQdHIsIHdy
YXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA0Mzc5MmE5ZDg0OTlkZTNi
NWQ3OTA0YjgzOGRlNjVmZjg2NmZjMTk1Li45ZTE2ZDViYmUzNWYzMTdiZjI4ZTllOWUyYTU4ZjQy
ZDdkY2ZmODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcApAQCAtNzYsMTMgKzc2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVjU3RhdGUmIGV4ZWMpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJuZXcu
dGFyZ2V0IGRvZXMgbm90IGRlZmluZSBhIGN1c3RvbSBlbGVtZW50IikpOwogCiAgICAgaWYgKCFl
bGVtZW50SW50ZXJmYWNlLT5pc1VwZ3JhZGluZ0VsZW1lbnQoKSkgewotICAgICAgICBTdHJ1Y3R1
cmUqIGJhc2VTdHJ1Y3R1cmUgPSBnZXRET01TdHJ1Y3R1cmU8SlNIVE1MRWxlbWVudD4odm0sICpn
bG9iYWxPYmplY3QpOwotICAgICAgICBhdXRvKiBuZXdFbGVtZW50U3RydWN0dXJlID0gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoJmV4ZWMsIG5ld1RhcmdldFZhbHVl
LCBiYXNlU3RydWN0dXJlKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRET01T
dHJ1Y3R1cmU8SlNIVE1MRWxlbWVudD4odm0sIGV4ZWMsICpnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAg
ICBSZWY8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnRJ
bnRlcmZhY2UtPm5hbWUoKSwgZG9jdW1lbnQpOwogICAgICAgICBlbGVtZW50LT5zZXRJc0RlZmlu
ZWRDdXN0b21FbGVtZW50KCplbGVtZW50SW50ZXJmYWNlKTsKLSAgICAgICAgYXV0byoganNFbGVt
ZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRlKG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgZWxlbWVudC5nZXQoKSk7CisgICAgICAgIGF1dG8qIGpzRWxlbWVudCA9IEpTSFRNTEVs
ZW1lbnQ6OmNyZWF0ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgZWxlbWVudC5nZXQoKSk7CiAg
ICAgICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCks
IGpzRWxlbWVudCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbGVtZW50KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IDdmNTMyMmQwNzUxNGVmYWUyNWU4NDM3Yjk4MWUzOGI3MjgzMjU3ZjYu
LmNkZTc3Nzg5YjQ5MDc3NTY5MDUzYzljZDc0YTkzMDM2OTg1YTk3NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01NjIy
LDkgKzU2MjIsOSBAQCBFTkQKICAgICAgICAgICAgICRpdGVyYXRpb25LaW5kID0gIlZhbHVlIiBp
ZiAkcHJvcGVydHlOYW1lIGVxICJlbnRyaWVzIiBhbmQgbm90ICRpbnRlcmZhY2UtPml0ZXJhYmxl
LT5pc0tleVZhbHVlOwogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsK
LXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgJHtmdW5jdGlvbk5hbWV9Q2FsbGVyKEV4ZWNT
dGF0ZSosIEpTJGludGVyZmFjZU5hbWUqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYpCitz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlICR7ZnVuY3Rpb25OYW1lfUNhbGxlcihFeGVjU3Rh
dGUqIHN0YXRlLCBKUyRpbnRlcmZhY2VOYW1lKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
KQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8JHtpdGVyYXRv
ck5hbWV9PigqdGhpc09iamVjdCwgSXRlcmF0aW9uS2luZDo6JHtpdGVyYXRpb25LaW5kfSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmF0b3JDcmVhdGU8JHtpdGVyYXRvck5hbWV9
Pigqc3RhdGUsICp0aGlzT2JqZWN0LCBJdGVyYXRpb25LaW5kOjoke2l0ZXJhdGlvbktpbmR9KSk7
CiB9CiAKIEVORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAppbmRleCBkZjAz
NjllN2RmN2QyNGE1NmI4YWFmMWE3MmIyMGVjMzQ0ZmVjY2FjLi5kNmI3MTQwY2ExNjI4ODU4OTg1
MWExOWEzYmE2MjAwM2MwZDQ4NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmNwcApAQCAtMTE3LDkgKzExNywxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ1J1bnRpbWVN
ZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAgIHsK
KyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CiAg
ICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3Rv
dHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0
byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAgICAgICAgIFN0cnVj
dHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxD
UnVudGltZU1ldGhvZD4oZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogICAgICAgICBDUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPENSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgQ1J1
bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIG1ldGhvZCk7CiAgICAgICAg
IHJ1bnRpbWVNZXRob2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIG5hbWUpOwogICAgICAg
ICByZXR1cm4gcnVudGltZU1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tCmluZGV4IDc4MGMyMzVhYzVlZWEzYzc2OTFlMDQ0ZDQ5OGMyNzkzNTcxOWY3
MDQuLmVhYzZmODlkNDNiN2IyY2NkZTA5ZmJkYjdhMGEyZjY5ZjBhZDE4YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtNjUsNyArNjUsMTEgQEAg
c3RhdGljIEhhc2hNYXA8aWQsIE9iamNJbnN0YW5jZSo+JiB3cmFwcGVyQ2FjaGUoKQogUnVudGlt
ZU9iamVjdCogT2JqY0luc3RhbmNlOjpuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0LgotICAgIHJldHVybiBPYmpDUnVu
dGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlzKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRShleGVjLT52bSgpKTsKKyAgICBhdXRvIHN0cnVjdHVyZSA9
IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4
ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgcmV0
dXJuIE9iakNSdW50aW1lT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCB0aGlz
KTsKIH0KIAogdm9pZCBPYmpjSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbihOU1N0cmluZyog
ZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCogZXhjZXB0aW9uRW52aXJvbm1lbnQpCkBAIC0xNzAs
NyArMTc0LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2Jh
bCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwg
b2JqZWN0IGZvciAiaSIuCisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KGV4ZWMtPnZtKCkpOwogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6
OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVNZXRob2Q+KGV4ZWMpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgICAgICBPYmpD
UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE9iakNSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgT2JqQ1J1bnRpbWVNZXRob2QoZ2xv
YmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIG1ldGhvZCk7CiAgICAgICAgIHJ1bnRpbWVNZXRob2Qt
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIG5hbWUpOwogICAgICAgICByZXR1cm4gcnVudGlt
ZU1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXgg
YzA2ZjA1MDUyYTYwNmIxN2JlNGZiODAxYmI5ZTRkNzBkNzA1Njk0ZC4uYmVkNGFhMmIzODUyNzlh
MWM5NDk4NTY5MDg3OTJlZjkxY2I2MGIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmgKQEAgLTk4LDcgKzk4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QK
KyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUoZXhlYy0+dm0oKSk7CiAg
ICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERP
TVN0cnVjdHVyZTxPYmpjRmFsbGJhY2tPYmplY3RJbXA+KGV4ZWMpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKwogICAgICAgICBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqIGZhbGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqY0Zh
bGxiYWNrT2JqZWN0SW1wPigqZXhlYy0+aGVhcCgpKSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGds
b2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgZmFsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IHJldHVybiBmYWxsYmFja09iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5o
CmluZGV4IDM1OWM4NjllMDM3YmIzNmEzNjQ4N2NmZTJiZGNkM2Y5ZWQ4Njg2MDMuLjAyNDliMjU5
YTAyZGM2M2FmYzU3NGNkYTYyYzMzNzNkYzI4ZmU2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaApAQCAtMzksOSArMzksMTMgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJ1
bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgQmluZGluZ3M6OkFycmF5KiBhcnJh
eSkKICAgICB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGV4ZWMt
PnZtKCkpOworCiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVz
ZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAg
Ly8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiYXJyYXki
LgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRH
ZXRET01TdHJ1Y3R1cmU8UnVudGltZUFycmF5PihleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKICAgICAgICAgUnVudGltZUFycmF5KiBydW50aW1l
QXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5o
ZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgZG9tU3RydWN0dXJlKTsKICAgICAgICAgcnVudGlt
ZUFycmF5LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBhcnJheSk7CiAgICAgICAgIGV4ZWMt
PnZtKCkuaGVhcC5hZGRGaW5hbGl6ZXIocnVudGltZUFycmF5LCBkZXN0cm95KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IDJjMmYxYjhjYjIyNDZkYWM5NGFl
YzFhODkyNWMyNDQ2NWM3MDMyODkuLjA1NzczZWM1YTUyYWE3ZmEyZTFmNThmY2Q1OTliMzIzYzIx
MmUxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMTYx
LDcgKzE2MSw5IEBAIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVyCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUcnkgYSBmYWxsYmFjayBvYmplY3QuCi0gICAgICAgIGlmICghYUNsYXNzLT5mYWxsYmFj
a09iamVjdChleGVjLCBpbnN0YW5jZS5nZXQoKSwgcHJvcGVydHlOYW1lKS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIEpTVmFsdWUgZmFsbGJhY2sgPSBhQ2xhc3MtPmZhbGxiYWNrT2JqZWN0KGV4
ZWMsIGluc3RhbmNlLmdldCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgIGlmICghZmFsbGJhY2suaXNVbmRlZmluZWQo
KSkgewogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0sIHRoaXNPYmplY3QtPmZhbGxiYWNrT2JqZWN0R2V0dGVyKTsK
ICAgICAgICAgICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>