<?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>118678</bug_id>
          
          <creation_ts>2013-07-15 10:13:37 -0700</creation_ts>
          <short_desc>Web Inspector: WebSocket initialization to use remote inspector</short_desc>
          <delta_ts>2013-07-23 11:23:42 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          <dependson>118676</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Takacs">rtakacs</reporter>
          <assigned_to name="Roland Takacs">rtakacs</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>seokju</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>908449</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Takacs">rtakacs</who>
    <bug_when>2013-07-15 10:13:37 -0700</bug_when>
    <thetext>Some port use remote inspector only that requires WebSocket to the connection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908450</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-15 10:13:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/14444476&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908453</commentid>
    <comment_count>2</comment_count>
      <attachid>206676</attachid>
    <who name="Roland Takacs">rtakacs</who>
    <bug_when>2013-07-15 10:19:32 -0700</bug_when>
    <thetext>Created attachment 206676
initial patch

Added a WebSocket initialization from the old inspector code.
Also defined a &apos;connect-src&apos; directive into the Content-Security-Policy HTTP header to enable the connection.

Added WorkerManager.js file from the old inspector because it defines the isDedicatedWorkerFrontend() to skip the websocket initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908602</commentid>
    <comment_count>3</comment_count>
      <attachid>206676</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-07-15 17:54:45 -0700</bug_when>
    <thetext>Comment on attachment 206676
initial patch

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

&gt; Source/WebInspectorUI/UserInterface/Main.js:41
&gt; +{(function parseQueryParameters()
&gt; +{
&gt; +    WebInspector.queryParamsObject = {};
&gt; +    var queryParams = window.location.search;
&gt; +    if (!queryParams)
&gt; +        return;
&gt; +    var params = queryParams.substring(1).split(&quot;&amp;&quot;);
&gt; +    for (var i = 0; i &lt; params.length; ++i) {
&gt; +        var pair = params[i].split(&quot;=&quot;);
&gt; +        WebInspector.queryParamsObject[pair[0]] = pair[1];
&gt; +    }
&gt; +})();}

We have parseLocationQueryParameters in Utilities.js. And we use parseLocationQueryParameters once in Main.js already. We should only parse this once. We don&apos;t want WebInspector.queryParamsObject like we had before either.

