<?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>158191</bug_id>
          
          <creation_ts>2016-05-29 01:48:55 -0700</creation_ts>
          <short_desc>WebRTC: Update RTCPeerConnection.addTrack() to create (or reuse) an RTCRtpTransceiver</short_desc>
          <delta_ts>2016-06-03 02:52:31 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197470</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-29 01:48:55 -0700</bug_when>
    <thetext>When addTrack is called, there might be an existing RTCRtpTransceiver with an RTCRtpSender that can be reused. This procedure is described at [1].

[1] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#dom-rtcpeerconnection-addtrack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198217</commentid>
    <comment_count>1</comment_count>
      <attachid>280254</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-01 11:47:23 -0700</bug_when>
    <thetext>Created attachment 280254
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198237</commentid>
    <comment_count>2</comment_count>
      <attachid>280254</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-06-01 12:39:51 -0700</bug_when>
    <thetext>Comment on attachment 280254
Proposed patch

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

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:67
&gt; +    Vector&lt;RefPtr&lt;RTCRtpSender&gt;&gt; getSenders() const override { return m_transceiverSet-&gt;getSenders(); }
&gt; +    Vector&lt;RefPtr&lt;RTCRtpReceiver&gt;&gt; getReceivers() const { return m_transceiverSet-&gt;getReceivers(); }

Can these return a reference to a const Vector: &quot;const Vector&lt;RefPtr&lt;...&gt;&gt;&amp;&quot;?

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:68
&gt; +    const Vector&lt;RefPtr&lt;RTCRtpTransceiver&gt;&gt;&amp; getTransceivers() const override { return m_transceiverSet-&gt;list(); }

Can this be final instead of override?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198244</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-01 13:05:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 280254 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280254&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:67
&gt; &gt; +    Vector&lt;RefPtr&lt;RTCRtpSender&gt;&gt; getSenders() const override { return m_transceiverSet-&gt;getSenders(); }
&gt; &gt; +    Vector&lt;RefPtr&lt;RTCRtpReceiver&gt;&gt; getReceivers() const { return m_transceiverSet-&gt;getReceivers(); }
&gt; 
&gt; Can these return a reference to a const Vector: &quot;const Vector&lt;RefPtr&lt;...&gt;&gt;&amp;&quot;?

Yes they can; and probably should :). createOfferTask uses getSenders() and modifies the resulting vector, but it can create a new vector from the const ref for its special purpose.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:68
&gt; &gt; +    const Vector&lt;RefPtr&lt;RTCRtpTransceiver&gt;&gt;&amp; getTransceivers() const override { return m_transceiverSet-&gt;list(); }
&gt; 
&gt; Can this be final instead of override?

Seems to work. I&apos;m a bit unsure what the result is being that the entire class is final.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198463</commentid>
    <comment_count>4</comment_count>
      <attachid>280309</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-01 22:59:29 -0700</bug_when>
    <thetext>Created attachment 280309
Updated patch

Made getSenders/Receivers() return a const Vector ref.

Kept &apos;override&apos; on getTransceivers() since, to my understanding, final doesn&apos;t provide any extra functionality when the class is final already. I may be wrong on this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198561</commentid>
    <comment_count>5</comment_count>
      <attachid>280309</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-02 10:26:44 -0700</bug_when>
    <thetext>Comment on attachment 280309
Updated patch

Thanks for reviewing Eric!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198566</commentid>
    <comment_count>6</comment_count>
      <attachid>280309</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 10:49:06 -0700</bug_when>
    <thetext>Comment on attachment 280309
Updated patch

Clearing flags on attachment: 280309

Committed r201601: &lt;http://trac.webkit.org/changeset/201601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198567</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 10:49:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198575</commentid>
    <comment_count>8</comment_count>
      <attachid>280309</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-02 11:00:38 -0700</bug_when>
    <thetext>Comment on attachment 280309
Updated patch

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

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:135
&gt; +    RtpSenderVector senders = RtpSenderVector(m_client-&gt;getSenders());

I don’t think we need to state the class name twice. Default behavior when receiving a const&amp; is to make a copy, in fact, this should work:

    auto senders = m_client-&gt;getSenders();

But we need a comment explaining why we need a copy rather than using the reference. The copy is expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198898</commentid>
    <comment_count>9</comment_count>
      <attachid>280309</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-03 02:52:31 -0700</bug_when>
    <thetext>Comment on attachment 280309
Updated patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:135
&gt;&gt; +    RtpSenderVector senders = RtpSenderVector(m_client-&gt;getSenders());
&gt; 
&gt; I don’t think we need to state the class name twice. Default behavior when receiving a const&amp; is to make a copy, in fact, this should work:
&gt; 
&gt;     auto senders = m_client-&gt;getSenders();
&gt; 
&gt; But we need a comment explaining why we need a copy rather than using the reference. The copy is expensive.

The content of this function is replaced in https://bugs.webkit.org/show_bug.cgi?id=158203.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280254</attachid>
            <date>2016-06-01 11:47:23 -0700</date>
            <delta_ts>2016-06-01 22:59:29 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>transceiver-based-addtrack_0.patch</filename>
            <type>text/plain</type>
            <size>15491</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjg4N2ViLi44MDVkM2UzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTYtMDYt
MDEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCisgICAg
ICAgIFdlYlJUQzogVXBkYXRlIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKCkgdG8gY3JlYXRl
IChvciByZXVzZSkgYW4gUlRDUnRwVHJhbnNjZWl2ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4dGVuZCBleGlzdGluZyB0ZXN0IHRvIHZlcmlmeSB0
aGUgY3JlYXRlZCBSVENSdHBUcmFuc2NlaXZlciBvYmplY3QuCisKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZC1yZW1vdmVUcmFjay1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3Zl
VHJhY2suaHRtbDoKKyAgICAgICAgQWRkIGNoZWNrcyBmb3IgYmFkIGFyZ3VtZW50IGxpc3RzIGFu
ZCB2ZXJpZnkgdGhlIGNyZWF0ZWQgUlRDUnRwVHJhbnNjZWl2ZXIuCisKKzIwMTYtMDYtMDEgIEFk
YW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCiAgICAgICAgIFdl
YlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVyZmFjZSBhbmQgUlRDUGVlckNvbm5lY3Rp
b24uYWRkVHJhbnNjZWl2ZXIoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MTg5CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRyYWNrLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRy
YWNrLWV4cGVjdGVkLnR4dAppbmRleCA1ZmQ1Yzc0Li5jMzRkOGRlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZC1yZW1vdmVUcmFj
ay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1hZGQtcmVtb3ZlVHJhY2stZXhwZWN0ZWQudHh0CkBAIC0zLDEyICszLDM0IEBA
IFRlc3QgYmFzaWMgYmVoYXZpb3Igb2YgUlRDUGVlckNvbm5lY3Rpb24uYWRkL3JlbW92ZVRyYWNr
KCkKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitUZXN0IGJhZCBhZGRUcmFjaygpIGFy
Z3VtZW50cworUEFTUyBwYy5hZGRUcmFjaygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBwYy5hZGRUcmFjayhudWxsKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgndHJhY2snKSB0byBSVENQZWVyQ29ubmVjdGlvbi5h
ZGRUcmFjayBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2suCitQQVNTIHBj
LmFkZFRyYWNrKHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgndHJh
Y2snKSB0byBSVENQZWVyQ29ubmVjdGlvbi5hZGRUcmFjayBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IE1lZGlhU3RyZWFtVHJhY2suCitQQVNTIHBjLmFkZFRyYWNrKHRyYWNrLCBudWxsKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAyICgnc3RyZWFtcycpIHRvIFJUQ1BlZXJDb25u
ZWN0aW9uLmFkZFRyYWNrIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW0uCitQQVNT
IHBjLmFkZFRyYWNrKHRyYWNrLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMiAoJ3N0cmVhbXMnKSB0byBSVENQZWVyQ29ubmVjdGlvbi5hZGRUcmFjayBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtLgorUEFTUyBwYy5hZGRUcmFjayh0cmFjaywgc3RyZWFt
LCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnc3RyZWFtcycp
IHRvIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFRyYWNrIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVk
aWFTdHJlYW0uCisKK1Rlc3QgYmFkIHJlbW92ZVRyYWNrKCkgYXJndW1lbnRzCitQQVNTIHBjLnJl
bW92ZVRyYWNrKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMuCitQQVNTIHBjLnJlbW92ZVRyYWNrKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDEgKCdzZW5kZXInKSB0byBSVENQZWVyQ29ubmVjdGlvbi5yZW1vdmVUcmFjayBt
dXN0IGJlIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlci4KK1BBU1MgcGMucmVtb3ZlVHJhY2so
e30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzZW5kZXInKSB0byBS
VENQZWVyQ29ubmVjdGlvbi5yZW1vdmVUcmFjayBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFJUQ1J0
cFNlbmRlci4KKwogUEFTUyBwYy5nZXRTZW5kZXJzKCkubGVuZ3RoIGlzIDAKIFBBU1Mgc2VuZGVy
ID0gcGMuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIHNlbmRlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKIFBBU1Mgc2VuZGVyLnRy
YWNrIGlzIHRyYWNrCiBQQVNTIHBjLmdldFNlbmRlcnMoKS5sZW5ndGggaXMgMQogUEFTUyBwYy5n
ZXRTZW5kZXJzKClbMF0gaXMgc2VuZGVyCitQQVNTIHBjLmdldFJlY2VpdmVycygpLmxlbmd0aCBp
cyAxCitQQVNTIHJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJh
Y2sKK1BBU1MgcmVjZWl2ZXIudHJhY2subXV0ZWQgaXMgdHJ1ZQorUEFTUyByZWNlaXZlci50cmFj
ay5raW5kIGlzIHNlbmRlci50cmFjay5raW5kCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxl
bmd0aCBpcyAxCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQQVNTIHRyYW5zY2VpdmVy
LnNlbmRlciBpcyBzZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgcmVjZWl2ZXIK
K1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQogVHJ5IHRvIGFkZCBzYW1lIHRyYWNr
IGFnYWluCiBQQVNTIHNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOiBET00gRXhjZXB0aW9uIDEz
LgogUEFTUyBzZW5kZXIyID0gcGMuYWRkVHJhY2sodHJhY2syLCBzdHJlYW0sIHN0cmVhbTIpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3ZlVHJhY2suaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRyYWNrLmh0
bWwKaW5kZXggN2E2ZDBjZi4uNDgyOGE4NTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRyYWNrLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3Zl
VHJhY2suaHRtbApAQCAtMTIsNiArMTIsOCBAQAogICAgICAgICAgICAgdmFyIHNlbmRlcjsKICAg
ICAgICAgICAgIHZhciBzZW5kZXIyOwogICAgICAgICAgICAgdmFyIHNlbmRlckZyb21QYzIKKyAg
ICAgICAgICAgIHZhciByZWNlaXZlcjsKKyAgICAgICAgICAgIHZhciB0cmFuc2NlaXZlcjsKIAog
ICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgYmFzaWMgYmVoYXZpb3Igb2YgUlRDUGVlckNv
bm5lY3Rpb24uYWRkL3JlbW92ZVRyYWNrKCkiKTsKIApAQCAtMzAsNiArMzIsMjEgQEAKICAgICAg
ICAgICAgICAgICBzdHJlYW0gPSBzOwogICAgICAgICAgICAgICAgIHRyYWNrID0gc3RyZWFtLmdl
dFRyYWNrcygpWzBdOwogCisgICAgICAgICAgICAgICAgZGVidWcoIlRlc3QgYmFkIGFkZFRyYWNr
KCkgYXJndW1lbnRzIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coInBjLmFkZFRyYWNr
KCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygicGMuYWRkVHJhY2sobnVsbCkiKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygicGMuYWRkVHJhY2soe30pIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkVGhyb3coInBjLmFkZFRyYWNrKHRyYWNrLCBudWxsKSIpOworICAgICAg
ICAgICAgICAgIHNob3VsZFRocm93KCJwYy5hZGRUcmFjayh0cmFjaywge30pIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkVGhyb3coInBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0sIG51bGwpIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIlRl
c3QgYmFkIHJlbW92ZVRyYWNrKCkgYXJndW1lbnRzIik7CisgICAgICAgICAgICAgICAgc2hvdWxk
VGhyb3coInBjLnJlbW92ZVRyYWNrKCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygi
cGMucmVtb3ZlVHJhY2sobnVsbCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygicGMu
cmVtb3ZlVHJhY2soe30pIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCiAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInBjLmdldFNlbmRlcnMoKS5sZW5ndGgiLCAiMCIpOwogCiAgICAg
ICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coInNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBz
dHJlYW0pIik7CkBAIC0zOCw2ICs1NSwyMCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJw
Yy5nZXRTZW5kZXJzKCkubGVuZ3RoIiwgIjEiKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
cGMuZ2V0U2VuZGVycygpWzBdIiwgInNlbmRlciIpOwogCisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoInBjLmdldFJlY2VpdmVycygpLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICAgICAgcmVj
ZWl2ZXIgPSBwYy5nZXRSZWNlaXZlcnMoKVswXTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVR5
cGUoInJlY2VpdmVyLnRyYWNrIiwgIk1lZGlhU3RyZWFtVHJhY2siKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZVRydWUoInJlY2VpdmVyLnRyYWNrLm11dGVkIik7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgicmVjZWl2ZXIudHJhY2sua2luZCIsICJzZW5kZXIudHJhY2sua2luZCIpOwor
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCIs
ICIxIik7CisgICAgICAgICAgICAgICAgdHJhbnNjZWl2ZXIgPSBwYy5nZXRUcmFuc2NlaXZlcnMo
KVswXTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoInRyYW5zY2VpdmVyLm1pZCIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0cmFuc2NlaXZlci5zZW5kZXIiLCAic2VuZGVyIik7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInRyYW5zY2VpdmVyLnJlY2VpdmVyIiwgInJlY2Vp
dmVyIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgidHJhbnNjZWl2ZXIuc3RvcHBl
ZCIpOworCiAgICAgICAgICAgICAgICAgZGVidWcoIlRyeSB0byBhZGQgc2FtZSB0cmFjayBhZ2Fp
biIpOwogICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJzZW5kZXIgPSBwYy5hZGRUcmFjayh0
cmFjaywgc3RyZWFtKSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQyYmRjZC4uY2VhZTI0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE2LTA2LTAxICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0u
YmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAorICAgICAgICBXZWJSVEM6IFVwZGF0ZSBSVENQZWVy
Q29ubmVjdGlvbi5hZGRUcmFjaygpIHRvIGNyZWF0ZSAob3IgcmV1c2UpIGFuIFJUQ1J0cFRyYW5z
Y2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhY2sgdG8gY3JlYXRlIGFuIFJUQ1J0cFRyYW5z
Y2V2aWVyLCBvciByZXVzZSBhbiBleGlzdGluZworICAgICAgICB0cmFuc2NlaXZlciB0aGF0IGhh
cyBub3QgYmVlbiB1c2VkIHRvIHNlbmQgWzFdLgorCisgICAgICAgIEEgbmV3IFJ0cFRyYW5zY2Vp
dmVyU2V0IHR5cGUgaXMgYWRkZWQgdGhhdCB3cmFwcyBhIHZlY3RvciBvZiBSVENSdHBUcmFuc2Nl
aXZlciBvYmplY3RzCisgICAgICAgIGFuZCBpbnRlcm5hbGx5IG1haW50YWlucyB0d28gbGlzdHMg
Zm9yIGVmZmljaWVudCBhY2Nlc3MgdG8gUlRDUnRwU2VuZGVyIGFuZCBSVENSdHBSZWNlaXZlcgor
ICAgICAgICBvYmplY3RzLgorCisgICAgICAgIFsxXSBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
cnRjLXBjL2FyY2hpdmVzLzIwMTYwNTEzL3dlYnJ0Yy5odG1sI2RvbS1ydGNwZWVyY29ubmVjdGlv
bi1hZGR0cmFjaworCisgICAgICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdDogZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3ZlVHJhY2suaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UGVlckNvbm5lY3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBU
cmFuc2NlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdHBUcmFuc2NlaXZlclNldDo6YXBw
ZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpSdHBUcmFuc2NlaXZlclNldDo6bGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdHBUcmFuc2NlaXZlclNldDo6Z2V0U2VuZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSdHBUcmFuc2NlaXZlclNldDo6Z2V0UmVjZWl2ZXJzKToKKworMjAxNi0wNi0wMSAgQWRhbSBC
ZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nvbi5jb20+CisKICAgICAgICAgV2ViUlRD
OiBBZGQgUlRDUnRwVHJhbnNjZWl2ZXIgaW50ZXJmYWNlIGFuZCBSVENQZWVyQ29ubmVjdGlvbi5h
ZGRUcmFuc2NlaXZlcigpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgxODkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggZjRiMzdmOC4uZTI1ZGIz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgRE9NUHJv
bWlzZTxSVENTdGF0c1Jlc3BvbnNlPiBTdGF0c1Byb21pc2U7CiAKIGNsYXNzIFBlZXJDb25uZWN0
aW9uQmFja2VuZENsaWVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8UmVm
UHRyPFJUQ1J0cFRyYW5zY2VpdmVyPj4mIGdldFRyYW5zY2VpdmVycygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gZ2V0U2VuZGVycygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUV2ZW50KEV2ZW50JikgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDhmMmVjOWIuLjQyMzQ1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBB
Qi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEzLDcgKzExMyw3IEBAIFJlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25u
ZWN0aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBzZW5kZXIgOiBtX3NlbmRl
clNldCkgeworICAgIGZvciAoYXV0byYgc2VuZGVyIDogbV90cmFuc2NlaXZlclNldC0+Z2V0U2Vu
ZGVycygpKSB7CiAgICAgICAgIGlmIChzZW5kZXItPnRyYWNrSWQoKSA9PSB0cmFjay0+aWQoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFNwZWMgc2F5cyBJbnZhbGlkUGFyYW1ldGVyCiAgICAg
ICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKQEAgLTEyNSw4ICsxMjUsMzYg
QEAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLAogICAgIGZvciAoYXV0byBzdHJlYW0gOiBzdHJlYW1z
KQogICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLT5pZCgpKTsKIAotICAgIFJl
ZlB0cjxSVENSdHBTZW5kZXI+IHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdURk1vdmUo
dHJhY2spLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgKnRoaXMpOwotICAgIG1fc2VuZGVyU2V0
LmFwcGVuZChzZW5kZXIpOworICAgIFJUQ1J0cFNlbmRlciogc2VuZGVyID0gbnVsbHB0cjsKKwor
ICAgIC8vIFJldXNlIGFuIGV4aXN0aW5nIHNlbmRlciB3aXRoIHRoZSBzYW1lIHRyYWNrIGtpbmQg
aWYgaXQgaGFzIG5ldmVyIGJlZW4gdXNlZCB0byBzZW5kIGJlZm9yZS4KKyAgICBmb3IgKGF1dG8m
IHRyYW5zY2VpdmVyIDogbV90cmFuc2NlaXZlclNldC0+bGlzdCgpKSB7CisgICAgICAgIFJUQ1J0
cFNlbmRlciYgZXhpc3RpbmdTZW5kZXIgPSAqdHJhbnNjZWl2ZXItPnNlbmRlcigpOworICAgICAg
ICBpZiAoZXhpc3RpbmdTZW5kZXIudHJhY2tLaW5kKCkgPT0gdHJhY2stPmtpbmQoKSAmJiBleGlz
dGluZ1NlbmRlci50cmFja0lkKCkuaXNOdWxsKCkgJiYgIXRyYW5zY2VpdmVyLT5oYXNTZW5kaW5n
RGlyZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNldFRyYWNrKFdURk1v
dmUodHJhY2spKTsKKyAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNldE1lZGlhU3RyZWFtSWRz
KFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKKyAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5lbmFi
bGVTZW5kaW5nRGlyZWN0aW9uKCk7CisgICAgICAgICAgICBzZW5kZXIgPSAmZXhpc3RpbmdTZW5k
ZXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghc2Vu
ZGVyKSB7CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVy
OjpnZXROZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2st
PmtpbmQoKTsKKyAgICAgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCk7CisKKyAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShX
VEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksICp0aGlzKTsKKyAgICAgICAg
YXV0byByZWNlaXZlciA9IG1fYmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQs
IHRyYWNrS2luZCwgdHJhY2tJZCk7CisgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBU
cmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlcikp
OworCisgICAgICAgIC8vIFRoaXMgdHJhbnNjZWl2ZXIgaXMgbm90IHlldCBhc3NvY2lhdGVkIHdp
dGggYW4gbS1saW5lIChudWxsIG1pZCksIGJ1dCB3ZSBuZWVkIGEKKyAgICAgICAgLy8gcHJvdmlz
aW9uYWwgbWlkIGlmIHRoZSB0cmFuc2NlaXZlciBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBvZmZlci4K
KyAgICAgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVyTWlkKTsK
KworICAgICAgICBzZW5kZXIgPSB0cmFuc2NlaXZlci0+c2VuZGVyKCk7CisgICAgICAgIG1fdHJh
bnNjZWl2ZXJTZXQtPmFwcGVuZChXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CisgICAgfQogCiAgICAg
bV9iYWNrZW5kLT5tYXJrQXNOZWVkaW5nTmVnb3RpYXRpb24oKTsKIApAQCAtMTQwLDcgKzE2OCw3
IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2Vu
ZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghbV9zZW5kZXJTZXQuY29udGFpbnMoJnNlbmRlcikpCisgICAgaWYgKCFtX3RyYW5zY2VpdmVy
U2V0LT5nZXRTZW5kZXJzKCkuY29udGFpbnMoJnNlbmRlcikpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNlbmRlci5zdG9wKCk7CkBAIC0xOTQsNyArMjIyLDcgQEAgUmVmUHRyPFJUQ1J0cFRyYW5z
Y2VpdmVyPiBSVENQZWVyQ29ubmVjdGlvbjo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRD
UnRwVHIKIHsKICAgICB0cmFuc2NlaXZlci0+c2V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PFJUQ1J0
cFRyYW5zY2VpdmVyOjpEaXJlY3Rpb24+KGluaXQuZGlyZWN0aW9uKSk7CiAKLSAgICBtX3RyYW5z
Y2VpdmVyU2V0LmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOworICAgIG1fdHJhbnNjZWl2
ZXJTZXQtPmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOwogICAgIG1fYmFja2VuZC0+bWFy
a0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiAKICAgICByZXR1cm4gV1RGTW92ZSh0cmFuc2NlaXZl
cik7CkBAIC00MDQsNyArNDMyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoKQog
ICAgIG1faWNlQ29ubmVjdGlvblN0YXRlID0gSWNlQ29ubmVjdGlvblN0YXRlOjpDbG9zZWQ7CiAg
ICAgbV9zaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQ7CiAKLSAgICBmb3Ig
KGF1dG8mIHNlbmRlciA6IG1fc2VuZGVyU2V0KQorICAgIGZvciAoYXV0byYgc2VuZGVyIDogbV90
cmFuc2NlaXZlclNldC0+Z2V0U2VuZGVycygpKQogICAgICAgICBzZW5kZXItPnN0b3AoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5oCmluZGV4IDA1MzZjZWMuLmQ0OWVkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTYz
LDkgKzYzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGljdGlvbmFyeSYgcnRjQ29u
ZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlvbigpOwog
Ci0gICAgVmVjdG9yPFJlZlB0cjxSVENSdHBTZW5kZXI+PiBnZXRTZW5kZXJzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zZW5kZXJTZXQ7IH0KLSAgICBWZWN0b3I8UmVmUHRyPFJUQ1J0cFJl
Y2VpdmVyPj4gZ2V0UmVjZWl2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9yZWNlaXZlclNldDsgfQot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiYgZ2V0VHJhbnNjZWl2
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldDsgfQorICAgIFZlY3RvcjxSZWZQ
dHI8UlRDUnRwU2VuZGVyPj4gZ2V0U2VuZGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
dHJhbnNjZWl2ZXJTZXQtPmdldFNlbmRlcnMoKTsgfQorICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRw
UmVjZWl2ZXI+PiBnZXRSZWNlaXZlcnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0
LT5nZXRSZWNlaXZlcnMoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNj
ZWl2ZXI+PiYgZ2V0VHJhbnNjZWl2ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90cmFu
c2NlaXZlclNldC0+bGlzdCgpOyB9CiAKICAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFj
ayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPE1lZGlhU3RyZWFtKj4sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTE0OSw5ICsxNDksNyBAQCBwcml2YXRlOgogICAgIFBlZXJDb25uZWN0aW9uU3Rh
dGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSBtX2ljZUdhdGhlcmluZ1N0YXRlOwogICAgIFBlZXJDb25u
ZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGUgbV9pY2VDb25uZWN0aW9uU3RhdGU7CiAK
LSAgICBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+IG1fc2VuZGVyU2V0OwotICAgIFZlY3Rv
cjxSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+PiBtX3JlY2VpdmVyU2V0OwotICAgIFZlY3RvcjxSZWZQ
dHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiBtX3RyYW5zY2VpdmVyU2V0OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxSdHBUcmFuc2NlaXZlclNldD4gbV90cmFuc2NlaXZlclNldCB7IHN0ZDo6dW5pcXVlX3B0
cjxSdHBUcmFuc2NlaXZlclNldD4obmV3IFJ0cFRyYW5zY2VpdmVyU2V0KCkpIH07CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFJUQ0RhdGFDaGFubmVsPj4gbV9kYXRhQ2hhbm5lbHM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZl
ci5jcHAKaW5kZXggNzYyYmQ0ZC4uZTI5M2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKQEAgLTEwMSw2
ICsxMDEsMTQgQEAgdm9pZCBSVENSdHBUcmFuc2NlaXZlcjo6ZGlzYWJsZVNlbmRpbmdEaXJlY3Rp
b24oKQogICAgICAgICBtX2RpcmVjdGlvbiA9IERpcmVjdGlvbjo6SW5hY3RpdmU7CiB9CiAKK3Zv
aWQgUnRwVHJhbnNjZWl2ZXJTZXQ6OmFwcGVuZChSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiYg
dHJhbnNjZWl2ZXIpCit7CisgICAgbV9zZW5kZXJzLmFwcGVuZCh0cmFuc2NlaXZlci0+c2VuZGVy
KCkpOworICAgIG1fcmVjZWl2ZXJzLmFwcGVuZCh0cmFuc2NlaXZlci0+cmVjZWl2ZXIoKSk7CisK
KyAgICBtX3RyYW5zY2VpdmVycy5hcHBlbmQoV1RGTW92ZSh0cmFuc2NlaXZlcikpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaAppbmRleCAxZWQ0ZGRjLi5iYTNjYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oCkBAIC04Niw2ICs4Niwy
MSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKIH07CiAKK2NsYXNz
IFJ0cFRyYW5zY2VpdmVyU2V0IHsKK3B1YmxpYzoKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJU
Q1J0cFRyYW5zY2VpdmVyPj4mIGxpc3QoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyczsg
fQorICAgIHZvaWQgYXBwZW5kKFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mJik7CisKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+JiBnZXRTZW5kZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZW5kZXJzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZl
cj4+JiBnZXRSZWNlaXZlcnMoKSBjb25zdCB7IHJldHVybiBtX3JlY2VpdmVyczsgfQorCitwcml2
YXRlOgorICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiBtX3RyYW5zY2VpdmVy
czsKKworICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gbV9zZW5kZXJzOworICAgIFZl
Y3RvcjxSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+PiBtX3JlY2VpdmVyczsKK307CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280309</attachid>
            <date>2016-06-01 22:59:29 -0700</date>
            <delta_ts>2016-06-02 10:49:06 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>transceiver-based-addtrack_1.patch</filename>
            <type>text/plain</type>
            <size>16366</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZjg4N2ViLi44MDVkM2UzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTYtMDYt
MDEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCisgICAg
ICAgIFdlYlJUQzogVXBkYXRlIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKCkgdG8gY3JlYXRl
IChvciByZXVzZSkgYW4gUlRDUnRwVHJhbnNjZWl2ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4dGVuZCBleGlzdGluZyB0ZXN0IHRvIHZlcmlmeSB0
aGUgY3JlYXRlZCBSVENSdHBUcmFuc2NlaXZlciBvYmplY3QuCisKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZC1yZW1vdmVUcmFjay1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3Zl
VHJhY2suaHRtbDoKKyAgICAgICAgQWRkIGNoZWNrcyBmb3IgYmFkIGFyZ3VtZW50IGxpc3RzIGFu
ZCB2ZXJpZnkgdGhlIGNyZWF0ZWQgUlRDUnRwVHJhbnNjZWl2ZXIuCisKKzIwMTYtMDYtMDEgIEFk
YW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCiAgICAgICAgIFdl
YlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVyZmFjZSBhbmQgUlRDUGVlckNvbm5lY3Rp
b24uYWRkVHJhbnNjZWl2ZXIoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MTg5CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRyYWNrLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRy
YWNrLWV4cGVjdGVkLnR4dAppbmRleCA1ZmQ1Yzc0Li5jMzRkOGRlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZC1yZW1vdmVUcmFj
ay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1hZGQtcmVtb3ZlVHJhY2stZXhwZWN0ZWQudHh0CkBAIC0zLDEyICszLDM0IEBA
IFRlc3QgYmFzaWMgYmVoYXZpb3Igb2YgUlRDUGVlckNvbm5lY3Rpb24uYWRkL3JlbW92ZVRyYWNr
KCkKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitUZXN0IGJhZCBhZGRUcmFjaygpIGFy
Z3VtZW50cworUEFTUyBwYy5hZGRUcmFjaygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBwYy5hZGRUcmFjayhudWxsKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgndHJhY2snKSB0byBSVENQZWVyQ29ubmVjdGlvbi5h
ZGRUcmFjayBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2suCitQQVNTIHBj
LmFkZFRyYWNrKHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgndHJh
Y2snKSB0byBSVENQZWVyQ29ubmVjdGlvbi5hZGRUcmFjayBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IE1lZGlhU3RyZWFtVHJhY2suCitQQVNTIHBjLmFkZFRyYWNrKHRyYWNrLCBudWxsKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAyICgnc3RyZWFtcycpIHRvIFJUQ1BlZXJDb25u
ZWN0aW9uLmFkZFRyYWNrIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW0uCitQQVNT
IHBjLmFkZFRyYWNrKHRyYWNrLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMiAoJ3N0cmVhbXMnKSB0byBSVENQZWVyQ29ubmVjdGlvbi5hZGRUcmFjayBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtLgorUEFTUyBwYy5hZGRUcmFjayh0cmFjaywgc3RyZWFt
LCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnc3RyZWFtcycp
IHRvIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFRyYWNrIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVk
aWFTdHJlYW0uCisKK1Rlc3QgYmFkIHJlbW92ZVRyYWNrKCkgYXJndW1lbnRzCitQQVNTIHBjLnJl
bW92ZVRyYWNrKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMuCitQQVNTIHBjLnJlbW92ZVRyYWNrKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDEgKCdzZW5kZXInKSB0byBSVENQZWVyQ29ubmVjdGlvbi5yZW1vdmVUcmFjayBt
dXN0IGJlIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlci4KK1BBU1MgcGMucmVtb3ZlVHJhY2so
e30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzZW5kZXInKSB0byBS
VENQZWVyQ29ubmVjdGlvbi5yZW1vdmVUcmFjayBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFJUQ1J0
cFNlbmRlci4KKwogUEFTUyBwYy5nZXRTZW5kZXJzKCkubGVuZ3RoIGlzIDAKIFBBU1Mgc2VuZGVy
ID0gcGMuYWRkVHJhY2sodHJhY2ssIHN0cmVhbSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIHNlbmRlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKIFBBU1Mgc2VuZGVyLnRy
YWNrIGlzIHRyYWNrCiBQQVNTIHBjLmdldFNlbmRlcnMoKS5sZW5ndGggaXMgMQogUEFTUyBwYy5n
ZXRTZW5kZXJzKClbMF0gaXMgc2VuZGVyCitQQVNTIHBjLmdldFJlY2VpdmVycygpLmxlbmd0aCBp
cyAxCitQQVNTIHJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJh
Y2sKK1BBU1MgcmVjZWl2ZXIudHJhY2subXV0ZWQgaXMgdHJ1ZQorUEFTUyByZWNlaXZlci50cmFj
ay5raW5kIGlzIHNlbmRlci50cmFjay5raW5kCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxl
bmd0aCBpcyAxCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQQVNTIHRyYW5zY2VpdmVy
LnNlbmRlciBpcyBzZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgcmVjZWl2ZXIK
K1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQogVHJ5IHRvIGFkZCBzYW1lIHRyYWNr
IGFnYWluCiBQQVNTIHNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0pIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOiBET00gRXhjZXB0aW9uIDEz
LgogUEFTUyBzZW5kZXIyID0gcGMuYWRkVHJhY2sodHJhY2syLCBzdHJlYW0sIHN0cmVhbTIpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3ZlVHJhY2suaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRyYWNrLmh0
bWwKaW5kZXggN2E2ZDBjZi4uNDgyOGE4NTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkLXJlbW92ZVRyYWNrLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3Zl
VHJhY2suaHRtbApAQCAtMTIsNiArMTIsOCBAQAogICAgICAgICAgICAgdmFyIHNlbmRlcjsKICAg
ICAgICAgICAgIHZhciBzZW5kZXIyOwogICAgICAgICAgICAgdmFyIHNlbmRlckZyb21QYzIKKyAg
ICAgICAgICAgIHZhciByZWNlaXZlcjsKKyAgICAgICAgICAgIHZhciB0cmFuc2NlaXZlcjsKIAog
ICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgYmFzaWMgYmVoYXZpb3Igb2YgUlRDUGVlckNv
bm5lY3Rpb24uYWRkL3JlbW92ZVRyYWNrKCkiKTsKIApAQCAtMzAsNiArMzIsMjEgQEAKICAgICAg
ICAgICAgICAgICBzdHJlYW0gPSBzOwogICAgICAgICAgICAgICAgIHRyYWNrID0gc3RyZWFtLmdl
dFRyYWNrcygpWzBdOwogCisgICAgICAgICAgICAgICAgZGVidWcoIlRlc3QgYmFkIGFkZFRyYWNr
KCkgYXJndW1lbnRzIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coInBjLmFkZFRyYWNr
KCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygicGMuYWRkVHJhY2sobnVsbCkiKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygicGMuYWRkVHJhY2soe30pIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkVGhyb3coInBjLmFkZFRyYWNrKHRyYWNrLCBudWxsKSIpOworICAgICAg
ICAgICAgICAgIHNob3VsZFRocm93KCJwYy5hZGRUcmFjayh0cmFjaywge30pIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkVGhyb3coInBjLmFkZFRyYWNrKHRyYWNrLCBzdHJlYW0sIG51bGwpIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIlRl
c3QgYmFkIHJlbW92ZVRyYWNrKCkgYXJndW1lbnRzIik7CisgICAgICAgICAgICAgICAgc2hvdWxk
VGhyb3coInBjLnJlbW92ZVRyYWNrKCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygi
cGMucmVtb3ZlVHJhY2sobnVsbCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygicGMu
cmVtb3ZlVHJhY2soe30pIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCiAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInBjLmdldFNlbmRlcnMoKS5sZW5ndGgiLCAiMCIpOwogCiAgICAg
ICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coInNlbmRlciA9IHBjLmFkZFRyYWNrKHRyYWNrLCBz
dHJlYW0pIik7CkBAIC0zOCw2ICs1NSwyMCBAQAogICAgICAgICAgICAgICAgIHNob3VsZEJlKCJw
Yy5nZXRTZW5kZXJzKCkubGVuZ3RoIiwgIjEiKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
cGMuZ2V0U2VuZGVycygpWzBdIiwgInNlbmRlciIpOwogCisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoInBjLmdldFJlY2VpdmVycygpLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICAgICAgcmVj
ZWl2ZXIgPSBwYy5nZXRSZWNlaXZlcnMoKVswXTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVR5
cGUoInJlY2VpdmVyLnRyYWNrIiwgIk1lZGlhU3RyZWFtVHJhY2siKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZVRydWUoInJlY2VpdmVyLnRyYWNrLm11dGVkIik7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgicmVjZWl2ZXIudHJhY2sua2luZCIsICJzZW5kZXIudHJhY2sua2luZCIpOwor
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCIs
ICIxIik7CisgICAgICAgICAgICAgICAgdHJhbnNjZWl2ZXIgPSBwYy5nZXRUcmFuc2NlaXZlcnMo
KVswXTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoInRyYW5zY2VpdmVyLm1pZCIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0cmFuc2NlaXZlci5zZW5kZXIiLCAic2VuZGVyIik7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInRyYW5zY2VpdmVyLnJlY2VpdmVyIiwgInJlY2Vp
dmVyIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgidHJhbnNjZWl2ZXIuc3RvcHBl
ZCIpOworCiAgICAgICAgICAgICAgICAgZGVidWcoIlRyeSB0byBhZGQgc2FtZSB0cmFjayBhZ2Fp
biIpOwogICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJzZW5kZXIgPSBwYy5hZGRUcmFjayh0
cmFjaywgc3RyZWFtKSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQyYmRjZC4uY2VhZTI0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE2LTA2LTAxICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0u
YmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAorICAgICAgICBXZWJSVEM6IFVwZGF0ZSBSVENQZWVy
Q29ubmVjdGlvbi5hZGRUcmFjaygpIHRvIGNyZWF0ZSAob3IgcmV1c2UpIGFuIFJUQ1J0cFRyYW5z
Y2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhY2sgdG8gY3JlYXRlIGFuIFJUQ1J0cFRyYW5z
Y2V2aWVyLCBvciByZXVzZSBhbiBleGlzdGluZworICAgICAgICB0cmFuc2NlaXZlciB0aGF0IGhh
cyBub3QgYmVlbiB1c2VkIHRvIHNlbmQgWzFdLgorCisgICAgICAgIEEgbmV3IFJ0cFRyYW5zY2Vp
dmVyU2V0IHR5cGUgaXMgYWRkZWQgdGhhdCB3cmFwcyBhIHZlY3RvciBvZiBSVENSdHBUcmFuc2Nl
aXZlciBvYmplY3RzCisgICAgICAgIGFuZCBpbnRlcm5hbGx5IG1haW50YWlucyB0d28gbGlzdHMg
Zm9yIGVmZmljaWVudCBhY2Nlc3MgdG8gUlRDUnRwU2VuZGVyIGFuZCBSVENSdHBSZWNlaXZlcgor
ICAgICAgICBvYmplY3RzLgorCisgICAgICAgIFsxXSBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
cnRjLXBjL2FyY2hpdmVzLzIwMTYwNTEzL3dlYnJ0Yy5odG1sI2RvbS1ydGNwZWVyY29ubmVjdGlv
bi1hZGR0cmFjaworCisgICAgICAgIFVwZGF0ZWQgZXhpc3RpbmcgdGVzdDogZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3ZlVHJhY2suaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UGVlckNvbm5lY3Rpb246OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBU
cmFuc2NlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdHBUcmFuc2NlaXZlclNldDo6YXBw
ZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpSdHBUcmFuc2NlaXZlclNldDo6bGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdHBUcmFuc2NlaXZlclNldDo6Z2V0U2VuZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSdHBUcmFuc2NlaXZlclNldDo6Z2V0UmVjZWl2ZXJzKToKKworMjAxNi0wNi0wMSAgQWRhbSBC
ZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nvbi5jb20+CisKICAgICAgICAgV2ViUlRD
OiBBZGQgUlRDUnRwVHJhbnNjZWl2ZXIgaW50ZXJmYWNlIGFuZCBSVENQZWVyQ29ubmVjdGlvbi5h
ZGRUcmFuc2NlaXZlcigpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgxODkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4
IGRjODUxYmYuLjk2NjhmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAK
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3Jl
YXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFNlc3Npb25EZXNjcgogCiAgICAgY29uZmln
dXJhdGlvblNuYXBzaG90LT5zZXRTZXNzaW9uVmVyc2lvbihtX3NkcFNlc3Npb25WZXJzaW9uKysp
OwogCi0gICAgUnRwU2VuZGVyVmVjdG9yIHNlbmRlcnMgPSBtX2NsaWVudC0+Z2V0U2VuZGVycygp
OworICAgIFJ0cFNlbmRlclZlY3RvciBzZW5kZXJzID0gUnRwU2VuZGVyVmVjdG9yKG1fY2xpZW50
LT5nZXRTZW5kZXJzKCkpOwogCiAgICAgLy8gQWRkIG1lZGlhIGRlc2NyaXB0aW9ucyBmb3Igc2Vu
ZGVycy4KICAgICBmb3IgKGF1dG8mIHNlbmRlciA6IHNlbmRlcnMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oCmluZGV4IGY0YjM3ZjguLmIzODFjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNjEs
NyArNjEsOCBAQCB0eXBlZGVmIERPTVByb21pc2U8UlRDU3RhdHNSZXNwb25zZT4gU3RhdHNQcm9t
aXNlOwogCiBjbGFzcyBQZWVyQ29ubmVjdGlvbkJhY2tlbmRDbGllbnQgewogcHVibGljOgotICAg
IHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSVENSdHBTZW5kZXI+PiBnZXRTZW5kZXJzKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+
JiBnZXRUcmFuc2NlaXZlcnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8
UmVmUHRyPFJUQ1J0cFNlbmRlcj4+JiBnZXRTZW5kZXJzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaXJlRXZlbnQoRXZlbnQmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2ln
bmFsaW5nU3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDhmMmVjOWIuLjQyMzQ1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAx
NiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTEzLDcgKzExMyw3IEBAIFJlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1Bl
ZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBzZW5kZXIgOiBt
X3NlbmRlclNldCkgeworICAgIGZvciAoYXV0byYgc2VuZGVyIDogbV90cmFuc2NlaXZlclNldC0+
Z2V0U2VuZGVycygpKSB7CiAgICAgICAgIGlmIChzZW5kZXItPnRyYWNrSWQoKSA9PSB0cmFjay0+
aWQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFNwZWMgc2F5cyBJbnZhbGlkUGFyYW1ldGVy
CiAgICAgICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKQEAgLTEyNSw4ICsx
MjUsMzYgQEAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNr
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLAogICAgIGZvciAoYXV0byBzdHJlYW0gOiBz
dHJlYW1zKQogICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLT5pZCgpKTsKIAot
ICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdU
Rk1vdmUodHJhY2spLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgKnRoaXMpOwotICAgIG1fc2Vu
ZGVyU2V0LmFwcGVuZChzZW5kZXIpOworICAgIFJUQ1J0cFNlbmRlciogc2VuZGVyID0gbnVsbHB0
cjsKKworICAgIC8vIFJldXNlIGFuIGV4aXN0aW5nIHNlbmRlciB3aXRoIHRoZSBzYW1lIHRyYWNr
IGtpbmQgaWYgaXQgaGFzIG5ldmVyIGJlZW4gdXNlZCB0byBzZW5kIGJlZm9yZS4KKyAgICBmb3Ig
KGF1dG8mIHRyYW5zY2VpdmVyIDogbV90cmFuc2NlaXZlclNldC0+bGlzdCgpKSB7CisgICAgICAg
IFJUQ1J0cFNlbmRlciYgZXhpc3RpbmdTZW5kZXIgPSAqdHJhbnNjZWl2ZXItPnNlbmRlcigpOwor
ICAgICAgICBpZiAoZXhpc3RpbmdTZW5kZXIudHJhY2tLaW5kKCkgPT0gdHJhY2stPmtpbmQoKSAm
JiBleGlzdGluZ1NlbmRlci50cmFja0lkKCkuaXNOdWxsKCkgJiYgIXRyYW5zY2VpdmVyLT5oYXNT
ZW5kaW5nRGlyZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNldFRyYWNr
KFdURk1vdmUodHJhY2spKTsKKyAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNldE1lZGlhU3Ry
ZWFtSWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKKyAgICAgICAgICAgIHRyYW5zY2VpdmVy
LT5lbmFibGVTZW5kaW5nRGlyZWN0aW9uKCk7CisgICAgICAgICAgICBzZW5kZXIgPSAmZXhpc3Rp
bmdTZW5kZXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghc2VuZGVyKSB7CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0g
dHJhY2stPmtpbmQoKTsKKyAgICAgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCk7CisKKyAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNy
ZWF0ZShXVEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksICp0aGlzKTsKKyAg
ICAgICAgYXV0byByZWNlaXZlciA9IG1fYmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2
ZXJNaWQsIHRyYWNrS2luZCwgdHJhY2tJZCk7CisgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBS
VENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNl
aXZlcikpOworCisgICAgICAgIC8vIFRoaXMgdHJhbnNjZWl2ZXIgaXMgbm90IHlldCBhc3NvY2lh
dGVkIHdpdGggYW4gbS1saW5lIChudWxsIG1pZCksIGJ1dCB3ZSBuZWVkIGEKKyAgICAgICAgLy8g
cHJvdmlzaW9uYWwgbWlkIGlmIHRoZSB0cmFuc2NlaXZlciBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBv
ZmZlci4KKyAgICAgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVy
TWlkKTsKKworICAgICAgICBzZW5kZXIgPSB0cmFuc2NlaXZlci0+c2VuZGVyKCk7CisgICAgICAg
IG1fdHJhbnNjZWl2ZXJTZXQtPmFwcGVuZChXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CisgICAgfQog
CiAgICAgbV9iYWNrZW5kLT5tYXJrQXNOZWVkaW5nTmVnb3RpYXRpb24oKTsKIApAQCAtMTQwLDcg
KzE2OCw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRl
ciYgc2VuZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmICghbV9zZW5kZXJTZXQuY29udGFpbnMoJnNlbmRlcikpCisgICAgaWYgKCFtX3RyYW5z
Y2VpdmVyU2V0LT5nZXRTZW5kZXJzKCkuY29udGFpbnMoJnNlbmRlcikpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHNlbmRlci5zdG9wKCk7CkBAIC0xOTQsNyArMjIyLDcgQEAgUmVmUHRyPFJUQ1J0
cFRyYW5zY2VpdmVyPiBSVENQZWVyQ29ubmVjdGlvbjo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihS
ZWY8UlRDUnRwVHIKIHsKICAgICB0cmFuc2NlaXZlci0+c2V0RGlyZWN0aW9uKHN0YXRpY19jYXN0
PFJUQ1J0cFRyYW5zY2VpdmVyOjpEaXJlY3Rpb24+KGluaXQuZGlyZWN0aW9uKSk7CiAKLSAgICBt
X3RyYW5zY2VpdmVyU2V0LmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOworICAgIG1fdHJh
bnNjZWl2ZXJTZXQtPmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOwogICAgIG1fYmFja2Vu
ZC0+bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiAKICAgICByZXR1cm4gV1RGTW92ZSh0cmFu
c2NlaXZlcik7CkBAIC00MDQsNyArNDMyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y2xv
c2UoKQogICAgIG1faWNlQ29ubmVjdGlvblN0YXRlID0gSWNlQ29ubmVjdGlvblN0YXRlOjpDbG9z
ZWQ7CiAgICAgbV9zaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQ7CiAKLSAg
ICBmb3IgKGF1dG8mIHNlbmRlciA6IG1fc2VuZGVyU2V0KQorICAgIGZvciAoYXV0byYgc2VuZGVy
IDogbV90cmFuc2NlaXZlclNldC0+Z2V0U2VuZGVycygpKQogICAgICAgICBzZW5kZXItPnN0b3Ao
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDA1MzZjZWMuLjU0ZmE4MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgK
QEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UlRDUGVlckNvbm5l
Y3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGljdGlvbmFyeSYg
cnRjQ29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlv
bigpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxSVENSdHBTZW5kZXI+PiBnZXRTZW5kZXJzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZW5kZXJTZXQ7IH0KLSAgICBWZWN0b3I8UmVmUHRyPFJU
Q1J0cFJlY2VpdmVyPj4gZ2V0UmVjZWl2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9yZWNlaXZlclNl
dDsgfQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiYgZ2V0VHJh
bnNjZWl2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldDsgfQorICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4mIGdldFNlbmRlcnMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0LT5nZXRTZW5kZXJzKCk7IH0KKyAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPFJUQ1J0cFJlY2VpdmVyPj4mIGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhbnNjZWl2ZXJTZXQtPmdldFJlY2VpdmVycygpOyB9CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+JiBnZXRUcmFuc2NlaXZlcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0LT5saXN0KCk7IH0KIAogICAgIFJlZlB0cjxS
VENSdHBTZW5kZXI+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBWZWN0b3I8TWVk
aWFTdHJlYW0qPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRw
U2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMTQ5LDkgKzE0OSw3IEBAIHByaXZhdGU6CiAg
ICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUdhdGhlcmluZ1N0YXRlIG1faWNlR2F0aGVyaW5n
U3RhdGU7CiAgICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSBtX2lj
ZUNvbm5lY3Rpb25TdGF0ZTsKIAotICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gbV9z
ZW5kZXJTZXQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+IG1fcmVjZWl2ZXJT
ZXQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+IG1fdHJhbnNjZWl2ZXJT
ZXQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zY2VpdmVyU2V0PiBtX3RyYW5zY2VpdmVy
U2V0IHsgc3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zY2VpdmVyU2V0PihuZXcgUnRwVHJhbnNjZWl2
ZXJTZXQoKSkgfTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UlRDRGF0YUNoYW5uZWw+PiBtX2RhdGFD
aGFubmVsczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBUcmFuc2NlaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAppbmRleCA3NjJiZDRkLi5lMjkzZGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5z
Y2VpdmVyLmNwcApAQCAtMTAxLDYgKzEwMSwxNCBAQCB2b2lkIFJUQ1J0cFRyYW5zY2VpdmVyOjpk
aXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpCiAgICAgICAgIG1fZGlyZWN0aW9uID0gRGlyZWN0aW9u
OjpJbmFjdGl2ZTsKIH0KIAordm9pZCBSdHBUcmFuc2NlaXZlclNldDo6YXBwZW5kKFJlZlB0cjxS
VENSdHBUcmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikKK3sKKyAgICBtX3NlbmRlcnMuYXBwZW5k
KHRyYW5zY2VpdmVyLT5zZW5kZXIoKSk7CisgICAgbV9yZWNlaXZlcnMuYXBwZW5kKHRyYW5zY2Vp
dmVyLT5yZWNlaXZlcigpKTsKKworICAgIG1fdHJhbnNjZWl2ZXJzLmFwcGVuZChXVEZNb3ZlKHRy
YW5zY2VpdmVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oCmluZGV4IDFlZDRkZGMuLmJhM2NiNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2Vp
dmVyLmgKQEAgLTg2LDYgKzg2LDIxIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBm
YWxzZSB9OwogfTsKIAorY2xhc3MgUnRwVHJhbnNjZWl2ZXJTZXQgeworcHVibGljOgorICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiYgbGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhbnNjZWl2ZXJzOyB9CisgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFJUQ1J0cFRyYW5z
Y2VpdmVyPiYmKTsKKworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4mIGdl
dFNlbmRlcnMoKSBjb25zdCB7IHJldHVybiBtX3NlbmRlcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPFJUQ1J0cFJlY2VpdmVyPj4mIGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjZWl2ZXJzOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2Nl
aXZlcj4+IG1fdHJhbnNjZWl2ZXJzOworCisgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBTZW5kZXI+
PiBtX3NlbmRlcnM7CisgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+IG1fcmVjZWl2
ZXJzOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9SVEMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>