&gt; Source/WebInspectorUI/UserInterface/Main.js:57
&gt; +    if (ws) {

This can be a early return.

&gt; Source/WebInspectorUI/UserInterface/Main.js:66
&gt; +            if (!WebInspector.socket._detachReason)
&gt; +                (new WebInspector.RemoteDebuggingTerminatedScreen(&quot;websocket_closed&quot;)).showModal();

WebInspector.RemoteDebuggingTerminatedScreen does not exist in our UI. Remove this for now.

&gt; Source/WebInspectorUI/UserInterface/Main.js:76
&gt; +    WebInspector.initializeWebSocketIfNeeded();

this.initializeWebSocketIfNeeded();

&gt; Source/WebInspectorUI/UserInterface/WorkerManager.js:50
&gt; +WebInspector.WorkerManager.isDedicatedWorkerFrontend = function()
&gt; +{
&gt; +    return !!WebInspector.queryParamsObject[&quot;dedicatedWorkerId&quot;];
&gt; +}

If this is all you use WebInspector.WorkerManager for, then this can go in Main.js and WorkerManager.js can be removed. I don&apos;t see WorkerManager being called otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908879</commentid>
    <comment_count>4</comment_count>
      <attachid>206676</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-07-16 07:22:59 -0700</bug_when>
    <thetext>Comment on attachment 206676
initial patch

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

&gt; Source/WebInspectorUI/UserInterface/Main.js:46
&gt; +    if (WebInspector.WorkerManager.isDedicatedWorkerFrontend())
&gt; +        return;

We don&apos;t have dedicated worker frontends. So you can remove this check and WorkerManager.

&gt; Source/WebInspectorUI/UserInterface/Main.js:61
&gt; +        WebInspector.socket.onmessage = function(message) { InspectorBackend.dispatch(message.data); }
&gt; +        WebInspector.socket.onerror = function(error) { console.error(error); }
&gt; +        WebInspector.socket.onopen = function() {

Can these use addEventListener instead?

&gt; Source/WebInspectorUI/UserInterface/Main.js:62
&gt; +            InspectorFrontendHost.sendMessageToBackend = WebInspector.socket.send.bind(WebInspector.socket);

This code should move to InspectorFrontendHostStub.js and if WebInspector.socket exists then use WebInspector.socket.send.

&gt; Source/WebInspectorUI/UserInterface/Main.js:64
&gt; +        WebInspector.socket.onclose = function() {

You can remove onclose.

&gt;&gt; Source/WebInspectorUI/UserInterface/WorkerManager.js:50
&gt;&gt; +}
&gt; 
&gt; If this is all you use WebInspector.WorkerManager for, then this can go in Main.js and WorkerManager.js can be removed. I don&apos;t see WorkerManager being called otherwise.

It turns out we don&apos;t have dedicated worker frontends like the deprecated Inspector — and likely never will. You can remove this and all of WorkerManager.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910568</commentid>
    <comment_count>5</comment_count>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2013-07-21 17:35:03 -0700</bug_when>
    <thetext>Any update on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910610</commentid>
    <comment_count>6</comment_count>
    <who name="Roland Takacs">rtakacs</who>
    <bug_when>2013-07-22 02:24:07 -0700</bug_when>
    <thetext>I will attach an updated patch soon.

(In reply to comment #5)
&gt; Any update on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910920</commentid>
    <comment_count>7</comment_count>
      <attachid>207307</attachid>
    <who name="Roland Takacs">rtakacs</who>
    <bug_when>2013-07-23 00:14:18 -0700</bug_when>
    <thetext>Created attachment 207307
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910978</commentid>
    <comment_count>8</comment_count>
      <attachid>207307</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-23 04:29:33 -0700</bug_when>
    <thetext>Comment on attachment 207307
patch

Clearing flags on attachment: 207307

Committed r153044: &lt;http://trac.webkit.org/changeset/153044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910979</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-23 04:29:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911097</commentid>
    <comment_count>10</comment_count>
      <attachid>207307</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-07-23 11:23:42 -0700</bug_when>
    <thetext>Comment on attachment 207307
patch

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

Just some unimportant post thoughts. Nothing that needs to be changed.

&gt; Source/WebInspectorUI/UserInterface/Main.js:35
&gt; +    // Initialize WebSocket to communication

Nits for the future, comments are sentences and should end in a period.

&gt; Source/WebInspectorUI/UserInterface/Main.js:1100
&gt; +        var host = &quot;host&quot; in queryParams ? queryParams.host : window.location.host;

I think this could have been written:

    var host = queryParams.host || window.location.host;

Unless the possibility of an empty string host (&quot;&quot;) would be considered valid.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206676</attachid>
            <date>2013-07-15 10:19:32 -0700</date>
            <delta_ts>2013-07-23 00:14:18 -0700</delta_ts>
            <desc>initial patch</desc>
            <filename>WEBSOCKET</filename>
            <type>text/plain</type>
            <size>18097</size>
            <attacher name="Roland Takacs">rtakacs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDc2MmJiYjEuLjhmZTg0NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTA3LTE0ICBSb2xhbmQgVGFrYWNz
ICA8cnRha2Fjc0BpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgV2ViU29ja2V0IGluaXRpYWxp
emF0aW9uIHRvIHVzZSByZW1vdGUgaW5zcGVjdG9yCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwg
KE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIFdlYlNvY2tldCBpbml0aWFsaXphdGlvbiBpbnRvIHRoZSBTYWZhcmkgaW5zcGVj
dG9yIGFuZCBkZWZpbmVkIGEKKyAgICAgICAgJ2Nvbm5lY3Qtc3JjJyBkaXJlY3RpdmUgaW4gdGhl
IENvbnRlbnQtU2VjdXJpdHktUG9saWN5IEhUVFAgaGVhZGVyIHRvCisgICAgICAgIGVuYWJsZSB0
aGUgY29ubmVjdGlvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbml0
aWFsaXplV2ViU29ja2V0SWZOZWVkZWQuV2ViSW5zcGVjdG9yLnNvY2tldC5vbm1lc3NhZ2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmluaXRpYWxpemVXZWJTb2NrZXRJZk5lZWRlZC5XZWJJbnNw
ZWN0b3Iuc29ja2V0Lm9uZXJyb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluaXRpYWxpemVX
ZWJTb2NrZXRJZk5lZWRlZC5XZWJJbnNwZWN0b3Iuc29ja2V0Lm9ub3Blbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuaW5pdGlhbGl6ZVdlYlNvY2tldElmTmVlZGVkLldlYkluc3BlY3Rvci5zb2Nr
ZXQub25jbG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5pdGlhbGl6ZVdlYlNvY2tldElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvV29ya2VyTWFuYWdlci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
V29ya2VyTWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5pc1dv
cmtlckZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzRGVk
aWNhdGVkV29ya2VyRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtlck1hbmFn
ZXIubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmxvYWRDb21w
bGV0ZWQuY2FsY3VsYXRlVGl0bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtlck1hbmFn
ZXIubG9hZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5f
aW5pdGlhbGl6ZURlZGljYXRlZFdvcmtlckZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Xb3JrZXJNYW5hZ2VyLl9pbml0aWFsaXplRGVkaWNhdGVkV29ya2VyRnJvbnRlbmQuSW5zcGVj
dG9yQmFja2VuZC5zZW5kTWVzc2FnZU9iamVjdFRvQmFja2VuZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuV29ya2VyTWFuYWdlci5faW5pdGlhbGl6ZURlZGljYXRlZFdvcmtlckZyb250ZW5kLklu
c3BlY3RvckZyb250ZW5kSG9zdC5sb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtl
ck1hbmFnZXIuX2NhbGN1bGF0ZVdvcmtlckluc3BlY3RvclRpdGxlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLnByb3RvdHlwZS5fd29ya2VyQ3JlYXRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5wcm90b3R5cGUuX3dvcmtlclRlcm1pbmF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIucHJvdG90eXBlLl9zZW5kTWVz
c2FnZVRvV29ya2VySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5h
Z2VyLnByb3RvdHlwZS5vcGVuV29ya2VySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Xb3JrZXJNYW5hZ2VyLnByb3RvdHlwZS5jbG9zZVdvcmtlckluc3BlY3Rvcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5wcm90b3R5cGUuX21haW5GcmFtZU5hdmlnYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5wcm90b3R5cGUuX3BhZ2VJ
bnNwZWN0b3JDbG9zaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLnBy
b3RvdHlwZS5zZXQgX3dvcmtlckluc3BlY3RvckNsb3NpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLldvcmtlck1hbmFnZXIucHJvdG90eXBlLl9kaXNjb25uZWN0ZWRGcm9tV29ya2VyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Xb3JrZXJEaXNwYXRjaGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Xb3JrZXJEaXNwYXRjaGVyLnByb3RvdHlwZS5fcmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLldvcmtlckRpc3BhdGNoZXIucHJvdG90eXBlLndvcmtlckNyZWF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtlckRpc3BhdGNoZXIucHJvdG90eXBlLndvcmtl
clRlcm1pbmF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtlckRpc3BhdGNoZXIucHJv
dG90eXBlLmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LldvcmtlckRpc3BhdGNoZXIucHJvdG90eXBlLmRpc2Nvbm5lY3RlZEZyb21Xb3JrZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLldvcmtlclRlcm1pbmF0ZWRTY3JlZW4pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLldvcmtlclRlcm1pbmF0ZWRTY3JlZW4ucHJvdG90eXBlLndpbGxIaWRlKToKKwog
MjAxMy0wNy0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAg
ICAgR3VhcmQgcmVtYWluaW5nIGNhbGxzIHRvIGRlY29kZVVSSUNvbXBvbmVudCB3aXRoIGEgdHJ5
L2NhdGNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CmluZGV4IGFhNDRiMTIuLjZiZTUxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAKIDxodG1sPgogPGhlYWQ+CiAg
ICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9s
aWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAnc2VsZic7IGltZy1zcmMgKjsgbWVkaWEtc3JjICo7
IGZvbnQtc3JjICo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnOyBzY3JpcHQtc3Jj
ICdzZWxmJyAndW5zYWZlLWlubGluZSciPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
U2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAnc2VsZic7IGltZy1zcmMgKjsg
Y29ubmVjdC1zcmMgKjsgbWVkaWEtc3JjICo7IGZvbnQtc3JjICo7IHN0eWxlLXNyYyAnc2VsZicg
J3Vuc2FmZS1pbmxpbmUnOyBzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSciPgogCiAg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJFeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVt
aXJyb3IuY3NzIj4KIApAQCAtMzc3LDYgKzM3Nyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnNv
bGVQcm9tcHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNSU1FVHlwZVV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkxvYWRMb2NhbGl6ZWRTdHJpbmdzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iV29ya2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1haW4uanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCmluZGV4IGRmMGE4NTcu
LmNmZGQ3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5q
cwpAQCAtMjcsMTEgKzI3LDU0IEBAIFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24gPSB7CiAgICAg
R2xvYmFsTW9kaWZpZXJLZXlzRGlkQ2hhbmdlOiAiZ2xvYmFsLW1vZGlmaWVycy1kaWQtY2hhbmdl
IgogfTsKIAoreyhmdW5jdGlvbiBwYXJzZVF1ZXJ5UGFyYW1ldGVycygpCit7CisgICAgV2ViSW5z
cGVjdG9yLnF1ZXJ5UGFyYW1zT2JqZWN0ID0ge307CisgICAgdmFyIHF1ZXJ5UGFyYW1zID0gd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaDsKKyAgICBpZiAoIXF1ZXJ5UGFyYW1zKQorICAgICAgICByZXR1
cm47CisgICAgdmFyIHBhcmFtcyA9IHF1ZXJ5UGFyYW1zLnN1YnN0cmluZygxKS5zcGxpdCgiJiIp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHZhciBwYWlyID0gcGFyYW1zW2ldLnNwbGl0KCI9Iik7CisgICAgICAgIFdlYkluc3BlY3Rvci5x
dWVyeVBhcmFtc09iamVjdFtwYWlyWzBdXSA9IHBhaXJbMV07CisgICAgfQorfSkoKTt9CisKK1dl
Ykluc3BlY3Rvci5pbml0aWFsaXplV2ViU29ja2V0SWZOZWVkZWQgPSBmdW5jdGlvbigpCit7Cisg
ICAgaWYgKFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzRGVkaWNhdGVkV29ya2VyRnJvbnRl
bmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIHdzOworICAgIGlmICgid3MiIGluIFdl
Ykluc3BlY3Rvci5xdWVyeVBhcmFtc09iamVjdCkKKyAgICAgICAgd3MgPSAid3M6Ly8iICsgV2Vi
SW5zcGVjdG9yLnF1ZXJ5UGFyYW1zT2JqZWN0LndzOworICAgIGVsc2UgaWYgKCJwYWdlIiBpbiBX
ZWJJbnNwZWN0b3IucXVlcnlQYXJhbXNPYmplY3QpIHsKKyAgICAgICAgdmFyIHBhZ2UgPSBXZWJJ
bnNwZWN0b3IucXVlcnlQYXJhbXNPYmplY3QucGFnZTsKKyAgICAgICAgdmFyIGhvc3QgPSAiaG9z
dCIgaW4gV2ViSW5zcGVjdG9yLnF1ZXJ5UGFyYW1zT2JqZWN0ID8gV2ViSW5zcGVjdG9yLnF1ZXJ5
UGFyYW1zT2JqZWN0Lmhvc3QgOiB3aW5kb3cubG9jYXRpb24uaG9zdDsKKyAgICAgICAgd3MgPSAi
d3M6Ly8iICsgaG9zdCArICIvZGV2dG9vbHMvcGFnZS8iICsgcGFnZTsKKyAgICB9CisKKyAgICBp
ZiAod3MpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQod3Mp
OworICAgICAgICBXZWJJbnNwZWN0b3Iuc29ja2V0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3Nh
Z2UpIHsgSW5zcGVjdG9yQmFja2VuZC5kaXNwYXRjaChtZXNzYWdlLmRhdGEpOyB9CisgICAgICAg
IFdlYkluc3BlY3Rvci5zb2NrZXQub25lcnJvciA9IGZ1bmN0aW9uKGVycm9yKSB7IGNvbnNvbGUu
ZXJyb3IoZXJyb3IpOyB9CisgICAgICAgIFdlYkluc3BlY3Rvci5zb2NrZXQub25vcGVuID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2VuZE1lc3NhZ2VU
b0JhY2tlbmQgPSBXZWJJbnNwZWN0b3Iuc29ja2V0LnNlbmQuYmluZChXZWJJbnNwZWN0b3Iuc29j
a2V0KTsKKyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3Iuc29ja2V0Lm9uY2xvc2UgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLnNvY2tldC5fZGV0YWNo
UmVhc29uKQorICAgICAgICAgICAgICAgIChuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZURlYnVnZ2lu
Z1Rlcm1pbmF0ZWRTY3JlZW4oIndlYnNvY2tldF9jbG9zZWQiKSkuc2hvd01vZGFsKCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7CiAg
ICAgLy8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCBmaXJzdCB0byBl
c3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIEluc3BlY3RvckJhY2tlbmQuCiAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmxvYWRlZCgpOwogCisgICAgV2ViSW5zcGVjdG9yLmluaXRpYWxpemVX
ZWJTb2NrZXRJZk5lZWRlZCgpOworCiAgICAgLy8gUmVnaXN0ZXIgb2JzZXJ2ZXJzIGZvciBldmVu
dHMgZnJvbSB0aGUgSW5zcGVjdG9yQmFja2VuZC4KICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lz
dGVySW5zcGVjdG9yRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVy
KTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUGFnZURpc3BhdGNoZXIobmV3IFdlYklu
c3BlY3Rvci5QYWdlT2JzZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvV29ya2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1dvcmtlck1hbmFnZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjZlMjgzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1dvcmtlck1hbmFnZXIuanMKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKi8KK1dl
Ykluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX3dvcmtl
cklkVG9XaW5kb3cgPSB7fTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyV29ya2VyRGlz
cGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLldvcmtlckRpc3BhdGNoZXIodGhpcykpOworfQorCitX
ZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kID0gZnVuY3Rpb24oKQor
eworICAgIHJldHVybiAhIVdlYkluc3BlY3Rvci5xdWVyeVBhcmFtc09iamVjdFsiZGVkaWNhdGVk
V29ya2VySWQiXSB8fAorICAgICAgICAgICAhIVdlYkluc3BlY3Rvci5xdWVyeVBhcmFtc09iamVj
dFsiaXNTaGFyZWRXb3JrZXIiXTsKK30KKworV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNE
ZWRpY2F0ZWRXb3JrZXJGcm9udGVuZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gISFXZWJJ
bnNwZWN0b3IucXVlcnlQYXJhbXNPYmplY3RbImRlZGljYXRlZFdvcmtlcklkIl07Cit9CisKK1dl
Ykluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmxvYWRlZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIg
d29ya2VySWQgPSBXZWJJbnNwZWN0b3IucXVlcnlQYXJhbXNPYmplY3RbImRlZGljYXRlZFdvcmtl
cklkIl07CisgICAgaWYgKHdvcmtlcklkKQorICAgICAgICBXZWJJbnNwZWN0b3IuV29ya2VyTWFu
YWdlci5faW5pdGlhbGl6ZURlZGljYXRlZFdvcmtlckZyb250ZW5kKHdvcmtlcklkKTsKKyAgICBl
bHNlCisgICAgICAgIFdlYkluc3BlY3Rvci53b3JrZXJNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rv
ci5Xb3JrZXJNYW5hZ2VyKCk7Cit9CisKK1dlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmxvYWRD
b21wbGV0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgLy8gTWFrZSBzdXJlIHNjcmlwdCBleGVjdXRp
b24gb2YgZGVkaWNhdGVkIHdvcmtlciBpcyByZXN1bWVkIGFuZCB0aGVuIHBhdXNlZAorICAgIC8v
IG9uIHRoZSBmaXJzdCBzY3JpcHQgc3RhdGVtZW50IGluIGNhc2Ugd2UgYXV0b2F0dGFjaGVkIHRv
IGl0LgorICAgIGlmIChXZWJJbnNwZWN0b3IucXVlcnlQYXJhbXNPYmplY3RbIndvcmtlclBhdXNl
ZCJdKSB7CisgICAgICAgIERlYnVnZ2VyQWdlbnQucGF1c2UoKTsKKyAgICAgICAgUnVudGltZUFn
ZW50LnJ1bihjYWxjdWxhdGVUaXRsZSk7CisgICAgfSBlbHNlIGlmIChXZWJJbnNwZWN0b3IuV29y
a2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpCisgICAgICAgIGNhbGN1bGF0ZVRpdGxlKCk7
CisKKyAgICBmdW5jdGlvbiBjYWxjdWxhdGVUaXRsZSgpCisgICAgeworICAgICAgICBXZWJJbnNw
ZWN0b3IuV29ya2VyTWFuYWdlci5fY2FsY3VsYXRlV29ya2VySW5zcGVjdG9yVGl0bGUoKTsKKyAg
ICB9CisKKyAgICBpZiAoV2ViSW5zcGVjdG9yLndvcmtlck1hbmFnZXIpCisgICAgICAgIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLk1haW5GcmFtZU5hdmlnYXRlZCwgV2ViSW5zcGVj
dG9yLndvcmtlck1hbmFnZXIuX21haW5GcmFtZU5hdmlnYXRlZCwgV2ViSW5zcGVjdG9yLndvcmtl
ck1hbmFnZXIpOworfQorCitXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5faW5pdGlhbGl6ZURl
ZGljYXRlZFdvcmtlckZyb250ZW5kID0gZnVuY3Rpb24od29ya2VySWQpCit7CisgICAgZnVuY3Rp
b24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpCisgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9IGV2
ZW50LmRhdGE7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGlzcGF0Y2gobWVzc2FnZSk7Cisg
ICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3Nh
Z2UsIHRydWUpOworCisKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnNlbmRNZXNzYWdlT2JqZWN0VG9C
YWNrZW5kID0gZnVuY3Rpb24obWVzc2FnZSkKKyAgICB7CisgICAgICAgIHdpbmRvdy5vcGVuZXIu
cG9zdE1lc3NhZ2Uoe3dvcmtlcklkOiB3b3JrZXJJZCwgY29tbWFuZDogInNlbmRNZXNzYWdlVG9C
YWNrZW5kIiwgbWVzc2FnZTogbWVzc2FnZX0sICIqIik7CisgICAgfQorCisgICAgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmxvYWRlZCA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHdpbmRvdy5v
cGVuZXIucG9zdE1lc3NhZ2Uoe3dvcmtlcklkOiB3b3JrZXJJZCwgY29tbWFuZDogImxvYWRlZCJ9
LCAiKiIpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuX2NhbGN1bGF0
ZVdvcmtlckluc3BlY3RvclRpdGxlID0gZnVuY3Rpb24oKQoreworICAgIHZhciBleHByZXNzaW9u
ID0gImxvY2F0aW9uLmhyZWYiOworICAgIGlmIChXZWJJbnNwZWN0b3IucXVlcnlQYXJhbXNPYmpl
Y3RbImlzU2hhcmVkV29ya2VyIl0pCisgICAgICAgIGV4cHJlc3Npb24gKz0gIiArICh0aGlzLm5h
bWUgPyAnICgnICsgdGhpcy5uYW1lICsgJyknIDogJycpIjsKKyAgICBSdW50aW1lQWdlbnQuZXZh
bHVhdGUuaW52b2tlKHtleHByZXNzaW9uOmV4cHJlc3Npb24sIGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZTp0cnVlLCByZXR1cm5CeVZhbHVlOiB0cnVlfSwgZXZhbENhbGxiYWNr
LmJpbmQodGhpcykpOworICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVy
cm9yfSBlcnJvcgorICAgICAqIEBwYXJhbSB7UnVudGltZUFnZW50LlJlbW90ZU9iamVjdH0gcmVz
dWx0CisgICAgICogQHBhcmFtIHtib29sZWFuPX0gd2FzVGhyb3duCisgICAgICovCisgICAgZnVu
Y3Rpb24gZXZhbENhbGxiYWNrKGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikKKyAgICB7CisgICAg
ICAgIGlmIChlcnJvciB8fCB3YXNUaHJvd24pIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
ZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHJlc3VsdC52YWx1ZSk7CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5FdmVudHMgPSB7CisgICAgV29ya2VyQWRk
ZWQ6ICJ3b3JrZXItYWRkZWQiLAorICAgIFdvcmtlclJlbW92ZWQ6ICJ3b3JrZXItcmVtb3ZlZCIs
CisgICAgV29ya2Vyc0NsZWFyZWQ6ICJ3b3JrZXJzLWNsZWFyZWQiLAorfQorCitXZWJJbnNwZWN0
b3IuV29ya2VyTWFuYWdlci5wcm90b3R5cGUgPSB7CisgICAgX3dvcmtlckNyZWF0ZWQ6IGZ1bmN0
aW9uKHdvcmtlcklkLCB1cmwsIGluc3BlY3RvckNvbm5lY3RlZCkKKyAgICAgeworICAgICAgICBp
ZiAoaW5zcGVjdG9yQ29ubmVjdGVkKQorICAgICAgICAgICAgdGhpcy5fb3Blbkluc3BlY3Rvcldp
bmRvdyh3b3JrZXJJZCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLkV2ZW50cy5Xb3JrZXJBZGRlZCwge3dvcmtl
cklkOiB3b3JrZXJJZCwgdXJsOiB1cmwsIGluc3BlY3RvckNvbm5lY3RlZDogaW5zcGVjdG9yQ29u
bmVjdGVkfSk7CisgICAgIH0sCisKKyAgICBfd29ya2VyVGVybWluYXRlZDogZnVuY3Rpb24od29y
a2VySWQpCisgICAgIHsKKyAgICAgICAgdGhpcy5jbG9zZVdvcmtlckluc3BlY3Rvcih3b3JrZXJJ
ZCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5X
b3JrZXJNYW5hZ2VyLkV2ZW50cy5Xb3JrZXJSZW1vdmVkLCB3b3JrZXJJZCk7CisgICAgIH0sCisK
KyAgICBfc2VuZE1lc3NhZ2VUb1dvcmtlckluc3BlY3RvcjogZnVuY3Rpb24od29ya2VySWQsIG1l
c3NhZ2UpCisgICAgeworICAgICAgICB2YXIgd29ya2VySW5zcGVjdG9yV2luZG93ID0gdGhpcy5f
d29ya2VySWRUb1dpbmRvd1t3b3JrZXJJZF07CisgICAgICAgIGlmICh3b3JrZXJJbnNwZWN0b3JX
aW5kb3cpCisgICAgICAgICAgICB3b3JrZXJJbnNwZWN0b3JXaW5kb3cucG9zdE1lc3NhZ2UobWVz
c2FnZSwgIioiKTsKKyAgICB9LAorCisgICAgb3Blbldvcmtlckluc3BlY3RvcjogZnVuY3Rpb24o
d29ya2VySWQpCisgICAgeworICAgICAgICB2YXIgZXhpc3RpbmdJbnNwZWN0b3IgPSB0aGlzLl93
b3JrZXJJZFRvV2luZG93W3dvcmtlcklkXTsKKyAgICAgICAgaWYgKGV4aXN0aW5nSW5zcGVjdG9y
KSB7CisgICAgICAgICAgICBleGlzdGluZ0luc3BlY3Rvci5mb2N1cygpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fb3Blbkluc3BlY3RvcldpbmRvdyh3
b3JrZXJJZCwgZmFsc2UpOworICAgICAgICBXb3JrZXJBZ2VudC5jb25uZWN0VG9Xb3JrZXIod29y
a2VySWQpOworICAgIH0sCisKKyAgICBfb3Blbkluc3BlY3RvcldpbmRvdzogZnVuY3Rpb24od29y
a2VySWQsIHdvcmtlcklzUGF1c2VkKQorICAgIHsKKyAgICAgICAgdmFyIHNlYXJjaCA9IHdpbmRv
dy5sb2NhdGlvbi5zZWFyY2g7CisgICAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhh
c2g7CisgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKKyAgICAgICAgLy8g
TWFrZSBzdXJlIGhhc2ggaXMgaW4gcmVhcgorICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShoYXNo
LCAiIik7CisgICAgICAgIHVybCArPSAoc2VhcmNoID8gIiZkZWRpY2F0ZWRXb3JrZXJJZD0iIDog
Ij9kZWRpY2F0ZWRXb3JrZXJJZD0iKSArIHdvcmtlcklkOworICAgICAgICBpZiAod29ya2VySXNQ
YXVzZWQpCisgICAgICAgICAgICB1cmwgKz0gIiZ3b3JrZXJQYXVzZWQ9dHJ1ZSI7CisgICAgICAg
IHVybCA9IHVybC5yZXBsYWNlKCJkb2NrZWQ9dHJ1ZSYiLCAiIik7CisgICAgICAgIHVybCArPSBo
YXNoOworICAgICAgICB2YXIgd2lkdGggPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mud29ya2VySW5z
cGVjdG9yV2lkdGguZ2V0KCk7CisgICAgICAgIHZhciBoZWlnaHQgPSBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3Mud29ya2VySW5zcGVjdG9ySGVpZ2h0LmdldCgpOworICAgICAgICAvLyBTZXQgbG9jYXRp
b249MCBqdXN0IHRvIG1ha2Ugc3VyZSB0aGUgZnJvbnQtZW5kIHdpbGwgYmUgb3BlbmVkIGluIGEg
c2VwYXJhdGUgd2luZG93LCBub3QgaW4gbmV3IHRhYi4KKyAgICAgICAgdmFyIHdvcmtlckluc3Bl
Y3RvcldpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgdW5kZWZpbmVkLCAibG9jYXRpb249MCx3aWR0
aD0iICsgd2lkdGggKyAiLGhlaWdodD0iICsgaGVpZ2h0KTsKKyAgICAgICAgd29ya2VySW5zcGVj
dG9yV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX29uV29ya2VySW5zcGVj
dG9yUmVzaXplLmJpbmQodGhpcywgd29ya2VySW5zcGVjdG9yV2luZG93KSwgZmFsc2UpOworICAg
ICAgICB0aGlzLl93b3JrZXJJZFRvV2luZG93W3dvcmtlcklkXSA9IHdvcmtlckluc3BlY3Rvcldp
bmRvdzsKKyAgICAgICAgd29ya2VySW5zcGVjdG9yV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJl
Zm9yZXVubG9hZCIsIHRoaXMuX3dvcmtlckluc3BlY3RvckNsb3NpbmcuYmluZCh0aGlzLCB3b3Jr
ZXJJZCksIHRydWUpOworCisgICAgICAgIC8vIExpc3RlbiB0byBiZWZvcmV1bmxvYWQgaW4gZGV0
YWNoZWQgc3RhdGUgYW5kIHRvIHRoZSBJbnNwZWN0b3JDbG9zaW5nIGV2ZW50IGluIGNhc2Ugb2Yg
YXR0YWNoZWQgaW5zcGVjdG9yLgorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVm
b3JldW5sb2FkIiwgdGhpcy5fcGFnZUluc3BlY3RvckNsb3NpbmcuYmluZCh0aGlzKSwgdHJ1ZSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkV2ZW50cy5JbnNwZWN0b3JDbG9zaW5nLCB0aGlzLl9wYWdlSW5zcGVjdG9yQ2xv
c2luZywgdGhpcyk7CisgICAgfSwKKworICAgIGNsb3NlV29ya2VySW5zcGVjdG9yOiBmdW5jdGlv
bih3b3JrZXJJZCkKKyAgICB7CisgICAgICAgIHZhciB3b3JrZXJJbnNwZWN0b3JXaW5kb3cgPSB0
aGlzLl93b3JrZXJJZFRvV2luZG93W3dvcmtlcklkXTsKKyAgICAgICAgaWYgKHdvcmtlckluc3Bl
Y3RvcldpbmRvdykKKyAgICAgICAgICAgIHdvcmtlckluc3BlY3RvcldpbmRvdy5jbG9zZSgpOwor
ICAgIH0sCisKKyAgICBfbWFpbkZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGZvciAodmFyIHdvcmtlcklkIGluIHRoaXMuX3dvcmtlcklkVG9XaW5kb3cpCisg
ICAgICAgICAgICB0aGlzLmNsb3NlV29ya2VySW5zcGVjdG9yKHdvcmtlcklkKTsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIu
RXZlbnRzLldvcmtlcnNDbGVhcmVkKTsKKyAgICB9LAorCisgICAgX3BhZ2VJbnNwZWN0b3JDbG9z
aW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9pZ25vcmVXb3JrZXJJbnNwZWN0
b3JDbG9zaW5nID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgd29ya2VySWQgaW4gdGhpcy5fd29y
a2VySWRUb1dpbmRvdykgeworICAgICAgICAgICAgdGhpcy5fd29ya2VySWRUb1dpbmRvd1t3b3Jr
ZXJJZF0uY2xvc2UoKTsKKyAgICAgICAgICAgIFdvcmtlckFnZW50LmRpc2Nvbm5lY3RGcm9tV29y
a2VyKHBhcnNlSW50KHdvcmtlcklkLCAxMCkpOworICAgICAgICB9CisgICAgfSwKKworICAgIF9v
bldvcmtlckluc3BlY3RvclJlc2l6ZTogZnVuY3Rpb24od29ya2VySW5zcGVjdG9yV2luZG93KQor
ICAgIHsKKyAgICAgICAgdmFyIGRvYyA9IHdvcmtlckluc3BlY3RvcldpbmRvdy5kb2N1bWVudDsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLndvcmtlckluc3BlY3RvcldpZHRoLnNldChk
b2Mud2lkdGgpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mud29ya2VySW5zcGVjdG9y
SGVpZ2h0LnNldChkb2MuaGVpZ2h0KTsKKyAgICB9LAorCisgICAgX3dvcmtlckluc3BlY3RvckNs
b3Npbmc6IGZ1bmN0aW9uKHdvcmtlcklkLCBldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVu
dC50YXJnZXQubG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJsYW5rIikKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKHRoaXMuX2lnbm9yZVdvcmtlckluc3BlY3RvckNsb3NpbmcpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlbGV0ZSB0aGlzLl93b3JrZXJJZFRvV2luZG93
W3dvcmtlcklkXTsKKyAgICAgICAgV29ya2VyQWdlbnQuZGlzY29ubmVjdEZyb21Xb3JrZXIod29y
a2VySWQpOworICAgIH0sCisKKyAgICBfZGlzY29ubmVjdGVkRnJvbVdvcmtlcjogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdmFyIHNjcmVlbiA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya2VyVGVy
bWluYXRlZFNjcmVlbigpOworICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5HbG9iYWxPYmpl
Y3RDbGVhcmVkLCBzY3JlZW4uaGlkZSwgc2NyZWVuKTsKKyAgICAgICAgc2NyZWVuLnNob3dNb2Rh
bCgpOworICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90
eXBlCit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V29ya2VyQWdl
bnQuRGlzcGF0Y2hlcn0KKyAqLworV2ViSW5zcGVjdG9yLldvcmtlckRpc3BhdGNoZXIgPSBmdW5j
dGlvbih3b3JrZXJNYW5hZ2VyKQoreworICAgIHRoaXMuX3dvcmtlck1hbmFnZXIgPSB3b3JrZXJN
YW5hZ2VyOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fcmVj
ZWl2ZU1lc3NhZ2UuYmluZCh0aGlzKSwgdHJ1ZSk7Cit9CisKK1dlYkluc3BlY3Rvci5Xb3JrZXJE
aXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKKyAgICBfcmVjZWl2ZU1lc3NhZ2U6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHdvcmtlcklkID0gZXZlbnQuZGF0YVsid29ya2VySWQi
XTsKKyAgICAgICAgd29ya2VySWQgPSBwYXJzZUludCh3b3JrZXJJZCwgMTApOworICAgICAgICB2
YXIgY29tbWFuZCA9IGV2ZW50LmRhdGEuY29tbWFuZDsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBl
dmVudC5kYXRhLm1lc3NhZ2U7CisKKyAgICAgICAgaWYgKGNvbW1hbmQgPT0gInNlbmRNZXNzYWdl
VG9CYWNrZW5kIikKKyAgICAgICAgICAgIFdvcmtlckFnZW50LnNlbmRNZXNzYWdlVG9Xb3JrZXIo
d29ya2VySWQsIG1lc3NhZ2UpOworICAgIH0sCisKKyAgICB3b3JrZXJDcmVhdGVkOiBmdW5jdGlv
bih3b3JrZXJJZCwgdXJsLCBpbnNwZWN0b3JDb25uZWN0ZWQpCisgICAgeworICAgICAgICB0aGlz
Ll93b3JrZXJNYW5hZ2VyLl93b3JrZXJDcmVhdGVkKHdvcmtlcklkLCB1cmwsIGluc3BlY3RvckNv
bm5lY3RlZCk7CisgICAgfSwKKworICAgIHdvcmtlclRlcm1pbmF0ZWQ6IGZ1bmN0aW9uKHdvcmtl
cklkKQorICAgIHsKKyAgICAgICAgdGhpcy5fd29ya2VyTWFuYWdlci5fd29ya2VyVGVybWluYXRl
ZCh3b3JrZXJJZCk7CisgICAgfSwKKworICAgIGRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXI6IGZ1
bmN0aW9uKHdvcmtlcklkLCBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fd29ya2VyTWFu
YWdlci5fc2VuZE1lc3NhZ2VUb1dvcmtlckluc3BlY3Rvcih3b3JrZXJJZCwgbWVzc2FnZSk7Cisg
ICAgfSwKKworICAgIGRpc2Nvbm5lY3RlZEZyb21Xb3JrZXI6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3dvcmtlck1hbmFnZXIuX2Rpc2Nvbm5lY3RlZEZyb21Xb3JrZXIoKTsKKyAg
ICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LkhlbHBTY3JlZW59CisgKi8KK1dlYkluc3BlY3Rvci5Xb3JrZXJUZXJtaW5hdGVkU2NyZWVuID0g
ZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5IZWxwU2NyZWVuLmNhbGwodGhpcywgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJJbnNwZWN0ZWQgd29ya2VyIHRlcm1pbmF0ZWQiKSk7CisgICAg
dmFyIHAgPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJwIik7CisgICAgcC5hZGRT
dHlsZUNsYXNzKCJoZWxwLXNlY3Rpb24iKTsKKyAgICBwLnRleHRDb250ZW50ID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJJbnNwZWN0ZWQgd29ya2VyIGhhcyB0ZXJtaW5hdGVkLiBPbmNlIGl0IHJl
c3RhcnRzIHdlIHdpbGwgYXR0YWNoIHRvIGl0IGF1dG9tYXRpY2FsbHkuIik7Cit9CisKK1dlYklu
c3BlY3Rvci5Xb3JrZXJUZXJtaW5hdGVkU2NyZWVuLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAb3ZlcnJpZGUKKyAgICAgKi8KKyAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuR2xvYmFsT2JqZWN0Q2xlYXJlZCwgdGhp
cy5oaWRlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkhlbHBTY3JlZW4ucHJvdG90eXBl
LndpbGxIaWRlLmNhbGwodGhpcyk7CisgICAgfSwKKworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLkhlbHBTY3JlZW4ucHJvdG90eXBlCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207307</attachid>
            <date>2013-07-23 00:14:18 -0700</date>
            <delta_ts>2013-07-23 11:23:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>websocket.diff</filename>
            <type>text/plain</type>
            <size>4369</size>
            <attacher name="Roland Takacs">rtakacs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDcxNjk2MGIuLjM3NmY2MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA3LTIzICBSb2xhbmQgVGFrYWNz
ICA8cnRha2Fjc0BpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgV2ViU29ja2V0IGluaXRpYWxp
emF0aW9uIHRvIHVzZSByZW1vdGUgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg2NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViU29ja2V0IGluaXRpYWxpemF0aW9uIGFuZCBk
ZWZpbmUgYSAnY29ubmVjdC1zcmMnIGRpcmVjdGl2ZSBpbiB0aGUKKyAgICAgICAgQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kgSFRUUCBoZWFkZXIgdG8gZW5hYmxlIHRoZSBjb25uZWN0aW9uLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzOgorICAg
ICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5z
ZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6
CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVXZWJTb2NrZXRJZk5l
ZWRlZC5jcmVhdGVTb2NrZXQuV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5f
aW5pdGlhbGl6ZVdlYlNvY2tldElmTmVlZGVkLmNyZWF0ZVNvY2tldCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuX2luaXRpYWxpemVXZWJTb2NrZXRJZk5lZWRlZCk6CisKIDIwMTMtMDctMjEgIFNl
b2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENsZWFudXAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1
Yi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250
ZW5kSG9zdFN0dWIuanMKaW5kZXggYzFlYWRkOS4uMTliM2ZhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNwZWN0b3JGcm9u
dGVuZEhvc3RTdHViLmpzCkBAIC0xMDEsNiArMTAxLDggQEAgaWYgKCF3aW5kb3cuSW5zcGVjdG9y
RnJvbnRlbmRIb3N0KSB7CiAKICAgICAgICAgc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6IGZ1bmN0aW9u
KG1lc3NhZ2UpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc29ja2V0
KQorICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zb2NrZXQuc2VuZChtZXNzYWdlKTsKICAg
ICAgICAgfSwKIAogICAgICAgICBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmdW5jdGlvbih1
cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5k
ZXggZTBiZjI5Ny4uY2M5NmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbApAQCAtMjYsNyArMjYsNyBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3ki
IGNvbnRlbnQ9ImRlZmF1bHQtc3JjICdzZWxmJzsgaW1nLXNyYyAqOyBtZWRpYS1zcmMgKjsgZm9u
dC1zcmMgKjsgc3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSc7IHNjcmlwdC1zcmMgJ3Nl
bGYnICd1bnNhZmUtaW5saW5lJyI+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1
cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImRlZmF1bHQtc3JjICdzZWxmJzsgaW1nLXNyYyAqOyBjb25u
ZWN0LXNyYyAqOyBtZWRpYS1zcmMgKjsgZm9udC1zcmMgKjsgc3R5bGUtc3JjICdzZWxmJyAndW5z
YWZlLWlubGluZSc7IHNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyI+CiAKICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkV4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJv
ci5jc3MiPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwpp
bmRleCAwZTYzOTVlLi40NmQwYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uanMKQEAgLTMyLDYgKzMyLDkgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1
bmN0aW9uKCkKICAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVk
IGZpcnN0IHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggSW5zcGVjdG9yQmFja2VuZC4K
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiAKKyAgICAvLyBJbml0aWFsaXpl
IFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCisgICAgdGhpcy5faW5pdGlhbGl6ZVdlYlNvY2tl
dElmTmVlZGVkKCk7CisKICAgICAvLyBSZWdpc3RlciBvYnNlcnZlcnMgZm9yIGV2ZW50cyBmcm9t
IHRoZSBJbnNwZWN0b3JCYWNrZW5kLgogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNw
ZWN0b3JEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIpOwogICAg
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJQYWdlRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9y
LlBhZ2VPYnNlcnZlcik7CkBAIC0xMDg1LDYgKzEwODgsMzMgQEAgV2ViSW5zcGVjdG9yLl9jb250
ZW50QnJvd3NlclJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRDb250ZW50Vmlld0Nvb2tpZShldmVudCk7CiB9CiAKK1dl
Ykluc3BlY3Rvci5faW5pdGlhbGl6ZVdlYlNvY2tldElmTmVlZGVkID0gZnVuY3Rpb24oKQorewor
ICAgIHZhciB3czsKKyAgICB2YXIgcXVlcnlQYXJhbXMgPSBwYXJzZUxvY2F0aW9uUXVlcnlQYXJh
bWV0ZXJzKCk7CisKKyAgICBpZiAoIndzIiBpbiBxdWVyeVBhcmFtcykKKyAgICAgICAgd3MgPSAi
d3M6Ly8iICsgcXVlcnlQYXJhbXMud3M7CisgICAgZWxzZSBpZiAoInBhZ2UiIGluIHF1ZXJ5UGFy
YW1zKSB7CisgICAgICAgIHZhciBwYWdlID0gcXVlcnlQYXJhbXMucGFnZTsKKyAgICAgICAgdmFy
IGhvc3QgPSAiaG9zdCIgaW4gcXVlcnlQYXJhbXMgPyBxdWVyeVBhcmFtcy5ob3N0IDogd2luZG93
LmxvY2F0aW9uLmhvc3Q7CisgICAgICAgIHdzID0gIndzOi8vIiArIGhvc3QgKyAiL2RldnRvb2xz
L3BhZ2UvIiArIHBhZ2U7CisgICAgfQorCisgICAgaWYgKCF3cykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdmFyIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQod3MpOworICAgIHNvY2tldC5hZGRFdmVu
dExpc3RlbmVyKCJvcGVuIiwgY3JlYXRlU29ja2V0KTsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZVNv
Y2tldCgpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iuc29ja2V0ID0gc29ja2V0OworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5j
dGlvbihtZXNzYWdlKSB7IEluc3BlY3RvckJhY2tlbmQuZGlzcGF0Y2gobWVzc2FnZS5kYXRhKTsg
fSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3Ii
LCBmdW5jdGlvbihlcnJvcikgeyBjb25zb2xlLmVycm9yKGVycm9yKTsgfSk7CisgICAgfQorfQor
CiBXZWJJbnNwZWN0b3IuX3VwZGF0ZVNwbGl0Q29uc29sZUhlaWdodCA9IGZ1bmN0aW9uKGhlaWdo
dCkKIHsKICAgICBjb25zdCBtaW5pbXVtSGVpZ2h0ID0gNjQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>