<?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>61178</bug_id>
          
          <creation_ts>2011-05-20 02:01:24 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Add an ability to show the objects that were allocated between snapshot N-2 and snapshot N-1 and still alive in snapshot N</short_desc>
          <delta_ts>2011-10-19 06:35:56 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>406956</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-05-20 02:01:24 -0700</bug_when>
    <thetext>This is very helpful for identifying leaked objects left from operations.

From Michael Davidson &lt;mpd@google.com&gt;, leak discovery scenario for GMail:

&quot;
1) Take a &quot;baseline&quot;
2) Navigate to compose
3) Take a snapshot. Call the difference between this snapshot and the baseline &quot;the delta&quot;.
4) Discard the compose.
5) Take a final snapshot

Now I want to be able to see the stuff that was in &quot;the delta&quot; that is still on the heap, but without any of the stuff that was created between steps 3 and 5. Does that make sense? In other words, I want everything allocated between step 1 and step 3 to be conceptually in a separate heap that I can examine on its own at any time without seeing objects that were allocated before step 1 or after step 3.
&quot;

This can be solved by implementing an ability to intersect and subtract an arbitrary amount of snapshots.
Thus, if you have snapshots S1, S3 and S5 corresponding to steps 1, 3
and 5 of your scenario, you&apos;ll need to perform (S3 - S1) / S5  (&quot;/&quot;
means intersect), to leave only the objects that were allocated
between steps 1 and 3, and are currently on the heap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484569</commentid>
    <comment_count>1</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-15 04:26:58 -0700</bug_when>
    <thetext>I thi
It will be an additional view for Heap snapshot.
The idea of this view is to show all the objects of Snapshot N which were allocated at Snapshot N-1, or N-2 etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484571</commentid>
    <comment_count>2</comment_count>
      <attachid>111132</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-15 04:45:19 -0700</bug_when>
    <thetext>Created attachment 111132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484781</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-16 10:28:52 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; It will be an additional view for Heap snapshot.
&gt; The idea of this view is to show all the objects of Snapshot N which were allocated at Snapshot N-1, or N-2 etc

I am not sure whether this is the best way of addressing it. I&apos;d like to see some user scenarios / success stories proving that this is the best / flexible enough way to address the original request. Rationale: profiler UI is already way too complex + this change introduces more UI -&gt; more complexity.

If we were to formulate this problem in the version control terms, the solution would be &quot;three-way-merge&quot;:

S1 = baseline
S3 = change &apos;delta&apos; applied
S5 = change &apos;delta&apos; partially reverted, some more changes introduced

No we need to find out what part of change &apos;delta&apos; was not reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484783</commentid>
    <comment_count>4</comment_count>
      <attachid>111132</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-16 10:34:11 -0700</bug_when>
    <thetext>Comment on attachment 111132
Patch

Removing r? until we decide the solution is what we need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484821</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-16 14:21:42 -0700</bug_when>
    <thetext>For solving this problem we can operate (In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; It will be an additional view for Heap snapshot.
&gt; &gt; The idea of this view is to show all the objects of Snapshot N which were allocated at Snapshot N-1, or N-2 etc
&gt; 
&gt; I am not sure whether this is the best way of addressing it. I&apos;d like to see some user scenarios / success stories proving that this is the best / flexible enough way to address the original request. Rationale: profiler UI is already way too complex + this change introduces more UI -&gt; more complexity.
&gt; 
&gt; If we were to formulate this problem in the version control terms, the solution would be &quot;three-way-merge&quot;:
&gt; 
&gt; S1 = baseline
&gt; S3 = change &apos;delta&apos; applied
&gt; S5 = change &apos;delta&apos; partially reverted, some more changes introduced
&gt; 
&gt; Now we need to find out what part of change &apos;delta&apos; was not reverted.

We have a monotonically increasing identifiers for the objects in the heap. I&apos;ve asked mnaganov at Friday. He implemented a map between ids and objects in v8 code. He also updates the map at GC stage.

1) S1 is a set of objects with identifiers in range 1-1000
2) S3 is a subset of objects from S1 and a set of new objects. These new objects got identifiers in range 1001-2000.
3) S5 is a subset of objects from S1 (probably smaller than such subset in S3), a subset of other objects from S3 (probably smaller than it was in S3, it is a leak) and a set of new objects. These new objects got identifiers in range 2001-3000.

We want to catch a leak. It is pretty simple. We should print the objects from S5 which have identifiers in range [1001 - 2000]

I can do that as three way merge but it will be a bit slow :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485114</commentid>
    <comment_count>6</comment_count>
      <attachid>111132</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-10-17 07:06:19 -0700</bug_when>
    <thetext>Comment on attachment 111132
Patch

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

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:233
&gt; +WebInspector.HeapSnapshotLeaksDataGrid.prototype = {

I&apos;m also against introducing a new grid. We should the comparison view to be more useful.

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:278
&gt; +        var key = this._minNodeId + &quot;..&quot; + this._maxNodeId;

I think you can use filter source as a key. You seem to be only using key as a unique id, without taking advantage of the fact that it is constructed from min and max ids.

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:323
&gt; +    _baseProfileIndexChanged: function(loader, profileIndex)

Current implementation interferes with the comparison view. Try this: having two snapshots, make the 2nd active, then select &quot;Allocated at Snapshot 1&quot;, then change &quot;Allocated at&quot; to &quot;Comparison&quot; -- nothing will happen, because the comparison view will not be triggered.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:744
&gt; +            if ((id % 2) &amp;&amp; id &gt; this._maxNodeId)

(id % 2) should be a function with a meaningful name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485129</commentid>
    <comment_count>7</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-10-17 07:27:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 111132 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111132&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:233
&gt; &gt; +WebInspector.HeapSnapshotLeaksDataGrid.prototype = {
&gt; 
&gt; I&apos;m also against introducing a new grid. We should the comparison view to be more useful.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:278
&gt; &gt; +        var key = this._minNodeId + &quot;..&quot; + this._maxNodeId;
&gt; 
&gt; I think you can use filter source as a key. You seem to be only using key as a unique id, without taking advantage of the fact that it is constructed from min and max ids.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:323
&gt; &gt; +    _baseProfileIndexChanged: function(loader, profileIndex)
&gt; 
&gt; Current implementation interferes with the comparison view. Try this: having two snapshots, make the 2nd active, then select &quot;Allocated at Snapshot 1&quot;, then change &quot;Allocated at&quot; to &quot;Comparison&quot; -- nothing will happen, because the comparison view will not be triggered.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:744
&gt; &gt; +            if ((id % 2) &amp;&amp; id &gt; this._maxNodeId)
&gt; 
&gt; (id % 2) should be a function with a meaningful name.

(In reply to comment #4)
&gt; (From update of attachment 111132 [details])
&gt; Removing r? until we decide the solution is what we need.

I have an idea for visualization of snapshots operations: we can represent a snapshot as a strip with marks representing object ids. Like this:

 [      ||       |    #        |||  #                  ]
 [      ||       |    #        |||  #                  ]
 0  prev. generations # current gen.#            Current Max ID

This will make a snapshot look similar to how disk contents are represented in defragmentation software. This way, intersections and identifier ranges will look quite intuitive.

So, on the leaks pane we can arrange several snapshots as strips and allow drag and drop or something similar for acting on them:

 Snapshot 1 [#  | |  |    #                      ]
 Snapshot 2 [   |    |    # |  |  | |  #         ]
 Snapshot 3 [   |              |  |    # | | #   ]
             previous generations      # current</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485244</commentid>
    <comment_count>8</comment_count>
      <attachid>111280</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-17 10:12:40 -0700</bug_when>
    <thetext>Created attachment 111280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485245</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 10:13:55 -0700</bug_when>
    <thetext>Attachment 111280 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Updating OpenSource
From git://git.webkit.org/WebKit
   7d79b00..04b6eb5  master     -&gt; origin/master
	M	ChangeLog
	M	Source/autotools/symbols.filter
r97631 = 04b6eb5a64bd2f7d8671d6f60f1a541071161d9b (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.
Updating chromium port dependencies using gclient...
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
Re-trying &apos;depot_tools/gclient sync&apos;
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485858</commentid>
    <comment_count>10</comment_count>
      <attachid>111394</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-17 23:52:45 -0700</bug_when>
    <thetext>Created attachment 111394
screenshot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486068</commentid>
    <comment_count>11</comment_count>
      <attachid>111280</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-10-18 08:38:03 -0700</bug_when>
    <thetext>Comment on attachment 111280
Patch

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

I like this change. I think we may get rid of the Comparison view after submitting this one. This one works faster and provides a simpler but still detailed enough view.

&gt; Source/WebCore/ChangeLog:11
&gt; +        4) select last snapshot and choose &apos;Allocated at&apos; view for it.

Is this still true?

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:264
&gt; +            this._minNodeId = snapshot.maxNodeId;

Shouldn&apos;t it be snapshot.maxNodeId + 2? Or better, extract out Id logic into a separate helper class, together with (id % 2) expression in maxNodeId, so it will be Helper.nextNodeId(snapshot.maxNodeId)

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:1275
&gt; +            filterOption.label = &quot;All objects&quot;;

WebInspector.UIString

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:763
&gt; +            if ((id % 2) &amp;&amp; id &gt; this._maxNodeId)

Please extract &quot;id % 2&quot; into a separate class dealing with Ids.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:817
&gt; +    filteredAggregates: function(key, filter)

Can we make &quot;unfiltered&quot; aggregates a special case of filtered, with an empty filter?

&gt; Source/WebCore/inspector/front-end/HeapSnapshotProxy.js:410
&gt; +        setTimeout(callback.bind(null, this), 0);

Why do you need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486637</commentid>
    <comment_count>12</comment_count>
      <attachid>111581</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-19 02:25:47 -0700</bug_when>
    <thetext>Created attachment 111581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486644</commentid>
    <comment_count>13</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-19 02:52:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 111280 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111280&amp;action=review
&gt; 
&gt; I like this change. I think we may get rid of the Comparison view after submitting this one. This one works faster and provides a simpler but still detailed enough view.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        4) select last snapshot and choose &apos;Allocated at&apos; view for it.
&gt; 
&gt; Is this still true?

done.



&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:1275
&gt; &gt; +            filterOption.label = &quot;All objects&quot;;
&gt; 
&gt; WebInspector.UIString

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:763
&gt; &gt; +            if ((id % 2) &amp;&amp; id &gt; this._maxNodeId)
&gt; 
&gt; Please extract &quot;id % 2&quot; into a separate class dealing with Ids.

I&apos;d like to move this calculation to backend code in another change. It will cost us constant complexity time instead linear.  


&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:264
&gt; &gt; +            this._minNodeId = snapshot.maxNodeId;
&gt; 
&gt; Shouldn&apos;t it be snapshot.maxNodeId + 2? Or better, extract out Id logic into a separate helper class, together with (id % 2) expression in maxNodeId, so it will be Helper.nextNodeId(snapshot.maxNodeId)

After moving maxNodeId calculation to the backend the magic with &apos;+ 2&apos; will looks weird.
I just check half-closed interval for the ids like (min, max]

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:817
&gt; &gt; +    filteredAggregates: function(key, filter)
&gt; 
&gt; Can we make &quot;unfiltered&quot; aggregates a special case of filtered, with an empty filter?

done


&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotProxy.js:410
&gt; &gt; +        setTimeout(callback.bind(null, this), 0);
&gt; 
&gt; Why do you need this?

it was a bug. If the snapshot is not loaded yet then HeapSnapshotLoadingProxy loads the snapshot and passes it as an argument to the callback.
In the other case HeapShapshotProxy calls the callback immediately but with no arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486659</commentid>
    <comment_count>14</comment_count>
      <attachid>111581</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-10-19 03:56:26 -0700</bug_when>
    <thetext>Comment on attachment 111581
Patch

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

Nice!

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:1286
&gt; +                    title = WebInspector.UIString(&quot;Objects allocated between Snapshot %d and Snapshot %d&quot;, title.substring(UserInitiatedProfileName.length + 1) - 1, title.substring(UserInitiatedProfileName.length + 1));

Please consider shortening to &quot;Objects allocated between Snapshots %d and %d&quot;

&gt; Source/WebCore/inspector/front-end/HeapSnapshotProxy.js:96
&gt; +    this._worker = new WebInspector.HeapSnapshotFakeWorker();

I believe this change is accidental</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486677</commentid>
    <comment_count>15</comment_count>
      <attachid>111593</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-19 04:50:35 -0700</bug_when>
    <thetext>Created attachment 111593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486678</commentid>
    <comment_count>16</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-19 04:53:01 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 111581 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111581&amp;action=review
&gt; 
&gt; Nice!
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:1286
&gt; &gt; +                    title = WebInspector.UIString(&quot;Objects allocated between Snapshot %d and Snapshot %d&quot;, title.substring(UserInitiatedProfileName.length + 1) - 1, title.substring(UserInitiatedProfileName.length + 1));
&gt; 
&gt; Please consider shortening to &quot;Objects allocated between Snapshots %d and %d&quot;

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotProxy.js:96
&gt; &gt; +    this._worker = new WebInspector.HeapSnapshotFakeWorker();
&gt; 
&gt; I believe this change is accidental

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486716</commentid>
    <comment_count>17</comment_count>
      <attachid>111593</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-10-19 06:12:58 -0700</bug_when>
    <thetext>Comment on attachment 111593
Patch

lgtm!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486733</commentid>
    <comment_count>18</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-19 06:35:56 -0700</bug_when>
    <thetext>Committed r97855: &lt;http://trac.webkit.org/changeset/97855&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111132</attachid>
            <date>2011-10-15 04:45:19 -0700</date>
            <delta_ts>2011-10-17 10:12:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61178-20111015154517.patch</filename>
            <type>text/plain</type>
            <size>18887</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc1NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZTQ4OGU4MmY1MTU1MmU1
NDQ2MGYyZjBlZDgwYTNhZGE1ZTcxMDdiLi4zZmVlOWYyNjVkNzk3N2MyNTQwZmEwNzEyMTg5ZDEz
YzQxNTk0MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMTAtMTUgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDaHJvbWl1bV0gQWRkIGFuIGFiaWxpdHkgdG8gc2hvdyB0aGUgb2JqZWN0cyB0aGF0IHdl
cmUgYWxsb2NhdGVkIGJldHdlZW4gc25hcHNob3QgTi0yIGFuZCBzbmFwc2hvdCBOLTEgYW5kIHN0
aWxsIGFsaXZlIGluIHNuYXBzaG90IE4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTE3OAorCisgICAgICAgIFRoaXMgYWJpbGl0eSB3aWxsIGhlbHAg
dXMgdG8gc2VlIG9ubHkgdGhlIGxlYWtlZCBvYmplY3RzLgorICAgICAgICBTY2VuYXJpbzoKKyAg
ICAgICAgMSkgZG8gYW4gYWN0aW9uIG9uIGluc3BlY3RlZCBwYWdlIHdoaWNoIGxlYWtzIGphdmFz
Y3JpcHQgZGF0YTsKKyAgICAgICAgMikgbWFrZSBzbmFwc2hvdDsKKyAgICAgICAgMykgcmVwZWF0
IGZpcnN0IHR3byBzdGVwcyB0aHJlZSBvciBtb3JlIHRpbWVzOworICAgICAgICA0KSBzZWxlY3Qg
bGFzdCBzbmFwc2hvdCBhbmQgY2hvb3NlICdBbGxvY2F0ZWQgYXQnIHZpZXcgZm9yIGl0LgorICAg
ICAgICBUaGUgdmlldyBzaG93cyB0aGUgb2JqZWN0IHRoYXQgd2VyZSBhbGxvY2F0ZWQgYmV0d2Vl
biBzbmFwc2hvdCBOLTIgYW5kIHNuYXBzaG90IE4tMSBhbmQgc3RpbGwgYWxpdmUgaW4gc25hcHNo
b3QgTgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZS5fY3JlYXRl
Tm9kZXNQcm92aWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhl
YXBzaG90Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMZWFrc0Rh
dGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMZWFrc0RhdGFHcmlk
LnByb3RvdHlwZS5fYmFzZVByb2ZpbGVJbmRleENoYW5nZWQuZmlyc3RTbmFwc2hvdExvYWRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGVha3NEYXRhR3JpZC5wcm90b3R5
cGUuX2Jhc2VQcm9maWxlSW5kZXhDaGFuZ2VkLnNlY29uZFNuYXBzaG90TG9hZGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMZWFrc0RhdGFHcmlkLnByb3RvdHlwZS5fYmFz
ZVByb2ZpbGVJbmRleENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dExlYWtzRGF0YUdyaWQucHJvdG90eXBlLnNldERhdGFTb3VyY2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdExlYWtzRGF0YUdyaWQucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRy
ZW4uYWdncmVnYXRlc1JlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RMZWFrc0RhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLl9iYXNlUHJvZmls
ZUluZGV4Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZp
ZXcucHJvdG90eXBlLl9jaGFuZ2VCYXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxl
ZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX2xvYWRQcm9maWxlQnlJbmRleCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0IG1heE5vZGVJZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5hZ2dyZWdhdGVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmZpbHRlcmVkQWdncmVn
YXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVp
bGRBZ2dyZWdhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlLl9zb3J0QWdncmVnYXRlSW5kZXhlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZS5jcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3MpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUudXBkYXRlU3RhdGljRGF0YSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuZmlsdGVyZWRBZ2dy
ZWdhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5
cGUuY3JlYXRlTm9kZXNQcm92aWRlckZvckNsYXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuZ2V0IG1heE5vZGVJZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLnN0YXJ0TG9hZGluZyk6CisKIDIw
MTEtMTAtMDggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIENT
UyAyLjEgZmFpbHVyZTogaGVpZ2h0LXdpZHRoLXRhYmxlLTAwMS5odG0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rl
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hv
dEdyaWROb2Rlcy5qcwppbmRleCA3NjEwMTJjODFjOWQzNjExOGEzYjA1NjQ2OTQ2ZmQ5ZjY3M2Ez
NmMzLi5mZjgwNmI2MjRhZTRlMjBhY2NhNGJlODc4M2QwNGU4OTI4YjYxNmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlk
Tm9kZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxl
ZEhlYXBzaG90R3JpZE5vZGVzLmpzCkBAIC00ODcsMTQgKzQ4NywxNCBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGNsYXNzTmFtZSwg
YWdncmVnYXRlKQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZSA9IGZ1
bmN0aW9uKHRyZWUsIGNsYXNzTmFtZSwgYWdncmVnYXRlLCBhZ2dyZWdhdGVzS2V5KQogewogICAg
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5jYWxsKHRoaXMsIHRyZWUsIGFnZ3Jl
Z2F0ZS5jb3VudCA+IDApOwogICAgIHRoaXMuX25hbWUgPSBjbGFzc05hbWU7CiAgICAgdGhpcy5f
Y291bnQgPSBhZ2dyZWdhdGUuY291bnQ7CiAgICAgdGhpcy5fc2hhbGxvd1NpemUgPSBhZ2dyZWdh
dGUuc2VsZjsKICAgICB0aGlzLl9yZXRhaW5lZFNpemUgPSBhZ2dyZWdhdGUubWF4UmV0OwotICAg
IHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlTm9kZXNQcm92aWRlcih0cmVlLnNuYXBzaG90
LCBjbGFzc05hbWUpOworICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlTm9kZXNQcm92
aWRlcih0cmVlLnNuYXBzaG90LCBjbGFzc05hbWUsIGFnZ3JlZ2F0ZXNLZXkpOwogfQogCiBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZSA9IHsKQEAgLTUw
Myw5ICs1MDMsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
SW5zdGFuY2VOb2RlKHRoaXMuZGF0YUdyaWQsIG51bGwsIHRoaXMuZGF0YUdyaWQuc25hcHNob3Qs
IGl0ZW0pOwogICAgIH0sCiAKLSAgICBfY3JlYXRlTm9kZXNQcm92aWRlcjogZnVuY3Rpb24oc25h
cHNob3QsIGNsYXNzTmFtZSkKKyAgICBfY3JlYXRlTm9kZXNQcm92aWRlcjogZnVuY3Rpb24oc25h
cHNob3QsIGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
bmFwc2hvdC5jcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICAgICAg
cmV0dXJuIHNuYXBzaG90LmNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzcyhjbGFzc05hbWUsIGFn
Z3JlZ2F0ZXNLZXkpOwogICAgIH0sCiAKICAgICBjb21wYXJhdG9yOiBmdW5jdGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNo
b3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhl
YXBzaG90Vmlldy5qcwppbmRleCAzYmZhYTNjZjIxZGQwMTdjNTNmZTliNzQwNTQwZmFkMjE1M2Vm
MDYzLi4xYWU5ZDQ1M2E4OWYyMTBiNTVmZTQ1ZjExMzBmNDJlZTkxNDM0YWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFw
c2hvdFZpZXcuanMKQEAgLTIyNSw2ICsyMjUsNjQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGU7CiAKK1dlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RMZWFrc0RhdGFHcmlkID0gZnVuY3Rpb24oKQoreworICAgIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5jYWxsKHRoaXMpOworfQor
CitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGVha3NEYXRhR3JpZC5wcm90b3R5cGUgPSB7Cisg
ICAgX2Jhc2VQcm9maWxlSW5kZXhDaGFuZ2VkOiBmdW5jdGlvbihsb2FkZXIsIHByb2ZpbGVJbmRl
eCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9tYXhOb2RlSWQ7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9taW5Ob2RlSWQ7CisKKyAgICAgICAgZnVuY3Rpb24gZmlyc3RTbmFwc2hvdExvYWRl
ZChzbmFwc2hvdCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fbWF4Tm9kZUlkID0gc25h
cHNob3QubWF4Tm9kZUlkOworICAgICAgICAgICAgaWYgKHByb2ZpbGVJbmRleCA+IDApCisgICAg
ICAgICAgICAgICAgbG9hZGVyKHByb2ZpbGVJbmRleCAtIDEsIHNlY29uZFNuYXBzaG90TG9hZGVk
LmJpbmQodGhpcykpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5f
bWluTm9kZUlkID0gMDsKKyAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNlY29uZFNuYXBz
aG90TG9hZGVkKHNuYXBzaG90KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9taW5Ob2Rl
SWQgPSBzbmFwc2hvdC5tYXhOb2RlSWQ7CisgICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRy
ZW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWRlcihwcm9maWxlSW5kZXgsIGZpcnN0U25h
cHNob3RMb2FkZWQuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIHNldERhdGFTb3VyY2U6IGZ1
bmN0aW9uKHNuYXBzaG90Vmlldywgc25hcHNob3QpCisgICAgeworICAgICAgICB0aGlzLnNuYXBz
aG90VmlldyA9IHNuYXBzaG90VmlldzsKKyAgICAgICAgdGhpcy5zbmFwc2hvdCA9IHNuYXBzaG90
OworICAgIH0sCisKKyAgICBwb3B1bGF0ZUNoaWxkcmVuOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworICAg
ICAgICB0aGlzLnJlc2V0U29ydGluZ0NhY2hlKCk7CisKKyAgICAgICAgZnVuY3Rpb24gYWdncmVn
YXRlc1JlY2VpdmVkKGtleSwgYWdncmVnYXRlcykKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
ICh2YXIgY29uc3RydWN0b3IgaW4gYWdncmVnYXRlcykKKyAgICAgICAgICAgICAgICB0aGlzLmFw
cGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlKHRo
aXMsIGNvbnN0cnVjdG9yLCBhZ2dyZWdhdGVzW2NvbnN0cnVjdG9yXSwga2V5KSk7CisgICAgICAg
ICAgICB0aGlzLnNvcnRpbmdDaGFuZ2VkKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIga2V5
ID0gdGhpcy5fbWluTm9kZUlkICsgIi4uIiArIHRoaXMuX21heE5vZGVJZDsKKyAgICAgICAgdmFy
IGZpbHRlciA9ICJmdW5jdGlvbihub2RlKSB7IHZhciBpZCA9IG5vZGUuaWQ7IHJldHVybiBpZCA+
ICIgKyB0aGlzLl9taW5Ob2RlSWQgKyAiICYmIGlkIDw9ICIgKyB0aGlzLl9tYXhOb2RlSWQgKyAi
OyB9IjsKKyAgICAgICAgdGhpcy5zbmFwc2hvdC5maWx0ZXJlZEFnZ3JlZ2F0ZXMoa2V5LCBmaWx0
ZXIsIGFnZ3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMsIGtleSkpOworICAgIH0KK307CisKK1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RMZWFrc0RhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90eXBl
OworCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkID0gZnVuY3Rpb24oKQog
ewogICAgIHZhciBjb2x1bW5zID0gewpAQCAtMjYyLDYgKzMyMCwxMSBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zbmFw
c2hvdCA9IHNuYXBzaG90OwogICAgIH0sCiAKKyAgICBfYmFzZVByb2ZpbGVJbmRleENoYW5nZWQ6
IGZ1bmN0aW9uKGxvYWRlciwgcHJvZmlsZUluZGV4KQorICAgIHsKKyAgICAgICAgbG9hZGVyKHBy
b2ZpbGVJbmRleCwgdGhpcy5zZXRCYXNlRGF0YVNvdXJjZS5iaW5kKHRoaXMpKTsKKyAgICB9LAor
CiAgICAgc2V0QmFzZURhdGFTb3VyY2U6IGZ1bmN0aW9uKGJhc2VTbmFwc2hvdCkKICAgICB7CiAg
ICAgICAgIHRoaXMuYmFzZVNuYXBzaG90ID0gYmFzZVNuYXBzaG90OwpAQCAtNTQ0LDYgKzYwNywx
NCBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQs
IHByb2ZpbGUpCiAgICAgdGhpcy5jb25zdHJ1Y3RvcnNWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZC5lbGVtZW50KTsKICAgICB0aGlzLnZpZXdzQ29udGFp
bmVyLmFwcGVuZENoaWxkKHRoaXMuY29uc3RydWN0b3JzVmlldy5lbGVtZW50KTsKIAorICAgIHRo
aXMubGVha3NWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5WaWV3KCk7CisgICAgdGhpcy5sZWFrc1Zp
ZXcuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ2aWV3Iik7CisgICAgdGhpcy5sZWFrc0RhdGFHcmlk
ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMZWFrc0RhdGFHcmlkKCk7CisgICAgdGhp
cy5sZWFrc0RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9t
b3VzZUNsaWNrSW5Db250ZW50c0dyaWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy5sZWFr
c0RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91
c2VEb3duSW5Db250ZW50c0dyaWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy5sZWFrc1Zp
ZXcuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmxlYWtzRGF0YUdyaWQuZWxlbWVudCk7CisgICAg
dGhpcy52aWV3c0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmxlYWtzVmlldy5lbGVtZW50KTsK
KwogICAgIHRoaXMuZGlmZlZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpZXcoKTsKICAgICB0aGlz
LmRpZmZWaWV3LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygidmlldyIpOwogICAgIHRoaXMuZGlmZkRh
dGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQoKTsKQEAg
LTU5OCw2ICs2NjksNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5j
dGlvbihwYXJlbnQsIHByb2ZpbGUpCiAgICAgdGhpcy52aWV3U2VsZWN0RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9jaGFuZ2VWaWV3LmJpbmQodGhpcyksIGZhbHNlKTsK
IAogICAgIHRoaXMudmlld3MgPSBbe3RpdGxlOiAiU3VtbWFyeSIsIHZpZXc6IHRoaXMuY29uc3Ry
dWN0b3JzVmlldywgZ3JpZDogdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZH0sCisgICAgICAgICAg
ICAgICAgICB7dGl0bGU6ICJBbGxvY2F0ZWQgYXQiLCB2aWV3OiB0aGlzLmxlYWtzVmlldywgZ3Jp
ZDogdGhpcy5sZWFrc0RhdGFHcmlkfSwKICAgICAgICAgICAgICAgICAgIHt0aXRsZTogIkNvbXBh
cmlzb24iLCB2aWV3OiB0aGlzLmRpZmZWaWV3LCBncmlkOiB0aGlzLmRpZmZEYXRhR3JpZH0sCiAg
ICAgICAgICAgICAgICAgICB7dGl0bGU6ICJDb250YWlubWVudCIsIHZpZXc6IHRoaXMuY29udGFp
bm1lbnRWaWV3LCBncmlkOiB0aGlzLmNvbnRhaW5tZW50RGF0YUdyaWR9LAogICAgICAgICAgICAg
ICAgICAge3RpdGxlOiAiRG9taW5hdG9ycyIsIHZpZXc6IHRoaXMuZG9taW5hdG9yVmlldywgZ3Jp
ZDogdGhpcy5kb21pbmF0b3JEYXRhR3JpZH1dOwpAQCAtODY1LDE0ICs5MzcsNyBAQCBXZWJJbnNw
ZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhpcy5fcHJvZmlsZXMoKVt0
aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsKLSAgICAgICAgdGhpcy5f
bG9hZFByb2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQsIGJhc2VQcm9maWxlTG9hZGVkLmJpbmQo
dGhpcykpOwotCi0gICAgICAgIGZ1bmN0aW9uIGJhc2VQcm9maWxlTG9hZGVkKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2Jhc2VQcm9maWxlV3JhcHBlcjsKLSAgICAgICAg
ICAgIHRoaXMuYmFzZVByb2ZpbGUuX2xhc3RTaG93biA9IERhdGUubm93KCk7Ci0gICAgICAgICAg
ICB0aGlzLmRpZmZEYXRhR3JpZC5zZXRCYXNlRGF0YVNvdXJjZSh0aGlzLmJhc2VQcm9maWxlV3Jh
cHBlcik7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5kYXRhR3JpZC5fYmFzZVByb2ZpbGVJbmRl
eENoYW5nZWQodGhpcy5fbG9hZFByb2ZpbGVCeUluZGV4LmJpbmQodGhpcyksIHRoaXMuYmFzZVNl
bGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCk7CiAKICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRR
dWVyeSB8fCAhdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2VhcmNoUmVz
dWx0cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg5NCw2ICs5NTksMTIgQEAgV2ViSW5zcGVj
dG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5wcm9maWxlcy5sb2FkSGVhcFNuYXBzaG90KHByb2ZpbGVVaWQsIGNhbGxiYWNr
KTsKICAgICB9LAogCisgICAgX2xvYWRQcm9maWxlQnlJbmRleDogZnVuY3Rpb24ocHJvZmlsZUlu
ZGV4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBwcm9maWxlVWlkID0gdGhpcy5fcHJv
ZmlsZXMoKVtwcm9maWxlSW5kZXhdLnVpZDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5w
cm9maWxlcy5sb2FkSGVhcFNuYXBzaG90KHByb2ZpbGVVaWQsIGNhbGxiYWNrKTsKKyAgICB9LAor
CiAgICAgaXNEZXRhaWxlZFNuYXBzaG90OiBmdW5jdGlvbihzbmFwc2hvdCkKICAgICB7CiAgICAg
ICAgIHZhciBzID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qoc25hcHNob3QpOwpAQCAt
MTAwMyw3ICsxMDc0LDcgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5jdXJyZW50Vmlldy5zaG93KCk7CiAgICAgICAgIHRoaXMu
cmVmcmVzaFZpc2libGVEYXRhKCk7CiAgICAgICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlV2lkdGhz
KCk7Ci0gICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSB0aGlzLmRpZmZWaWV3KSB7Cisg
ICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSB0aGlzLmRpZmZWaWV3IHx8IHRoaXMuY3Vy
cmVudFZpZXcgPT09IHRoaXMubGVha3NWaWV3KSB7CiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxl
Y3RFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwogICAgICAgICAgICAgaWYgKCF0
aGlzLmRhdGFHcmlkLnNuYXBzaG90VmlldykgewogICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdy
aWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlzLnByb2ZpbGVXcmFwcGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggOTA0
MGVhM2ZiYzhiZjQyYmE5Nzg4MDg1ZWExYjMyNmY5ODg0MjYwMS4uMTE5NjY0NmIwMDY1N2YxNTQ2
Nzk5ZTYxNzM4ZjIyOTdhZTM4NzFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTY5OSw2ICs2OTksNyBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2Jh
c2VOb2RlSWRzOwogICAgICAgICBkZWxldGUgdGhpcy5fZG9taW5hdGVkTm9kZXM7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9kb21pbmF0ZWRJbmRleDsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbHRl
cmVkQWdncmVnYXRlczsKICAgICB9LAogCiAgICAgZ2V0IF9hbGxOb2RlcygpCkBAIC03MzMsNiAr
NzM0LDE5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHRoaXMsIHRoaXMuX3Jv
b3ROb2RlSW5kZXgpOwogICAgIH0sCiAKKyAgICBnZXQgbWF4Tm9kZUlkKCkKKyAgICB7CisgICAg
ICAgIGlmICh0eXBlb2YgdGhpcy5fbWF4Tm9kZUlkID09PSAibnVtYmVyIikKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9tYXhOb2RlSWQ7CisgICAgICAgIHRoaXMuX21heE5vZGVJZCA9IDA7Cisg
ICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLl9hbGxOb2RlczsgaXRlci5oYXNOZXh0KCk7IGl0
ZXIubmV4dCgpKSB7CisgICAgICAgICAgICB2YXIgaWQgPSBpdGVyLm5vZGUuaWQ7CisgICAgICAg
ICAgICBpZiAoKGlkICUgMikgJiYgaWQgPiB0aGlzLl9tYXhOb2RlSWQpCisgICAgICAgICAgICAg
ICAgdGhpcy5fbWF4Tm9kZUlkID0gaWQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMu
X21heE5vZGVJZDsKKyAgICB9LAorCiAgICAgZ2V0IHJvb3ROb2RlSW5kZXgoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Jvb3ROb2RlSW5kZXg7CkBAIC03NjYsMTIgKzc4MCwyOCBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICBhZ2dyZWdhdGVzOiBm
dW5jdGlvbihzb3J0ZWRJbmRleGVzKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hZ2dyZWdh
dGVzKQotICAgICAgICAgICAgdGhpcy5fYnVpbGRBZ2dyZWdhdGVzKCk7Ci0gICAgICAgIGlmIChz
b3J0ZWRJbmRleGVzICYmICF0aGlzLl9hZ2dyZWdhdGVzSW5kZXhlc1NvcnRlZCkKLSAgICAgICAg
ICAgIHRoaXMuX3NvcnRBZ2dyZWdhdGVJbmRleGVzKCk7CisgICAgICAgICAgICB0aGlzLl9hZ2dy
ZWdhdGVzID0gdGhpcy5fYnVpbGRBZ2dyZWdhdGVzKCk7CisgICAgICAgIGlmIChzb3J0ZWRJbmRl
eGVzICYmICF0aGlzLl9hZ2dyZWdhdGVzSW5kZXhlc1NvcnRlZCkgeworICAgICAgICAgICAgdGhp
cy5fc29ydEFnZ3JlZ2F0ZUluZGV4ZXModGhpcy5fYWdncmVnYXRlcyk7CisgICAgICAgICAgICB0
aGlzLl9hZ2dyZWdhdGVzSW5kZXhlc1NvcnRlZCA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRoaXMuX2FnZ3JlZ2F0ZXM7CiAgICAgfSwKIAorICAgIGZpbHRlcmVkQWdncmVnYXRl
czogZnVuY3Rpb24oa2V5LCBmaWx0ZXIpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2ZpbHRl
cmVkQWdncmVnYXRlcykKKyAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkQWdncmVnYXRlcyA9IHt9
CisKKyAgICAgICAgaWYgKGtleSBpbiB0aGlzLl9maWx0ZXJlZEFnZ3JlZ2F0ZXMpCisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRBZ2dyZWdhdGVzW2tleV07CisKKyAgICAgICAgdmFy
IGFnZ3JlZ2F0ZXMgPSB0aGlzLl9idWlsZEFnZ3JlZ2F0ZXModGhpcy5fcGFyc2VGaWx0ZXIoZmls
dGVyKSk7CisgICAgICAgIHRoaXMuX3NvcnRBZ2dyZWdhdGVJbmRleGVzKGFnZ3JlZ2F0ZXMpOwor
ICAgICAgICB0aGlzLl9maWx0ZXJlZEFnZ3JlZ2F0ZXNba2V5XSA9IGFnZ3JlZ2F0ZXM7CisgICAg
ICAgIHJldHVybiBhZ2dyZWdhdGVzOworICAgIH0sCisKICAgICBfYnVpbGRSZXZlcnNlSW5kZXg6
IGZ1bmN0aW9uKGluZGV4QXJyYXlOYW1lLCBiYWNrUmVmc0FycmF5TmFtZSwgaW5kZXhDYWxsYmFj
aywgZGF0YUNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9ub2RlSW5kZXgpCkBA
IC04MjcsMTggKzg1NywyMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgX2J1aWxkQWdn
cmVnYXRlczogZnVuY3Rpb24oKQorICAgIF9idWlsZEFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKGZpbHRl
cikKICAgICB7Ci0gICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXMgPSB7fTsKKyAgICAgICAgdmFyIGFn
Z3JlZ2F0ZXMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMuX2FsbE5vZGVzOyBp
dGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsKICAgICAgICAgICAgIHZhciBub2RlID0gaXRl
ci5ub2RlOworICAgICAgICAgICAgaWYgKGZpbHRlciAmJiAhZmlsdGVyKG5vZGUpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG5vZGUudHlwZSAhPT0gIm5hdGl2
ZSIgJiYgbm9kZS5zZWxmU2l6ZSA9PT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIHZhciBuYW1lTWF0dGVycyA9IG5vZGUudHlwZSA9PT0gIm9iamVjdCIgfHwgbm9k
ZS50eXBlID09PSAibmF0aXZlIjsKICAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBub2RlLmNs
YXNzTmFtZTsKLSAgICAgICAgICAgIGlmICghdGhpcy5fYWdncmVnYXRlcy5oYXNPd25Qcm9wZXJ0
eShjbGFzc05hbWUpKQotICAgICAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNbY2xhc3NOYW1l
XSA9IHsgY291bnQ6IDAsIHNlbGY6IDAsIG1heFJldDogMCwgdHlwZTogbm9kZS50eXBlLCBuYW1l
OiBuYW1lTWF0dGVycyA/IG5vZGUubmFtZSA6IG51bGwsIGlkeHM6IFtdIH07Ci0gICAgICAgICAg
ICB2YXIgY2xzcyA9IHRoaXMuX2FnZ3JlZ2F0ZXNbY2xhc3NOYW1lXTsKKyAgICAgICAgICAgIGlm
ICghYWdncmVnYXRlcy5oYXNPd25Qcm9wZXJ0eShjbGFzc05hbWUpKQorICAgICAgICAgICAgICAg
IGFnZ3JlZ2F0ZXNbY2xhc3NOYW1lXSA9IHsgY291bnQ6IDAsIHNlbGY6IDAsIG1heFJldDogMCwg
dHlwZTogbm9kZS50eXBlLCBuYW1lOiBuYW1lTWF0dGVycyA/IG5vZGUubmFtZSA6IG51bGwsIGlk
eHM6IFtdIH07CisgICAgICAgICAgICB2YXIgY2xzcyA9IGFnZ3JlZ2F0ZXNbY2xhc3NOYW1lXTsK
ICAgICAgICAgICAgICsrY2xzcy5jb3VudDsKICAgICAgICAgICAgIGNsc3Muc2VsZiArPSBub2Rl
LnNlbGZTaXplOwogICAgICAgICAgICAgaWYgKG5vZGUucmV0YWluZWRTaXplID4gY2xzcy5tYXhS
ZXQpCkBAIC04NDYsMjMgKzg3OCwyMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGNsc3MuaWR4cy5wdXNoKG5vZGUubm9kZUluZGV4KTsKICAg
ICAgICAgfQogICAgICAgICAvLyBTaGF2ZSBvZmYgcHJvdmlzaW9uYWxseSBhbGxvY2F0ZWQgc3Bh
Y2UuCi0gICAgICAgIGZvciAodmFyIGNsYXNzTmFtZSBpbiB0aGlzLl9hZ2dyZWdhdGVzKQotICAg
ICAgICAgICAgdGhpcy5fYWdncmVnYXRlc1tjbGFzc05hbWVdLmlkeHMgPSB0aGlzLl9hZ2dyZWdh
dGVzW2NsYXNzTmFtZV0uaWR4cy5zbGljZSgwKTsKKyAgICAgICAgZm9yICh2YXIgY2xhc3NOYW1l
IGluIGFnZ3JlZ2F0ZXMpCisgICAgICAgICAgICBhZ2dyZWdhdGVzW2NsYXNzTmFtZV0uaWR4cyA9
IGFnZ3JlZ2F0ZXNbY2xhc3NOYW1lXS5pZHhzLnNsaWNlKDApOworICAgICAgICByZXR1cm4gYWdn
cmVnYXRlczsKICAgICB9LAogCi0gICAgX3NvcnRBZ2dyZWdhdGVJbmRleGVzOiBmdW5jdGlvbigp
CisgICAgX3NvcnRBZ2dyZWdhdGVJbmRleGVzOiBmdW5jdGlvbihhZ2dyZWdhdGVzKQogICAgIHsK
ICAgICAgICAgdmFyIG5vZGVBID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHRo
aXMpOwogICAgICAgICB2YXIgbm9kZUIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGUodGhpcyk7Ci0gICAgICAgIGZvciAodmFyIGNsc3MgaW4gdGhpcy5fYWdncmVnYXRlcykKLSAg
ICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNbY2xzc10uaWR4cy5zb3J0KAorICAgICAgICBmb3Ig
KHZhciBjbHNzIGluIGFnZ3JlZ2F0ZXMpCisgICAgICAgICAgICBhZ2dyZWdhdGVzW2Nsc3NdLmlk
eHMuc29ydCgKICAgICAgICAgICAgICAgICBmdW5jdGlvbihpZHhBLCBpZHhCKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGVBLm5vZGVJbmRleCA9IGlkeEE7CiAgICAgICAgICAgICAgICAgICAg
IG5vZGVCLm5vZGVJbmRleCA9IGlkeEI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2Rl
QS5pZCA8IG5vZGVCLmlkID8gLTEgOiAxOwogICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAg
IHRoaXMuX2FnZ3JlZ2F0ZXNJbmRleGVzU29ydGVkID0gdHJ1ZTsKICAgICB9LAogCiAgICAgX2J1
aWxkTm9kZUluZGV4OiBmdW5jdGlvbigpCkBAIC05OTYsOSArMTAyNyw5IEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHRoaXMsIHRoaXMuX3BhcnNlRmlsdGVyKGZp
bHRlcikpOwogICAgIH0sCiAKLSAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3M6IGZ1bmN0
aW9uKGNsYXNzTmFtZSkKKyAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3M6IGZ1bmN0aW9u
KGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIodGhpcywgbnVsbCwgdGhpcy5hZ2dy
ZWdhdGVzKGZhbHNlKVtjbGFzc05hbWVdLmlkeHMpOworICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHRoaXMsIG51bGwsIGFnZ3JlZ2F0ZXNL
ZXkgPyAgdGhpcy5maWx0ZXJlZEFnZ3JlZ2F0ZXMoYWdncmVnYXRlc0tleSlbY2xhc3NOYW1lXS5p
ZHhzIDogdGhpcy5hZ2dyZWdhdGVzKGZhbHNlKVtjbGFzc05hbWVdLmlkeHMpOwogICAgIH0sCiAK
ICAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yRG9taW5hdG9yOiBmdW5jdGlvbihub2RlSW5kZXgs
IGZpbHRlcikKQEAgLTEwMTQsNyArMTA0NSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlID0gewogCiAgICAgdXBkYXRlU3RhdGljRGF0YTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHtub2RlQ291bnQ6IHRoaXMubm9kZUNvdW50LCByb290Tm9kZUluZGV4
OiB0aGlzLl9yb290Tm9kZUluZGV4LCB0b3RhbFNpemU6IHRoaXMudG90YWxTaXplLCB1aWQ6IHRo
aXMudWlkfTsKKyAgICAgICAgcmV0dXJuIHtub2RlQ291bnQ6IHRoaXMubm9kZUNvdW50LCByb290
Tm9kZUluZGV4OiB0aGlzLl9yb290Tm9kZUluZGV4LCB0b3RhbFNpemU6IHRoaXMudG90YWxTaXpl
LCB1aWQ6IHRoaXMudWlkLCBtYXhOb2RlSWQ6IHRoaXMubWF4Tm9kZUlkfTsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFw
c2hvdFByb3h5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3RQcm94eS5qcwppbmRleCA0NGEwNTQ0NjZiNWYyMGU1MDM2YWViZDZmMGE0Y2FmZmQ2YjVm
OTRhLi5kNTc0NmViM2M5NGY3NDY0MjFjMjUxZDU1MjEyZmZlY2VjMDk3Nzg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5Lmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJv
eHkuanMKQEAgLTMxNSw2ICszMTUsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jYWxsTWV0aG9kKGNhbGxiYWNrLCAiYWdncmVn
YXRlcyIsIHNvcnRlZEluZGV4ZXMpOwogICAgIH0sCiAKKyAgICBmaWx0ZXJlZEFnZ3JlZ2F0ZXM6
IGZ1bmN0aW9uKGtleSwgZmlsdGVyLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuY2Fs
bE1ldGhvZChjYWxsYmFjaywgImZpbHRlcmVkQWdncmVnYXRlcyIsIGtleSwgZmlsdGVyKTsKKyAg
ICB9LAorCiAgICAgY3JlYXRlRGlmZjogZnVuY3Rpb24oY2xhc3NOYW1lKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwgImNyZWF0ZURpZmYiLCAgIldl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZlByb3h5IiwgY2xhc3NOYW1lKTsKQEAgLTMzMCw5
ICszMzUsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdGhpcy5jYWxsRmFjdG9yeU1ldGhvZChudWxsLCAiY3JlYXRlTm9kZXNQ
cm92aWRlciIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSIsIGZpbHRl
cik7CiAgICAgfSwKIAotICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24o
Y2xhc3NOYW1lKQorICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xh
c3NOYW1lLCBhZ2dyZWdhdGVzS2V5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZh
Y3RvcnlNZXRob2QobnVsbCwgImNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzcyIsICJXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSIsIGNsYXNzTmFtZSk7CisgICAgICAgIHJl
dHVybiB0aGlzLmNhbGxGYWN0b3J5TWV0aG9kKG51bGwsICJjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9y
Q2xhc3MiLCAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkiLCBjbGFzc05h
bWUsIGFnZ3JlZ2F0ZXNLZXkpOwogICAgIH0sCiAKICAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9y
RG9taW5hdG9yOiBmdW5jdGlvbihub2RlSW5kZXgsIGZpbHRlcikKQEAgLTM2MCw2ICszNjUsMTEg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuICEhdGhpcy5fb2JqZWN0SWQ7CiAgICAgfSwKIAorICAgIGdldCBtYXhOb2RlSWQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEubWF4Tm9kZUlkOworICAgIH0s
CisKICAgICBnZXQgbm9kZUNvdW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0
aWNEYXRhLm5vZGVDb3VudDsKQEAgLTM5Miw3ICs0MDIsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90UHJveHkucHJvdG90eXBlID0gewogCiAgICAgc3RhcnRMb2FkaW5nOiBmdW5jdGlvbihj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOworICAgICAg
ICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwgdGhpcyksIDApOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111280</attachid>
            <date>2011-10-17 10:12:40 -0700</date>
            <delta_ts>2011-10-19 02:25:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61178-20111017211238.patch</filename>
            <type>text/plain</type>
            <size>23172</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc2MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTU2NTExN2YxZWY1M2Fi
NTI1MmI4Y2ZiODZlYWZlZDI2YmQzZTg1Li45ZDE3NDVjM2VjZmMyYWRlMjlhMTU1YWZjMTE4NWE2
YzEyZjhkMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMTAtMTcgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDaHJvbWl1bV0gQWRkIGFuIGFiaWxpdHkgdG8gc2hvdyB0aGUgb2JqZWN0cyB0aGF0IHdl
cmUgYWxsb2NhdGVkIGJldHdlZW4gc25hcHNob3QgTi0yIGFuZCBzbmFwc2hvdCBOLTEgYW5kIHN0
aWxsIGFsaXZlIGluIHNuYXBzaG90IE4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTE3OAorCisgICAgICAgIFRoaXMgYWJpbGl0eSB3aWxsIGhlbHAg
dXMgdG8gc2VlIG9ubHkgdGhlIGxlYWtlZCBvYmplY3RzLgorICAgICAgICBTY2VuYXJpbzoKKyAg
ICAgICAgMSkgZG8gYW4gYWN0aW9uIG9uIGluc3BlY3RlZCBwYWdlIHdoaWNoIGxlYWtzIGphdmFz
Y3JpcHQgZGF0YTsKKyAgICAgICAgMikgbWFrZSBzbmFwc2hvdDsKKyAgICAgICAgMykgcmVwZWF0
IGZpcnN0IHR3byBzdGVwcyB0aHJlZSBvciBtb3JlIHRpbWVzOworICAgICAgICA0KSBzZWxlY3Qg
bGFzdCBzbmFwc2hvdCBhbmQgY2hvb3NlICdBbGxvY2F0ZWQgYXQnIHZpZXcgZm9yIGl0LgorICAg
ICAgICBUaGUgdmlldyBzaG93cyB0aGUgb2JqZWN0IHRoYXQgd2VyZSBhbGxvY2F0ZWQgYmV0d2Vl
biBzbmFwc2hvdCBOLTIgYW5kIHNuYXBzaG90IE4tMSBhbmQgc3RpbGwgYWxpdmUgaW4gc25hcHNo
b3QgTgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZS5fY3JlYXRl
Tm9kZXNQcm92aWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhl
YXBzaG90Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1
Y3RvcnNEYXRhR3JpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3Ry
dWN0b3JzRGF0YUdyaWQucHJvdG90eXBlLnNldERhdGFTb3VyY2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rv
cnNEYXRhR3JpZC5wcm90b3R5cGUuX2ZpbHRlclNlbGVjdEluZGV4Q2hhbmdlZC5maXJzdFNuYXBz
aG90TG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rv
cnNEYXRhR3JpZC5wcm90b3R5cGUuX2ZpbHRlclNlbGVjdEluZGV4Q2hhbmdlZC5zZWNvbmRTbmFw
c2hvdExvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0
b3JzRGF0YUdyaWQucHJvdG90eXBlLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUuX2Jhc2VQ
cm9maWxlSW5kZXhDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBz
aG90Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVk
SGVhcHNob3RWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmll
dy5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX2NoYW5nZUJhc2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5fY2hhbmdlRmlsdGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX2xv
YWRQcm9maWxlQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hv
dFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRh
aWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlck9wdGlvbnMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgbWF4Tm9kZUlkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmFnZ3JlZ2F0ZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZmlsdGVyZWRBZ2dyZWdhdGVzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZEFnZ3Jl
Z2F0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX3Nv
cnRBZ2dyZWdhdGVJbmRleGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLmNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS51cGRhdGVTdGF0aWNEYXRhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5maWx0ZXJlZEFnZ3JlZ2F0ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5jcmVh
dGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFByb3h5LnByb3RvdHlwZS5nZXQgbWF4Tm9kZUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuc3RhcnRMb2FkaW5nKToKKwogMjAxMS0xMC0x
NyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBj
aGlsZHJlbigpIG1ldGhvZCBzaG91bGQgYmUgY29uc29saWRhdGVkIGluIEFjY2Vzc2liaWxpdHlP
YmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0
YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwppbmRleCAyNzlhYjYxMjM2OWQ2MGMx
YmY1M2E3NjhiMWY1M2M1ZDI3ZjZhNzdhLi5iOWVjNjViZGNlY2U5NGRjZjAzMWUwZmU4YzJkMjBj
MDVmMWYxYWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCkBAIC00OTMsMTQgKzQ5
MywxNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZSA9
IHsKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3Rv
dHlwZTsKIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZSA9IGZ1bmN0
aW9uKHRyZWUsIGNsYXNzTmFtZSwgYWdncmVnYXRlKQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dENvbnN0cnVjdG9yTm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGNsYXNzTmFtZSwgYWdncmVnYXRlLCBh
Z2dyZWdhdGVzS2V5KQogewogICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5j
YWxsKHRoaXMsIHRyZWUsIGFnZ3JlZ2F0ZS5jb3VudCA+IDApOwogICAgIHRoaXMuX25hbWUgPSBj
bGFzc05hbWU7CiAgICAgdGhpcy5fY291bnQgPSBhZ2dyZWdhdGUuY291bnQ7CiAgICAgdGhpcy5f
c2hhbGxvd1NpemUgPSBhZ2dyZWdhdGUuc2VsZjsKICAgICB0aGlzLl9yZXRhaW5lZFNpemUgPSBh
Z2dyZWdhdGUubWF4UmV0OwotICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlTm9kZXNQ
cm92aWRlcih0cmVlLnNuYXBzaG90LCBjbGFzc05hbWUpOworICAgIHRoaXMuX3Byb3ZpZGVyID0g
dGhpcy5fY3JlYXRlTm9kZXNQcm92aWRlcih0cmVlLnNuYXBzaG90LCBjbGFzc05hbWUsIGFnZ3Jl
Z2F0ZXNLZXkpOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2Rl
LnByb3RvdHlwZSA9IHsKQEAgLTUwOSw5ICs1MDksOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlKHRoaXMuZGF0YUdyaWQsIG51bGwsIHRo
aXMuZGF0YUdyaWQuc25hcHNob3QsIGl0ZW0pOwogICAgIH0sCiAKLSAgICBfY3JlYXRlTm9kZXNQ
cm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIGNsYXNzTmFtZSkKKyAgICBfY3JlYXRlTm9kZXNQ
cm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzbmFwc2hvdC5jcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3Mo
Y2xhc3NOYW1lKTsKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90LmNyZWF0ZU5vZGVzUHJvdmlkZXJG
b3JDbGFzcyhjbGFzc05hbWUsIGFnZ3JlZ2F0ZXNLZXkpOwogICAgIH0sCiAKICAgICBjb21wYXJh
dG9yOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCA2ODY3MzBjNjQ5ZDIzMDJh
ZTQ4ZDYwNzJhZmM2N2MxNWI4YmQ5Mzc1Li5jYjI0NmQ3MWNhM2IzNTUyOTVmNDE0YTM4YTNlYmJj
NWY3MzA2OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTE4OSw2ICsxODksNyBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQgPSBmdW5jdGlvbigpCiAg
ICAgICAgIHJldGFpbmVkU2l6ZTogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXRh
aW5lZCBTaXplIiksIHdpZHRoOiAiOTBweCIsIHNvcnQ6ICJkZXNjZW5kaW5nIiwgc29ydGFibGU6
IHRydWUgfQogICAgIH07CiAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0
YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKKyAgICB0aGlzLl9maWx0ZXJQcm9maWxlSW5kZXgg
PSAtMTsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlk
LnByb3RvdHlwZSA9IHsKQEAgLTIwOCwxOSArMjA5LDY0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0
aGlzLnNuYXBzaG90VmlldyA9IHNuYXBzaG90VmlldzsKICAgICAgICAgdGhpcy5zbmFwc2hvdCA9
IHNuYXBzaG90OwotICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsKKyAgICAgICAgaWYg
KHRoaXMuX2ZpbHRlclByb2ZpbGVJbmRleCA9PT0gLTEpCisgICAgICAgICAgICB0aGlzLnBvcHVs
YXRlQ2hpbGRyZW4oKTsKICAgICB9LAogCiAgICAgcG9wdWxhdGVDaGlsZHJlbjogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gYWdncmVnYXRlc1JlY2VpdmVkKGFnZ3JlZ2F0ZXMp
CisgICAgICAgIGZ1bmN0aW9uIGFnZ3JlZ2F0ZXNSZWNlaXZlZChrZXksIGFnZ3JlZ2F0ZXMpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAodmFyIGNvbnN0cnVjdG9yIGluIGFnZ3JlZ2F0ZXMp
Ci0gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdENvbnN0cnVjdG9yTm9kZSh0aGlzLCBjb25zdHJ1Y3RvciwgYWdncmVnYXRlc1tjb25z
dHJ1Y3Rvcl0pKTsKKyAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlKHRoaXMsIGNvbnN0cnVjdG9yLCBhZ2dy
ZWdhdGVzW2NvbnN0cnVjdG9yXSwga2V5KSk7CiAgICAgICAgICAgICB0aGlzLnNvcnRpbmdDaGFu
Z2VkKCk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5zbmFwc2hvdC5hZ2dyZWdhdGVzKGZhbHNl
LCBhZ2dyZWdhdGVzUmVjZWl2ZWQuYmluZCh0aGlzKSk7Ci0gICAgfQorCisgICAgICAgIGlmICh0
aGlzLl9maWx0ZXJQcm9maWxlSW5kZXggPT09IC0xKSB7CisgICAgICAgICAgICB0aGlzLnNuYXBz
aG90LmFnZ3JlZ2F0ZXMoZmFsc2UsIGFnZ3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMsIG51bGwp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZGlzcG9z
ZSgpOworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMucmVzZXRT
b3J0aW5nQ2FjaGUoKTsKKworICAgICAgICB2YXIga2V5ID0gdGhpcy5fbWluTm9kZUlkICsgIi4u
IiArIHRoaXMuX21heE5vZGVJZDsKKyAgICAgICAgdmFyIGZpbHRlciA9ICJmdW5jdGlvbihub2Rl
KSB7IHZhciBpZCA9IG5vZGUuaWQ7IHJldHVybiBpZCA+ICIgKyB0aGlzLl9taW5Ob2RlSWQgKyAi
ICYmIGlkIDw9ICIgKyB0aGlzLl9tYXhOb2RlSWQgKyAiOyB9IjsKKyAgICAgICAgdGhpcy5zbmFw
c2hvdC5maWx0ZXJlZEFnZ3JlZ2F0ZXMoa2V5LCBmaWx0ZXIsIGFnZ3JlZ2F0ZXNSZWNlaXZlZC5i
aW5kKHRoaXMsIGtleSkpOworICAgIH0sCisKKyAgICBfZmlsdGVyU2VsZWN0SW5kZXhDaGFuZ2Vk
OiBmdW5jdGlvbihsb2FkZXIsIHByb2ZpbGVJbmRleCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Zp
bHRlclByb2ZpbGVJbmRleCA9IHByb2ZpbGVJbmRleDsKKworICAgICAgICBkZWxldGUgdGhpcy5f
bWF4Tm9kZUlkOworICAgICAgICBkZWxldGUgdGhpcy5fbWluTm9kZUlkOworCisgICAgICAgIGlm
ICh0aGlzLl9maWx0ZXJQcm9maWxlSW5kZXggPT09IC0xKSB7CisgICAgICAgICAgICB0aGlzLnBv
cHVsYXRlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGZpcnN0U25hcHNob3RMb2FkZWQoc25hcHNob3QpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRoaXMuX21heE5vZGVJZCA9IHNuYXBzaG90Lm1heE5vZGVJZDsKKyAgICAgICAg
ICAgIGlmIChwcm9maWxlSW5kZXggPiAwKQorICAgICAgICAgICAgICAgIGxvYWRlcihwcm9maWxl
SW5kZXggLSAxLCBzZWNvbmRTbmFwc2hvdExvYWRlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX21pbk5vZGVJZCA9IDA7CisgICAgICAgICAg
ICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzZWNvbmRTbmFwc2hvdExvYWRlZChzbmFwc2hvdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGhpcy5fbWluTm9kZUlkID0gc25hcHNob3QubWF4Tm9kZUlkOwor
ICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKCk7CisgICAgICAgIH0KKworICAgICAg
ICBsb2FkZXIocHJvZmlsZUluZGV4LCBmaXJzdFNuYXBzaG90TG9hZGVkLmJpbmQodGhpcykpOwor
ICAgIH0sCiB9OwogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdy
aWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJs
ZURhdGFHcmlkLnByb3RvdHlwZTsKQEAgLTI2Miw2ICszMDgsMTEgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc25hcHNo
b3QgPSBzbmFwc2hvdDsKICAgICB9LAogCisgICAgX2Jhc2VQcm9maWxlSW5kZXhDaGFuZ2VkOiBm
dW5jdGlvbihsb2FkZXIsIHByb2ZpbGVJbmRleCkKKyAgICB7CisgICAgICAgIGxvYWRlcihwcm9m
aWxlSW5kZXgsIHRoaXMuc2V0QmFzZURhdGFTb3VyY2UuYmluZCh0aGlzKSk7CisgICAgfSwKKwog
ICAgIHNldEJhc2VEYXRhU291cmNlOiBmdW5jdGlvbihiYXNlU25hcHNob3QpCiAgICAgewogICAg
ICAgICB0aGlzLmJhc2VTbmFwc2hvdCA9IGJhc2VTbmFwc2hvdDsKQEAgLTUxOSw2ICs1NzAsNyBA
QCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHBy
b2ZpbGUpCiAKICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKICAgICB0aGlzLnBhcmVudC5hZGRF
dmVudExpc3RlbmVyKCJwcm9maWxlIGFkZGVkIiwgdGhpcy5fdXBkYXRlQmFzZU9wdGlvbnMsIHRo
aXMpOworICAgIHRoaXMucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoInByb2ZpbGUgYWRkZWQiLCB0
aGlzLl91cGRhdGVGaWx0ZXJPcHRpb25zLCB0aGlzKTsKIAogICAgIHRoaXMuc2hvd0NvdW50QXNQ
ZXJjZW50ID0gZmFsc2U7CiAgICAgdGhpcy5zaG93U2hhbGxvd1NpemVBc1BlcmNlbnQgPSBmYWxz
ZTsKQEAgLTYxNiw2ICs2NjgsMTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlQmFzZS5iaW5kKHRoaXMpLCBm
YWxzZSk7CiAgICAgdGhpcy5fdXBkYXRlQmFzZU9wdGlvbnMoKTsKIAorICAgIHRoaXMuZmlsdGVy
U2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOworICAgIHRo
aXMuZmlsdGVyU2VsZWN0RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKKyAg
ICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhp
cy5fY2hhbmdlRmlsdGVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl91cGRhdGVGaWx0
ZXJPcHRpb25zKCk7CisKICAgICB0aGlzLnBlcmNlbnRCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9y
LlN0YXR1c0JhckJ1dHRvbigiIiwgInBlcmNlbnQtdGltZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVz
LWJhci1pdGVtIik7CiAgICAgdGhpcy5wZXJjZW50QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fcGVyY2VudENsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMu
aGVscEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAiaGVhcHNo
b3QtaGVscC1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIik7CkBAIC02MjksMTEgKzY4
NiwxMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJl
bnQsIHByb2ZpbGUpCiAgICAgewogICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX3Byb2ZpbGVzKCk7
CiAgICAgICAgIHZhciBwcm9maWxlSW5kZXg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGlzdC5sZW5ndGg7ICsraSkKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAobGlzdFtpXS51aWQgPT09IHRoaXMuX3Byb2ZpbGVV
aWQpIHsKICAgICAgICAgICAgICAgICBwcm9maWxlSW5kZXggPSBpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHByb2ZpbGVJ
bmRleCA+IDApCiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5k
ZXggPSBwcm9maWxlSW5kZXggLSAxOwogICAgICAgICBlbHNlCkBAIC02NTgsNyArNzE3LDcgQEAg
V2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIGdl
dCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewotICAgICAgICByZXR1cm4gW3RoaXMudmlld1NlbGVj
dEVsZW1lbnQsIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQsIHRoaXMucGVyY2VudEJ1dHRvbi5lbGVt
ZW50LCB0aGlzLmhlbHBCdXR0b24uZWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy52aWV3
U2VsZWN0RWxlbWVudCwgdGhpcy5iYXNlU2VsZWN0RWxlbWVudCwgdGhpcy5maWx0ZXJTZWxlY3RF
bGVtZW50LCB0aGlzLnBlcmNlbnRCdXR0b24uZWxlbWVudCwgdGhpcy5oZWxwQnV0dG9uLmVsZW1l
bnRdOwogICAgIH0sCiAKICAgICBnZXQgcHJvZmlsZSgpCkBAIC04NjUsMTQgKzkyNCwyMiBAQCBX
ZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhpcy5fcHJvZmls
ZXMoKVt0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsKLSAgICAgICAg
dGhpcy5fbG9hZFByb2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQsIGJhc2VQcm9maWxlTG9hZGVk
LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmRhdGFHcmlkLl9iYXNlUHJvZmlsZUluZGV4Q2hh
bmdlZCh0aGlzLl9sb2FkUHJvZmlsZUJ5SW5kZXguYmluZCh0aGlzKSwgdGhpcy5iYXNlU2VsZWN0
RWxlbWVudC5zZWxlY3RlZEluZGV4KTsKIAotICAgICAgICBmdW5jdGlvbiBiYXNlUHJvZmlsZUxv
YWRlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9iYXNlUHJvZmlsZVdy
YXBwZXI7Ci0gICAgICAgICAgICB0aGlzLmJhc2VQcm9maWxlLl9sYXN0U2hvd24gPSBEYXRlLm5v
dygpOwotICAgICAgICAgICAgdGhpcy5kaWZmRGF0YUdyaWQuc2V0QmFzZURhdGFTb3VyY2UodGhp
cy5iYXNlUHJvZmlsZVdyYXBwZXIpOwotICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy5jdXJy
ZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sgfHwgIXRoaXMuX3NlYXJj
aFJlc3VsdHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQg
c2VhcmNoIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBhZ2Fpbi4gRmlyc3QgbmVnYXRlIG91dCBwcmV2
aW91cyBtYXRjaAorICAgICAgICAvLyBjb3VudCBieSBjYWxsaW5nIHRoZSBzZWFyY2ggZmluaXNo
ZWQgY2FsbGJhY2sgd2l0aCBhIG5lZ2F0aXZlIG51bWJlciBvZiBtYXRjaGVzLgorICAgICAgICAv
LyBUaGVuIHBlcmZvcm0gdGhlIHNlYXJjaCBhZ2FpbiB3aXRoIHRoZSBzYW1lIHF1ZXJ5IGFuZCBj
YWxsYmFjay4KKyAgICAgICAgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayh0aGlzLCAtdGhp
cy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOworICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2godGhp
cy5jdXJyZW50UXVlcnksIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2spOworICAgIH0sCisK
KyAgICBfY2hhbmdlRmlsdGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcHJvZmls
ZUluZGV4ID0gdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggLSAxOworICAg
ICAgICB0aGlzLmRhdGFHcmlkLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQodGhpcy5fbG9hZFBy
b2ZpbGVCeUluZGV4LmJpbmQodGhpcyksIHByb2ZpbGVJbmRleCk7CiAKICAgICAgICAgaWYgKCF0
aGlzLmN1cnJlbnRRdWVyeSB8fCAhdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhp
cy5fc2VhcmNoUmVzdWx0cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg5NCw2ICs5NjEsMTIg
QEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5sb2FkSGVhcFNuYXBzaG90KHByb2ZpbGVV
aWQsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgX2xvYWRQcm9maWxlQnlJbmRleDogZnVuY3Rp
b24ocHJvZmlsZUluZGV4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBwcm9maWxlVWlk
ID0gdGhpcy5fcHJvZmlsZXMoKVtwcm9maWxlSW5kZXhdLnVpZDsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5wcm9maWxlcy5sb2FkSGVhcFNuYXBzaG90KHByb2ZpbGVVaWQsIGNhbGxiYWNr
KTsKKyAgICB9LAorCiAgICAgaXNEZXRhaWxlZFNuYXBzaG90OiBmdW5jdGlvbihzbmFwc2hvdCkK
ICAgICB7CiAgICAgICAgIHZhciBzID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qoc25h
cHNob3QpOwpAQCAtMTAwMywxMSArMTA3NiwxMiBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFw
c2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmN1cnJlbnRWaWV3LnNob3coKTsK
ICAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKICAgICAgICAgdGhpcy5kYXRhR3Jp
ZC51cGRhdGVXaWR0aHMoKTsKKwogICAgICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhp
cy5kaWZmVmlldykgewogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5yZW1vdmVT
dHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZC5zbmFw
c2hvdFZpZXcpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2Uo
dGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7CiAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdl
QmFzZSgpOworICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlz
LCB0aGlzLnByb2ZpbGVXcmFwcGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVu
Iik7CkBAIC0xMDE1LDYgKzEwODksMTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFT
b3VyY2UodGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5jb25zdHJ1Y3RvcnNWaWV3KQorICAgICAgICAg
ICAgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYWRkU3R5
bGVDbGFzcygiaGlkZGVuIik7CisKICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVyeSB8fCAh
dGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cykKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTE4NCw2ICsxMjYzLDMzIEBAIFdlYkluc3BlY3Rvci5E
ZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisg
ICAgX3VwZGF0ZUZpbHRlck9wdGlvbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBs
aXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKKyAgICAgICAgLy8gV2UncmUgYXNzdW1pbmcgdGhhdCBz
bmFwc2hvdHMgY2FuIG9ubHkgYmUgYWRkZWQuCisgICAgICAgIGlmICh0aGlzLmZpbHRlclNlbGVj
dEVsZW1lbnQubGVuZ3RoIC0gMSA9PT0gbGlzdC5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCF0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQubGVuZ3RoKSB7CisgICAg
ICAgICAgICB2YXIgZmlsdGVyT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9u
Iik7CisgICAgICAgICAgICBmaWx0ZXJPcHRpb24ubGFiZWwgPSAiQWxsIG9iamVjdHMiOworICAg
ICAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKGZpbHRlck9wdGlv
bik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5maWx0ZXJTZWxlY3RF
bGVtZW50Lmxlbmd0aCAtIDEsIG4gPSBsaXN0Lmxlbmd0aDsgaSA8IG47ICsraSkgeworICAgICAg
ICAgICAgdmFyIGZpbHRlck9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIp
OworICAgICAgICAgICAgdmFyIHRpdGxlID0gbGlzdFtpXS50aXRsZTsKKyAgICAgICAgICAgIGlm
ICghdGl0bGUuaW5kZXhPZihVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFpKQorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiT2JqZWN0cyBhbGxvY2F0ZWQgYmVmb3JlIFNuYXBzaG90ICVkIiwgdGl0bGUuc3Vi
c3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZS5sZW5ndGggKyAxKSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiT2JqZWN0cyBhbGxvY2F0ZWQgYmV0d2VlbiBTbmFwc2hvdCAlZCBhbmQgU25hcHNob3Qg
JWQiLCB0aXRsZS5zdWJzdHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLmxlbmd0aCArIDEp
IC0gMSwgdGl0bGUuc3Vic3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZS5sZW5ndGggKyAx
KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaWx0ZXJPcHRpb24ubGFiZWwgPSB0aXRs
ZTsKKyAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChmaWx0
ZXJPcHRpb24pOworICAgICAgICB9CisgICAgfSwKKwogICAgIF91cGRhdGVQZXJjZW50QnV0dG9u
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faXNTaG93aW5nQXNQZXJjZW50
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBz
aG90LmpzCmluZGV4IDMzZjkxOTExMDBkZTU1YTY5M2EzNjg1MjAxYTE3NzkwMTk3OWY2YTAuLjUy
ODAwYjRmNjJjMzlkOTdhMTJiZDMzYjk1NjQ0YjBlYmJiM2UzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC03MTgsNiAr
NzE4LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9kb21pbmF0ZWROb2RlczsKICAgICAgICAgZGVsZXRlIHRoaXMuX2RvbWlu
YXRlZEluZGV4OwogICAgICAgICBkZWxldGUgdGhpcy5fZmxhZ3M7CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9maWx0ZXJlZEFnZ3JlZ2F0ZXM7CiAgICAgfSwKIAogICAgIGdldCBfYWxsTm9kZXMoKQpA
QCAtNzUyLDYgKzc1MywxOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlz
LCB0aGlzLl9yb290Tm9kZUluZGV4KTsKICAgICB9LAogCisgICAgZ2V0IG1heE5vZGVJZCgpCisg
ICAgeworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX21heE5vZGVJZCA9PT0gIm51bWJlciIpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fbWF4Tm9kZUlkOworICAgICAgICB0aGlzLl9tYXhOb2Rl
SWQgPSAwOworICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5fYWxsTm9kZXM7IGl0ZXIuaGFz
TmV4dCgpOyBpdGVyLm5leHQoKSkgeworICAgICAgICAgICAgdmFyIGlkID0gaXRlci5ub2RlLmlk
OworICAgICAgICAgICAgaWYgKChpZCAlIDIpICYmIGlkID4gdGhpcy5fbWF4Tm9kZUlkKQorICAg
ICAgICAgICAgICAgIHRoaXMuX21heE5vZGVJZCA9IGlkOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0aGlzLl9tYXhOb2RlSWQ7CisgICAgfSwKKwogICAgIGdldCByb290Tm9kZUluZGV4KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yb290Tm9kZUluZGV4OwpAQCAtNzkyLDEyICs4
MDYsMjggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgYWdn
cmVnYXRlczogZnVuY3Rpb24oc29ydGVkSW5kZXhlcykKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fYWdncmVnYXRlcykKLSAgICAgICAgICAgIHRoaXMuX2J1aWxkQWdncmVnYXRlcygpOwotICAg
ICAgICBpZiAoc29ydGVkSW5kZXhlcyAmJiAhdGhpcy5fYWdncmVnYXRlc0luZGV4ZXNTb3J0ZWQp
Ci0gICAgICAgICAgICB0aGlzLl9zb3J0QWdncmVnYXRlSW5kZXhlcygpOworICAgICAgICAgICAg
dGhpcy5fYWdncmVnYXRlcyA9IHRoaXMuX2J1aWxkQWdncmVnYXRlcygpOworICAgICAgICBpZiAo
c29ydGVkSW5kZXhlcyAmJiAhdGhpcy5fYWdncmVnYXRlc0luZGV4ZXNTb3J0ZWQpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3NvcnRBZ2dyZWdhdGVJbmRleGVzKHRoaXMuX2FnZ3JlZ2F0ZXMpOworICAg
ICAgICAgICAgdGhpcy5fYWdncmVnYXRlc0luZGV4ZXNTb3J0ZWQgPSB0cnVlOworICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0aGlzLl9hZ2dyZWdhdGVzOwogICAgIH0sCiAKKyAgICBmaWx0ZXJl
ZEFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKGtleSwgZmlsdGVyKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9maWx0ZXJlZEFnZ3JlZ2F0ZXMpCisgICAgICAgICAgICB0aGlzLl9maWx0ZXJlZEFnZ3Jl
Z2F0ZXMgPSB7fQorCisgICAgICAgIGlmIChrZXkgaW4gdGhpcy5fZmlsdGVyZWRBZ2dyZWdhdGVz
KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcmVkQWdncmVnYXRlc1trZXldOworCisg
ICAgICAgIHZhciBhZ2dyZWdhdGVzID0gdGhpcy5fYnVpbGRBZ2dyZWdhdGVzKHRoaXMuX3BhcnNl
RmlsdGVyKGZpbHRlcikpOworICAgICAgICB0aGlzLl9zb3J0QWdncmVnYXRlSW5kZXhlcyhhZ2dy
ZWdhdGVzKTsKKyAgICAgICAgdGhpcy5fZmlsdGVyZWRBZ2dyZWdhdGVzW2tleV0gPSBhZ2dyZWdh
dGVzOworICAgICAgICByZXR1cm4gYWdncmVnYXRlczsKKyAgICB9LAorCiAgICAgX2J1aWxkUmV2
ZXJzZUluZGV4OiBmdW5jdGlvbihpbmRleEFycmF5TmFtZSwgYmFja1JlZnNBcnJheU5hbWUsIGlu
ZGV4Q2FsbGJhY2ssIGRhdGFDYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbm9k
ZUluZGV4KQpAQCAtODUzLDE4ICs4ODMsMjAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgfSkuYmluZCh0aGlzKSk7CiAgICAgfSwKIAotICAg
IF9idWlsZEFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGRBZ2dyZWdhdGVzOiBmdW5j
dGlvbihmaWx0ZXIpCiAgICAgewotICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzID0ge307CisgICAg
ICAgIHZhciBhZ2dyZWdhdGVzID0ge307CiAgICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLl9h
bGxOb2RlczsgaXRlci5oYXNOZXh0KCk7IGl0ZXIubmV4dCgpKSB7CiAgICAgICAgICAgICB2YXIg
bm9kZSA9IGl0ZXIubm9kZTsKKyAgICAgICAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlcihub2Rl
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlLnR5cGUg
IT09ICJuYXRpdmUiICYmIG5vZGUuc2VsZlNpemUgPT09IDApCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB2YXIgbmFtZU1hdHRlcnMgPSBub2RlLnR5cGUgPT09ICJvYmpl
Y3QiIHx8IG5vZGUudHlwZSA9PT0gIm5hdGl2ZSI7CiAgICAgICAgICAgICB2YXIgY2xhc3NOYW1l
ID0gbm9kZS5jbGFzc05hbWU7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2FnZ3JlZ2F0ZXMuaGFz
T3duUHJvcGVydHkoY2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVz
W2NsYXNzTmFtZV0gPSB7IGNvdW50OiAwLCBzZWxmOiAwLCBtYXhSZXQ6IDAsIHR5cGU6IG5vZGUu
dHlwZSwgbmFtZTogbmFtZU1hdHRlcnMgPyBub2RlLm5hbWUgOiBudWxsLCBpZHhzOiBbXSB9Owot
ICAgICAgICAgICAgdmFyIGNsc3MgPSB0aGlzLl9hZ2dyZWdhdGVzW2NsYXNzTmFtZV07CisgICAg
ICAgICAgICBpZiAoIWFnZ3JlZ2F0ZXMuaGFzT3duUHJvcGVydHkoY2xhc3NOYW1lKSkKKyAgICAg
ICAgICAgICAgICBhZ2dyZWdhdGVzW2NsYXNzTmFtZV0gPSB7IGNvdW50OiAwLCBzZWxmOiAwLCBt
YXhSZXQ6IDAsIHR5cGU6IG5vZGUudHlwZSwgbmFtZTogbmFtZU1hdHRlcnMgPyBub2RlLm5hbWUg
OiBudWxsLCBpZHhzOiBbXSB9OworICAgICAgICAgICAgdmFyIGNsc3MgPSBhZ2dyZWdhdGVzW2Ns
YXNzTmFtZV07CiAgICAgICAgICAgICArK2Nsc3MuY291bnQ7CiAgICAgICAgICAgICBjbHNzLnNl
bGYgKz0gbm9kZS5zZWxmU2l6ZTsKICAgICAgICAgICAgIGlmIChub2RlLnJldGFpbmVkU2l6ZSA+
IGNsc3MubWF4UmV0KQpAQCAtODcyLDIzICs5MDQsMjIgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjbHNzLmlkeHMucHVzaChub2RlLm5vZGVJ
bmRleCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2hhdmUgb2ZmIHByb3Zpc2lvbmFsbHkgYWxs
b2NhdGVkIHNwYWNlLgotICAgICAgICBmb3IgKHZhciBjbGFzc05hbWUgaW4gdGhpcy5fYWdncmVn
YXRlcykKLSAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNbY2xhc3NOYW1lXS5pZHhzID0gdGhp
cy5fYWdncmVnYXRlc1tjbGFzc05hbWVdLmlkeHMuc2xpY2UoMCk7CisgICAgICAgIGZvciAodmFy
IGNsYXNzTmFtZSBpbiBhZ2dyZWdhdGVzKQorICAgICAgICAgICAgYWdncmVnYXRlc1tjbGFzc05h
bWVdLmlkeHMgPSBhZ2dyZWdhdGVzW2NsYXNzTmFtZV0uaWR4cy5zbGljZSgwKTsKKyAgICAgICAg
cmV0dXJuIGFnZ3JlZ2F0ZXM7CiAgICAgfSwKIAotICAgIF9zb3J0QWdncmVnYXRlSW5kZXhlczog
ZnVuY3Rpb24oKQorICAgIF9zb3J0QWdncmVnYXRlSW5kZXhlczogZnVuY3Rpb24oYWdncmVnYXRl
cykKICAgICB7CiAgICAgICAgIHZhciBub2RlQSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZSh0aGlzKTsKICAgICAgICAgdmFyIG5vZGVCID0gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlKHRoaXMpOwotICAgICAgICBmb3IgKHZhciBjbHNzIGluIHRoaXMuX2FnZ3Jl
Z2F0ZXMpCi0gICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzW2Nsc3NdLmlkeHMuc29ydCgKKyAg
ICAgICAgZm9yICh2YXIgY2xzcyBpbiBhZ2dyZWdhdGVzKQorICAgICAgICAgICAgYWdncmVnYXRl
c1tjbHNzXS5pZHhzLnNvcnQoCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oaWR4QSwgaWR4Qikg
ewogICAgICAgICAgICAgICAgICAgICBub2RlQS5ub2RlSW5kZXggPSBpZHhBOwogICAgICAgICAg
ICAgICAgICAgICBub2RlQi5ub2RlSW5kZXggPSBpZHhCOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbm9kZUEuaWQgPCBub2RlQi5pZCA/IC0xIDogMTsKICAgICAgICAgICAgICAgICB9KTsK
LQotICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzSW5kZXhlc1NvcnRlZCA9IHRydWU7CiAgICAgfSwK
IAogICAgIF9idWlsZE5vZGVJbmRleDogZnVuY3Rpb24oKQpAQCAtMTA0OCw5ICsxMDc5LDkgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIodGhpcywgdGhpcy5fcGFy
c2VGaWx0ZXIoZmlsdGVyKSk7CiAgICAgfSwKIAotICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JD
bGFzczogZnVuY3Rpb24oY2xhc3NOYW1lKQorICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFz
czogZnVuY3Rpb24oY2xhc3NOYW1lLCBhZ2dyZWdhdGVzS2V5KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlcih0aGlzLCBudWxs
LCB0aGlzLmFnZ3JlZ2F0ZXMoZmFsc2UpW2NsYXNzTmFtZV0uaWR4cyk7CisgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIodGhpcywgbnVsbCwg
YWdncmVnYXRlc0tleSA/ICB0aGlzLmZpbHRlcmVkQWdncmVnYXRlcyhhZ2dyZWdhdGVzS2V5KVtj
bGFzc05hbWVdLmlkeHMgOiB0aGlzLmFnZ3JlZ2F0ZXMoZmFsc2UpW2NsYXNzTmFtZV0uaWR4cyk7
CiAgICAgfSwKIAogICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JEb21pbmF0b3I6IGZ1bmN0aW9u
KG5vZGVJbmRleCwgZmlsdGVyKQpAQCAtMTA2Niw3ICsxMDk3LDcgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAKICAgICB1cGRhdGVTdGF0aWNEYXRhOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICByZXR1cm4ge25vZGVDb3VudDogdGhpcy5ub2RlQ291bnQsIHJv
b3ROb2RlSW5kZXg6IHRoaXMuX3Jvb3ROb2RlSW5kZXgsIHRvdGFsU2l6ZTogdGhpcy50b3RhbFNp
emUsIHVpZDogdGhpcy51aWQsIG5vZGVGbGFnczogdGhpcy5fbm9kZUZsYWdzfTsKKyAgICAgICAg
cmV0dXJuIHtub2RlQ291bnQ6IHRoaXMubm9kZUNvdW50LCByb290Tm9kZUluZGV4OiB0aGlzLl9y
b290Tm9kZUluZGV4LCB0b3RhbFNpemU6IHRoaXMudG90YWxTaXplLCB1aWQ6IHRoaXMudWlkLCBu
b2RlRmxhZ3M6IHRoaXMuX25vZGVGbGFncywgbWF4Tm9kZUlkOiB0aGlzLm1heE5vZGVJZH07CiAg
ICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3RQcm94eS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90UHJveHkuanMKaW5kZXggN2Y1N2QzNTMxZTJkYzJlNTA3MGFjNjRiNDQx
NjFhNzljYWU3OWM4Yi4uZWJmZTE4ZWE5ZjA2NGJiZGQ2YjAzZWI5NjNhZjBmMDlkNWM3MDRlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3RQcm94eS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdFByb3h5LmpzCkBAIC0zMTUsNiArMzE1LDExIEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2FsbE1ldGhvZChjYWxsYmFj
aywgImFnZ3JlZ2F0ZXMiLCBzb3J0ZWRJbmRleGVzKTsKICAgICB9LAogCisgICAgZmlsdGVyZWRB
Z2dyZWdhdGVzOiBmdW5jdGlvbihrZXksIGZpbHRlciwgY2FsbGJhY2spCisgICAgeworICAgICAg
ICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ssICJmaWx0ZXJlZEFnZ3JlZ2F0ZXMiLCBrZXksIGZp
bHRlcik7CisgICAgfSwKKwogICAgIGNyZWF0ZURpZmY6IGZ1bmN0aW9uKGNsYXNzTmFtZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLmNhbGxGYWN0b3J5TWV0aG9kKG51bGwsICJjcmVhdGVE
aWZmIiwgICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94eSIsIGNsYXNzTmFtZSk7
CkBAIC0zMzAsOSArMzM1LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwgImNy
ZWF0ZU5vZGVzUHJvdmlkZXIiLCAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJv
eHkiLCBmaWx0ZXIpOwogICAgIH0sCiAKLSAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3M6
IGZ1bmN0aW9uKGNsYXNzTmFtZSkKKyAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3M6IGZ1
bmN0aW9uKGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmNhbGxGYWN0b3J5TWV0aG9kKG51bGwsICJjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3Mi
LCAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkiLCBjbGFzc05hbWUpOwor
ICAgICAgICByZXR1cm4gdGhpcy5jYWxsRmFjdG9yeU1ldGhvZChudWxsLCAiY3JlYXRlTm9kZXNQ
cm92aWRlckZvckNsYXNzIiwgIldlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclByb3h5
IiwgY2xhc3NOYW1lLCBhZ2dyZWdhdGVzS2V5KTsKICAgICB9LAogCiAgICAgY3JlYXRlTm9kZXNQ
cm92aWRlckZvckRvbWluYXRvcjogZnVuY3Rpb24obm9kZUluZGV4LCBmaWx0ZXIpCkBAIC0zNjAs
NiArMzY1LDExIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiAhIXRoaXMuX29iamVjdElkOwogICAgIH0sCiAKKyAgICBnZXQgbWF4
Tm9kZUlkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdGF0aWNEYXRhLm1heE5vZGVJ
ZDsKKyAgICB9LAorCiAgICAgZ2V0IG5vZGVDb3VudCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc3RhdGljRGF0YS5ub2RlQ291bnQ7CkBAIC0zOTcsNyArNDA3LDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKIAogICAgIHN0YXJ0TG9hZGluZzog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCAw
KTsKKyAgICAgICAgc2V0VGltZW91dChjYWxsYmFjay5iaW5kKG51bGwsIHRoaXMpLCAwKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>111394</attachid>
            <date>2011-10-17 23:52:45 -0700</date>
            <delta_ts>2011-10-17 23:52:45 -0700</delta_ts>
            <desc>screenshot</desc>
            <filename>filter.png</filename>
            <type>image/png</type>
            <size>81055</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">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
QwjBFDFAAKKTDZ/ueH7WqCUA8Nm3//i2+HMA9PziXQBwcTcIVU9FVlbW7t271XcKCgp27WoXTJIk
v9/f1NSkGhIWiyU+Ph4AHA4HpbSisnb//qPJKQkJ8bEXQFRC6Turd6dn9uM4c1CkgBDDIwZBtMU2
bXoeAqooisfjUQezLNsnLb5fRuL2I2Vrth9NS4zKTo0rLWsuLfeZLQn/envHVVcMi4/r/VKzp0f4
hAOiVDWOEBIKhfx+vyzLgiDExcU5nU6DwVBWVlZUVDR06FCPx2e19nJ01p49J1pagsOv6l9eXrZj
xw6rzXrDDTdkZmZKkqTT6TDG/fv3X/fNmvkLF+IFD4T+eKvR3YDdbYq7jYuOYwwmXXScNS7B09Lg
9DcGFZAA/DIki76UkO/T5S/NeWBJtwLIiqzaFV0PKyqq8nhx4Zjv5Jw376a6+ia3JyTo9DGx8erF
lRsbuZqqo/sODR5SkJWV/f777+3YscNkMg0c2P+rr2qOHKkYMCAtksuiKFhWug9/IhhLklRbWzt4
/JWsIMiS1LZlM5ElS25/lhc8B/Yxgk5OjO+IvIPGhoaEuJjjJSWJqem7NqwJhUIsy56nx1zN2OF5
/r1DyB1CQxJhTDoghDiOkySJZVmdThc2KuB7FcnaYRim27A0DQ0NjUufcMPZYw3eogafKJNEmzAq
I8ogsIRSRts90TgP9EKfipBEGEIRAwCgUIpQ+61MKQS80oF1jUTUjbshhlLY9F6FPdkwYFR0Wn9r
5dH1j735BQBxJBtHTo3dtfqSyC4KeypmzpypWg6KogwanFdbW6coyskTJxYvvvNsx1511VUA8MI/
l91++40XQNSjFY1b1pdPvWr8seNtQYliBqLsptSo6LFDs0OhEPl+x2Y1XJ5hmNEDMw063buf7mpq
Dhh0PEGc0exoa3O9+/GuX9815XzI2djY+OabbwLAwIEDw3obQigvL++rr7564YUXbrvttvT0dDUr
QBCEYDAoCALG2Ofz1dXV8bx+aP7A3hVp/4ET+XkjXG7Xtzt2sDw7d+7cjIwMAGBZlud5QRDmzJm9
devWnVs2j5p8Zduk+bqv30XuZuJqI36PLjGlTRSrnV4/sAYBQgqIBBQG6gPgJrw+EIhEANUd163y
WnSsckTB6LCc8+ffHBufsmbtxj179i68/c6YmHbbNbRlA5+cHJWYLMtgMNrmz795xYp/79ix44or
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
gg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111581</attachid>
            <date>2011-10-19 02:25:47 -0700</date>
            <delta_ts>2011-10-19 04:50:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61178-20111019132544.patch</filename>
            <type>text/plain</type>
            <size>25025</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNzRiMWI1NDY2NThkNDRi
YjdmNzU1YWIwZTU2NTY4YTI5YTE4MGNjLi40N2NhNDJhNjFhNWQ2ZWE0MGQxYWE0MGI5NDcwNWI1
NmVmZmY1NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMTAtMTkgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDaHJvbWl1bV0gQWRkIGFuIGFiaWxpdHkgdG8gc2hvdyB0aGUgb2JqZWN0cyB0aGF0IHdl
cmUgYWxsb2NhdGVkIGJldHdlZW4gc25hcHNob3QgTi0yIGFuZCBzbmFwc2hvdCBOLTEgYW5kIHN0
aWxsIGFsaXZlIGluIHNuYXBzaG90IE4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTE3OAorCisgICAgICAgIFRoaXMgYWJpbGl0eSB3aWxsIGhlbHAg
dXMgdG8gc2VlIG9ubHkgdGhlIGxlYWtlZCBvYmplY3RzLgorICAgICAgICBTY2VuYXJpbzoKKyAg
ICAgICAgMSkgZG8gYW4gYWN0aW9uIG9uIGluc3BlY3RlZCBwYWdlIHdoaWNoIGxlYWtzIGphdmFz
Y3JpcHQgZGF0YTsKKyAgICAgICAgMikgbWFrZSBzbmFwc2hvdDsKKyAgICAgICAgMykgcmVwZWF0
IGZpcnN0IHR3byBzdGVwcyB0aHJlZSBvciBtb3JlIHRpbWVzOworICAgICAgICA0KSBzZWxlY3Qg
dGhlIGxhc3Qgc25hcHNob3QgYW5kIHNlbGVjdCB0aGUgZmlsdGVyICdPYmplY3RzIGFsbG9jYXRl
ZCBiZXR3ZWVuIFNuYXBzaG90IDEgYW5kIFNuYXBzaG90MicgaW5zdGVhZCBvZiAnQWxsIG9iamVj
dHMnLgorICAgICAgICBUaGUgdmlldyBzaG93cyB0aGUgb2JqZWN0IHRoYXQgd2VyZSBhbGxvY2F0
ZWQgYmV0d2VlbiBzbmFwc2hvdCBOLTIgYW5kIHNuYXBzaG90IE4tMSBhbmQgc3RpbGwgYWxpdmUg
aW4gc25hcHNob3QgTgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUuX2NyZWF0ZU5v
ZGVzUHJvdmlkZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFw
c2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0
b3JzRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVj
dG9yc0RhdGFHcmlkLnByb3RvdHlwZS5zZXREYXRhU291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5cGUucG9wdWxhdGVD
aGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3Jz
RGF0YUdyaWQucHJvdG90eXBlLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQuZmlyc3RTbmFwc2hv
dExvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3Jz
RGF0YUdyaWQucHJvdG90eXBlLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQuc2Vjb25kU25hcHNo
b3RMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9y
c0RhdGFHcmlkLnByb3RvdHlwZS5fZmlsdGVyU2VsZWN0SW5kZXhDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLl9iYXNlUHJv
ZmlsZUluZGV4Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlm
ZkRhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX2NoYW5nZUJh
c2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlw
ZS5fY2hhbmdlRmlsdGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90
Vmlldy5wcm90b3R5cGUuX2xvYWRQcm9maWxlQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUZpbHRl
ck9wdGlvbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZGlzcG9zZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgbWF4Tm9k
ZUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmFnZ3Jl
Z2F0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1
aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fc29ydEFnZ3JlZ2F0ZUluZGV4ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlTm9kZXNQcm92aWRlckZvckNsYXNzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLnVwZGF0ZVN0YXRpY0RhdGEpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuYWdncmVnYXRlcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmNyZWF0ZU5vZGVzUHJvdmlk
ZXJGb3JDbGFzcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJv
dG90eXBlLmdldCBtYXhOb2RlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFByb3h5LnByb3RvdHlwZS5zdGFydExvYWRpbmcpOgorCiAyMDExLTEwLTE5ICBUb21hc3ogTW9y
YXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRk
ZWQgbWlzc2luZyBmaWxlcyB0byBidWlsZCBXZWJLaXQyIEVGTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNv
cmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDdlMjI1ZGI1MTIyY2Zm
NTFlY2M2NzRkNzg2ZmQwN2VmZTIwYmJjODguLjBhYmUxODc5ODdjMTA1ZjgwMTI2MDcyNzM3ZDM4
MTNlNjUwNmEwZWIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjgzCnpjbVpxYlg0JXJ1
KHkpY0dpRk5ZN09qVEEjaDgle1IkcmRrVXB7JXFRKXtgc3FgSUhxSDU8eE55YDMlV0dSdFpCWQp6
TGtmY2VMbFRmcTFCdypeWEAkdmVXPWw/MWVraTZ8NDNyXjh3SWolNlNLTWsjN3xNYT5yWlZJSyU/
ayNTaTN8a3sKZSNTOXJoYCR+VyFzJGRyKzA+eXpZZiFYYmomdS1HcGxLfXVFcUMrbkwKCmRlbHRh
IDExClNjbWRuZSYoaFMqKHkpY0dpNF8xRihnWU8lCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVz
LmpzCmluZGV4IDI3OWFiNjEyMzY5ZDYwYzFiZjUzYTc2OGIxZjUzYzVkMjdmNmE3N2EuLmI5ZWM2
NWJkY2VjZTk0ZGNmMDMxZTBmZThjMmQyMGMwNWYxZjFhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RH
cmlkTm9kZXMuanMKQEAgLTQ5MywxNCArNDkzLDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RJbnN0YW5jZU5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
SW5zdGFuY2VOb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Q29uc3RydWN0b3JOb2RlID0gZnVuY3Rpb24odHJlZSwgY2xhc3NOYW1lLCBhZ2dyZWdhdGUp
CitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlID0gZnVuY3Rpb24odHJl
ZSwgY2xhc3NOYW1lLCBhZ2dyZWdhdGUsIGFnZ3JlZ2F0ZXNLZXkpCiB7CiAgICAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLmNhbGwodGhpcywgdHJlZSwgYWdncmVnYXRlLmNvdW50
ID4gMCk7CiAgICAgdGhpcy5fbmFtZSA9IGNsYXNzTmFtZTsKICAgICB0aGlzLl9jb3VudCA9IGFn
Z3JlZ2F0ZS5jb3VudDsKICAgICB0aGlzLl9zaGFsbG93U2l6ZSA9IGFnZ3JlZ2F0ZS5zZWxmOwog
ICAgIHRoaXMuX3JldGFpbmVkU2l6ZSA9IGFnZ3JlZ2F0ZS5tYXhSZXQ7Ci0gICAgdGhpcy5fcHJv
dmlkZXIgPSB0aGlzLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyKHRyZWUuc25hcHNob3QsIGNsYXNzTmFt
ZSk7CisgICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyKHRyZWUu
c25hcHNob3QsIGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSk7CiB9CiAKIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBlID0gewpAQCAtNTA5LDkgKzUwOSw5
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5v
ZGUodGhpcy5kYXRhR3JpZCwgbnVsbCwgdGhpcy5kYXRhR3JpZC5zbmFwc2hvdCwgaXRlbSk7CiAg
ICAgfSwKIAotICAgIF9jcmVhdGVOb2Rlc1Byb3ZpZGVyOiBmdW5jdGlvbihzbmFwc2hvdCwgY2xh
c3NOYW1lKQorICAgIF9jcmVhdGVOb2Rlc1Byb3ZpZGVyOiBmdW5jdGlvbihzbmFwc2hvdCwgY2xh
c3NOYW1lLCBhZ2dyZWdhdGVzS2V5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90LmNy
ZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzcyhjbGFzc05hbWUpOworICAgICAgICByZXR1cm4gc25h
cHNob3QuY3JlYXRlTm9kZXNQcm92aWRlckZvckNsYXNzKGNsYXNzTmFtZSwgYWdncmVnYXRlc0tl
eSk7CiAgICAgfSwKIAogICAgIGNvbXBhcmF0b3I6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3
LmpzCmluZGV4IDY4NjczMGM2NDlkMjMwMmFlNDhkNjA3MmFmYzY3YzE1YjhiZDkzNzUuLjk4NTgz
YmVjOGYyZWY4MjM0ZWY5MzAyNDUwZWM3ZTY5Y2U3YTY1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5q
cwpAQCAtMTg5LDYgKzE4OSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rv
cnNEYXRhR3JpZCA9IGZ1bmN0aW9uKCkKICAgICAgICAgcmV0YWluZWRTaXplOiB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUiKSwgd2lkdGg6ICI5MHB4Iiwgc29y
dDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9CiAgICAgfTsKICAgICBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOworICAg
IHRoaXMuX2ZpbHRlclByb2ZpbGVJbmRleCA9IC0xOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJvdG90eXBlID0gewpAQCAtMjA4LDE5ICsyMDks
NjQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3
OwogICAgICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7Ci0gICAgICAgIHRoaXMucG9wdWxh
dGVDaGlsZHJlbigpOworICAgICAgICBpZiAodGhpcy5fZmlsdGVyUHJvZmlsZUluZGV4ID09PSAt
MSkKKyAgICAgICAgICAgIHRoaXMucG9wdWxhdGVDaGlsZHJlbigpOwogICAgIH0sCiAKICAgICBw
b3B1bGF0ZUNoaWxkcmVuOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBhZ2dy
ZWdhdGVzUmVjZWl2ZWQoYWdncmVnYXRlcykKKyAgICAgICAgZnVuY3Rpb24gYWdncmVnYXRlc1Jl
Y2VpdmVkKGtleSwgYWdncmVnYXRlcykKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh2YXIg
Y29uc3RydWN0b3IgaW4gYWdncmVnYXRlcykKLSAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlKHRoaXMsIGNv
bnN0cnVjdG9yLCBhZ2dyZWdhdGVzW2NvbnN0cnVjdG9yXSkpOworICAgICAgICAgICAgICAgIHRo
aXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5v
ZGUodGhpcywgY29uc3RydWN0b3IsIGFnZ3JlZ2F0ZXNbY29uc3RydWN0b3JdLCBrZXkpKTsKICAg
ICAgICAgICAgIHRoaXMuc29ydGluZ0NoYW5nZWQoKTsKICAgICAgICAgfQotICAgICAgICB0aGlz
LnNuYXBzaG90LmFnZ3JlZ2F0ZXMoZmFsc2UsIGFnZ3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMp
KTsKLSAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2ZpbHRlclByb2ZpbGVJbmRleCA9PT0gLTEp
IHsKKyAgICAgICAgICAgIHRoaXMuc25hcHNob3QuYWdncmVnYXRlcyhmYWxzZSwgImFsbE9iamVj
dHMiLCBudWxsLCBhZ2dyZWdhdGVzUmVjZWl2ZWQuYmluZCh0aGlzLCAiYWxsT2JqZWN0cyIpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZGlzcG9zZSgp
OworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMucmVzZXRTb3J0
aW5nQ2FjaGUoKTsKKworICAgICAgICB2YXIga2V5ID0gdGhpcy5fbWluTm9kZUlkICsgIi4uIiAr
IHRoaXMuX21heE5vZGVJZDsKKyAgICAgICAgdmFyIGZpbHRlciA9ICJmdW5jdGlvbihub2RlKSB7
IHZhciBpZCA9IG5vZGUuaWQ7IHJldHVybiBpZCA+ICIgKyB0aGlzLl9taW5Ob2RlSWQgKyAiICYm
IGlkIDw9ICIgKyB0aGlzLl9tYXhOb2RlSWQgKyAiOyB9IjsKKyAgICAgICAgdGhpcy5zbmFwc2hv
dC5hZ2dyZWdhdGVzKGZhbHNlLCBrZXksIGZpbHRlciwgYWdncmVnYXRlc1JlY2VpdmVkLmJpbmQo
dGhpcywga2V5KSk7CisgICAgfSwKKworICAgIF9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQ6IGZ1
bmN0aW9uKGxvYWRlciwgcHJvZmlsZUluZGV4KQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlsdGVy
UHJvZmlsZUluZGV4ID0gcHJvZmlsZUluZGV4OworCisgICAgICAgIGRlbGV0ZSB0aGlzLl9tYXhO
b2RlSWQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9taW5Ob2RlSWQ7CisKKyAgICAgICAgaWYgKHRo
aXMuX2ZpbHRlclByb2ZpbGVJbmRleCA9PT0gLTEpIHsKKyAgICAgICAgICAgIHRoaXMucG9wdWxh
dGVDaGlsZHJlbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gZmlyc3RTbmFwc2hvdExvYWRlZChzbmFwc2hvdCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGhpcy5fbWF4Tm9kZUlkID0gc25hcHNob3QubWF4Tm9kZUlkOworICAgICAgICAgICAg
aWYgKHByb2ZpbGVJbmRleCA+IDApCisgICAgICAgICAgICAgICAgbG9hZGVyKHByb2ZpbGVJbmRl
eCAtIDEsIHNlY29uZFNuYXBzaG90TG9hZGVkLmJpbmQodGhpcykpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluTm9kZUlkID0gMDsKKyAgICAgICAgICAgICAg
ICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNlY29uZFNuYXBzaG90TG9hZGVkKHNuYXBzaG90KQorICAgICAgICB7
CisgICAgICAgICAgICB0aGlzLl9taW5Ob2RlSWQgPSBzbmFwc2hvdC5tYXhOb2RlSWQ7CisgICAg
ICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIGxv
YWRlcihwcm9maWxlSW5kZXgsIGZpcnN0U25hcHNob3RMb2FkZWQuYmluZCh0aGlzKSk7CisgICAg
fSwKIH07CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0
YUdyaWQucHJvdG90eXBlOwpAQCAtMjYyLDYgKzMwOCwxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zbmFwc2hvdCA9
IHNuYXBzaG90OwogICAgIH0sCiAKKyAgICBfYmFzZVByb2ZpbGVJbmRleENoYW5nZWQ6IGZ1bmN0
aW9uKGxvYWRlciwgcHJvZmlsZUluZGV4KQorICAgIHsKKyAgICAgICAgbG9hZGVyKHByb2ZpbGVJ
bmRleCwgdGhpcy5zZXRCYXNlRGF0YVNvdXJjZS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAg
c2V0QmFzZURhdGFTb3VyY2U6IGZ1bmN0aW9uKGJhc2VTbmFwc2hvdCkKICAgICB7CiAgICAgICAg
IHRoaXMuYmFzZVNuYXBzaG90ID0gYmFzZVNuYXBzaG90OwpAQCAtMzAyLDkgKzM1Myw5IEBAIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgICAgICBub2RlLmNhbGN1bGF0ZURpZmYodGhpcywgYWRkTm9kZUlmTm9uWmVyb0Rp
ZmYuYmluZCh0aGlzLCBub2RlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5hZ2dyZWdhdGVzKHRydWUsIGFnZ3JlZ2F0ZXNSZWNl
aXZlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuc25hcHNob3QuYWdncmVnYXRlcyh0
cnVlLCAiYWxsT2JqZWN0cyIsIG51bGwsIGFnZ3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMpKTsK
ICAgICAgICAgfQotICAgICAgICB0aGlzLmJhc2VTbmFwc2hvdC5hZ2dyZWdhdGVzKHRydWUsIGJh
c2VBZ2dyZWdhdGVzUmVjZWl2ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuYmFzZVNuYXBz
aG90LmFnZ3JlZ2F0ZXModHJ1ZSwgImFsbE9iamVjdHMiLCBudWxsLCBiYXNlQWdncmVnYXRlc1Jl
Y2VpdmVkLmJpbmQodGhpcykpOwogICAgIH0KIH07CiAKQEAgLTUxOSw2ICs1NzAsNyBAQCBXZWJJ
bnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUp
CiAKICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKICAgICB0aGlzLnBhcmVudC5hZGRFdmVudExp
c3RlbmVyKCJwcm9maWxlIGFkZGVkIiwgdGhpcy5fdXBkYXRlQmFzZU9wdGlvbnMsIHRoaXMpOwor
ICAgIHRoaXMucGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoInByb2ZpbGUgYWRkZWQiLCB0aGlzLl91
cGRhdGVGaWx0ZXJPcHRpb25zLCB0aGlzKTsKIAogICAgIHRoaXMuc2hvd0NvdW50QXNQZXJjZW50
ID0gZmFsc2U7CiAgICAgdGhpcy5zaG93U2hhbGxvd1NpemVBc1BlcmNlbnQgPSBmYWxzZTsKQEAg
LTYxNiw2ICs2NjgsMTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3ID0gZnVu
Y3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlQmFzZS5iaW5kKHRoaXMpLCBmYWxzZSk7
CiAgICAgdGhpcy5fdXBkYXRlQmFzZU9wdGlvbnMoKTsKIAorICAgIHRoaXMuZmlsdGVyU2VsZWN0
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOworICAgIHRoaXMuZmls
dGVyU2VsZWN0RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKKyAgICB0aGlz
LmZpbHRlclNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hh
bmdlRmlsdGVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl91cGRhdGVGaWx0ZXJPcHRp
b25zKCk7CisKICAgICB0aGlzLnBlcmNlbnRCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1
c0JhckJ1dHRvbigiIiwgInBlcmNlbnQtdGltZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1p
dGVtIik7CiAgICAgdGhpcy5wZXJjZW50QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fcGVyY2VudENsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuaGVscEJ1
dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAiaGVhcHNob3QtaGVs
cC1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIik7CkBAIC02MjksMTEgKzY4NiwxMyBA
QCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHBy
b2ZpbGUpCiAgICAgewogICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX3Byb2ZpbGVzKCk7CiAgICAg
ICAgIHZhciBwcm9maWxlSW5kZXg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5s
ZW5ndGg7ICsraSkKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytp
KSB7CiAgICAgICAgICAgICBpZiAobGlzdFtpXS51aWQgPT09IHRoaXMuX3Byb2ZpbGVVaWQpIHsK
ICAgICAgICAgICAgICAgICBwcm9maWxlSW5kZXggPSBpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHByb2ZpbGVJbmRleCA+
IDApCiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBw
cm9maWxlSW5kZXggLSAxOwogICAgICAgICBlbHNlCkBAIC02NTgsNyArNzE3LDcgQEAgV2ViSW5z
cGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBzdGF0
dXNCYXJJdGVtcygpCiAgICAgewotICAgICAgICByZXR1cm4gW3RoaXMudmlld1NlbGVjdEVsZW1l
bnQsIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQsIHRoaXMucGVyY2VudEJ1dHRvbi5lbGVtZW50LCB0
aGlzLmhlbHBCdXR0b24uZWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy52aWV3U2VsZWN0
RWxlbWVudCwgdGhpcy5iYXNlU2VsZWN0RWxlbWVudCwgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50
LCB0aGlzLnBlcmNlbnRCdXR0b24uZWxlbWVudCwgdGhpcy5oZWxwQnV0dG9uLmVsZW1lbnRdOwog
ICAgIH0sCiAKICAgICBnZXQgcHJvZmlsZSgpCkBAIC04NjUsMTQgKzkyNCwyMiBAQCBXZWJJbnNw
ZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhpcy5fcHJvZmlsZXMoKVt0
aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsKLSAgICAgICAgdGhpcy5f
bG9hZFByb2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQsIGJhc2VQcm9maWxlTG9hZGVkLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLmRhdGFHcmlkLl9iYXNlUHJvZmlsZUluZGV4Q2hhbmdlZCh0
aGlzLl9sb2FkUHJvZmlsZUJ5SW5kZXguYmluZCh0aGlzKSwgdGhpcy5iYXNlU2VsZWN0RWxlbWVu
dC5zZWxlY3RlZEluZGV4KTsKIAotICAgICAgICBmdW5jdGlvbiBiYXNlUHJvZmlsZUxvYWRlZCgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9iYXNlUHJvZmlsZVdyYXBwZXI7
Ci0gICAgICAgICAgICB0aGlzLmJhc2VQcm9maWxlLl9sYXN0U2hvd24gPSBEYXRlLm5vdygpOwot
ICAgICAgICAgICAgdGhpcy5kaWZmRGF0YUdyaWQuc2V0QmFzZURhdGFTb3VyY2UodGhpcy5iYXNl
UHJvZmlsZVdyYXBwZXIpOwotICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVl
cnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3Vs
dHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQgc2VhcmNo
IG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBhZ2Fpbi4gRmlyc3QgbmVnYXRlIG91dCBwcmV2aW91cyBt
YXRjaAorICAgICAgICAvLyBjb3VudCBieSBjYWxsaW5nIHRoZSBzZWFyY2ggZmluaXNoZWQgY2Fs
bGJhY2sgd2l0aCBhIG5lZ2F0aXZlIG51bWJlciBvZiBtYXRjaGVzLgorICAgICAgICAvLyBUaGVu
IHBlcmZvcm0gdGhlIHNlYXJjaCBhZ2FpbiB3aXRoIHRoZSBzYW1lIHF1ZXJ5IGFuZCBjYWxsYmFj
ay4KKyAgICAgICAgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayh0aGlzLCAtdGhpcy5fc2Vh
cmNoUmVzdWx0cy5sZW5ndGgpOworICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5jdXJy
ZW50UXVlcnksIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2spOworICAgIH0sCisKKyAgICBf
Y2hhbmdlRmlsdGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcHJvZmlsZUluZGV4
ID0gdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggLSAxOworICAgICAgICB0
aGlzLmRhdGFHcmlkLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQodGhpcy5fbG9hZFByb2ZpbGVC
eUluZGV4LmJpbmQodGhpcyksIHByb2ZpbGVJbmRleCk7CiAKICAgICAgICAgaWYgKCF0aGlzLmN1
cnJlbnRRdWVyeSB8fCAhdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2Vh
cmNoUmVzdWx0cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg5NCw2ICs5NjEsMTIgQEAgV2Vi
SW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5sb2FkSGVhcFNuYXBzaG90KHByb2ZpbGVVaWQsIGNh
bGxiYWNrKTsKICAgICB9LAogCisgICAgX2xvYWRQcm9maWxlQnlJbmRleDogZnVuY3Rpb24ocHJv
ZmlsZUluZGV4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBwcm9maWxlVWlkID0gdGhp
cy5fcHJvZmlsZXMoKVtwcm9maWxlSW5kZXhdLnVpZDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5wcm9maWxlcy5sb2FkSGVhcFNuYXBzaG90KHByb2ZpbGVVaWQsIGNhbGxiYWNrKTsKKyAg
ICB9LAorCiAgICAgaXNEZXRhaWxlZFNuYXBzaG90OiBmdW5jdGlvbihzbmFwc2hvdCkKICAgICB7
CiAgICAgICAgIHZhciBzID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qoc25hcHNob3Qp
OwpAQCAtMTAwMywxMSArMTA3NiwxMiBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmN1cnJlbnRWaWV3LnNob3coKTsKICAgICAg
ICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRh
dGVXaWR0aHMoKTsKKwogICAgICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5kaWZm
VmlldykgewogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZC5zbmFwc2hvdFZp
ZXcpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywg
dGhpcy5wcm9maWxlV3JhcHBlcik7CiAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlQmFzZSgp
OworICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlz
LnByb2ZpbGVXcmFwcGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CkBA
IC0xMDE1LDYgKzEwODksMTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2Uo
dGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhp
cy5jdXJyZW50VmlldyA9PT0gdGhpcy5jb25zdHJ1Y3RvcnNWaWV3KQorICAgICAgICAgICAgdGhp
cy5maWx0ZXJTZWxlY3RFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiaGlkZGVuIik7CisKICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVyeSB8fCAhdGhpcy5f
c2VhcmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cykKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTE4NCw2ICsxMjYzLDMzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxl
ZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgX3Vw
ZGF0ZUZpbHRlck9wdGlvbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBsaXN0ID0g
dGhpcy5fcHJvZmlsZXMoKTsKKyAgICAgICAgLy8gV2UncmUgYXNzdW1pbmcgdGhhdCBzbmFwc2hv
dHMgY2FuIG9ubHkgYmUgYWRkZWQuCisgICAgICAgIGlmICh0aGlzLmZpbHRlclNlbGVjdEVsZW1l
bnQubGVuZ3RoIC0gMSA9PT0gbGlzdC5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKCF0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQubGVuZ3RoKSB7CisgICAgICAgICAg
ICB2YXIgZmlsdGVyT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Cisg
ICAgICAgICAgICBmaWx0ZXJPcHRpb24ubGFiZWwgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFs
bCBvYmplY3RzIik7CisgICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZmlsdGVyT3B0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSB0
aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQubGVuZ3RoIC0gMSwgbiA9IGxpc3QubGVuZ3RoOyBpIDwg
bjsgKytpKSB7CisgICAgICAgICAgICB2YXIgZmlsdGVyT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLnRpdGxl
OworICAgICAgICAgICAgaWYgKCF0aXRsZS5pbmRleE9mKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICAgICAgICAgIHRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPYmplY3RzIGFsbG9jYXRlZCBiZWZvcmUgU25hcHNo
b3QgJWQiLCB0aXRsZS5zdWJzdHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLmxlbmd0aCAr
IDEpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPYmplY3RzIGFsbG9jYXRlZCBiZXR3ZWVuIFNuYXBzaG90
ICVkIGFuZCBTbmFwc2hvdCAlZCIsIHRpdGxlLnN1YnN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmls
ZU5hbWUubGVuZ3RoICsgMSkgLSAxLCB0aXRsZS5zdWJzdHJpbmcoVXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lLmxlbmd0aCArIDEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbHRlck9w
dGlvbi5sYWJlbCA9IHRpdGxlOworICAgICAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50
LmFwcGVuZENoaWxkKGZpbHRlck9wdGlvbik7CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgX3Vw
ZGF0ZVBlcmNlbnRCdXR0b246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9p
c1Nob3dpbmdBc1BlcmNlbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggMzNmOTE5MTEwMGRlNTVhNjkzYTM2ODUyMDFh
MTc3OTAxOTc5ZjZhMC4uZWIxNTdmNWVkNDgwYmIzZmM4ODU0MGQ0Y2Q2ZjUzODZhMGRmZDYyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3QuanMKQEAgLTcxOCw2ICs3MTgsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2RvbWluYXRlZE5vZGVzOwogICAgICAgICBk
ZWxldGUgdGhpcy5fZG9taW5hdGVkSW5kZXg7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9mbGFnczsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbHRlcmVkQWdncmVnYXRlczsKICAgICB9LAogCiAgICAg
Z2V0IF9hbGxOb2RlcygpCkBAIC03NTIsNiArNzUzLDE5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlKHRoaXMsIHRoaXMuX3Jvb3ROb2RlSW5kZXgpOwogICAgIH0sCiAKKyAgICBn
ZXQgbWF4Tm9kZUlkKCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fbWF4Tm9kZUlk
ID09PSAibnVtYmVyIikKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXhOb2RlSWQ7CisgICAg
ICAgIHRoaXMuX21heE5vZGVJZCA9IDA7CisgICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLl9h
bGxOb2RlczsgaXRlci5oYXNOZXh0KCk7IGl0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICB2YXIg
aWQgPSBpdGVyLm5vZGUuaWQ7CisgICAgICAgICAgICBpZiAoKGlkICUgMikgJiYgaWQgPiB0aGlz
Ll9tYXhOb2RlSWQpCisgICAgICAgICAgICAgICAgdGhpcy5fbWF4Tm9kZUlkID0gaWQ7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX21heE5vZGVJZDsKKyAgICB9LAorCiAgICAgZ2V0
IHJvb3ROb2RlSW5kZXgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3ROb2RlSW5k
ZXg7CkBAIC03ODksMTMgKzgwMywzNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZsYWdzW25vZGUubm9kZUluZGV4XTsKICAg
ICB9LAogCi0gICAgYWdncmVnYXRlczogZnVuY3Rpb24oc29ydGVkSW5kZXhlcykKKyAgICBhZ2dy
ZWdhdGVzOiBmdW5jdGlvbihzb3J0ZWRJbmRleGVzLCBrZXksIGZpbHRlclN0cmluZykKICAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fYWdncmVnYXRlcykKLSAgICAgICAgICAgIHRoaXMuX2J1aWxk
QWdncmVnYXRlcygpOwotICAgICAgICBpZiAoc29ydGVkSW5kZXhlcyAmJiAhdGhpcy5fYWdncmVn
YXRlc0luZGV4ZXNTb3J0ZWQpCi0gICAgICAgICAgICB0aGlzLl9zb3J0QWdncmVnYXRlSW5kZXhl
cygpOwotICAgICAgICByZXR1cm4gdGhpcy5fYWdncmVnYXRlczsKKyAgICAgICAgaWYgKCF0aGlz
Ll9hZ2dyZWdhdGVzKSB7CisgICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzID0ge307CisgICAg
ICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzU29ydGVkRmxhZ3MgPSB7fTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBhZ2dyZWdhdGVzID0gdGhpcy5fYWdncmVnYXRlc1trZXldOworICAgICAgICBp
ZiAoYWdncmVnYXRlcykgeworICAgICAgICAgICAgaWYgKHNvcnRlZEluZGV4ZXMgJiYgIXRoaXMu
X2FnZ3JlZ2F0ZXNTb3J0ZWRGbGFnc1trZXldKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc29y
dEFnZ3JlZ2F0ZUluZGV4ZXMoYWdncmVnYXRlcyk7CisgICAgICAgICAgICAgICAgdGhpcy5fYWdn
cmVnYXRlc1NvcnRlZEZsYWdzW2tleV0gPSBzb3J0ZWRJbmRleGVzOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZXM7CisgICAgICAgIH0KKworICAgICAgICB2YXIg
ZmlsdGVyOworICAgICAgICBpZiAoZmlsdGVyU3RyaW5nKQorICAgICAgICAgICAgZmlsdGVyID0g
dGhpcy5fcGFyc2VGaWx0ZXIoZmlsdGVyU3RyaW5nKTsKKworICAgICAgICBhZ2dyZWdhdGVzID0g
dGhpcy5fYnVpbGRBZ2dyZWdhdGVzKGZpbHRlcik7CisKKyAgICAgICAgaWYgKHNvcnRlZEluZGV4
ZXMpCisgICAgICAgICAgICB0aGlzLl9zb3J0QWdncmVnYXRlSW5kZXhlcyhhZ2dyZWdhdGVzKTsK
KworICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzU29ydGVkRmxhZ3Nba2V5XSA9IHNvcnRlZEluZGV4
ZXM7CisgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNba2V5XSA9IGFnZ3JlZ2F0ZXM7CisKKyAgICAg
ICAgcmV0dXJuIGFnZ3JlZ2F0ZXM7CiAgICAgfSwKIAogICAgIF9idWlsZFJldmVyc2VJbmRleDog
ZnVuY3Rpb24oaW5kZXhBcnJheU5hbWUsIGJhY2tSZWZzQXJyYXlOYW1lLCBpbmRleENhbGxiYWNr
LCBkYXRhQ2FsbGJhY2spCkBAIC04NTMsMTggKzg4OSwyMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpKTsKICAgICB9
LAogCi0gICAgX2J1aWxkQWdncmVnYXRlczogZnVuY3Rpb24oKQorICAgIF9idWlsZEFnZ3JlZ2F0
ZXM6IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7Ci0gICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXMgPSB7
fTsKKyAgICAgICAgdmFyIGFnZ3JlZ2F0ZXMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaXRlciA9
IHRoaXMuX2FsbE5vZGVzOyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsKICAgICAgICAg
ICAgIHZhciBub2RlID0gaXRlci5ub2RlOworICAgICAgICAgICAgaWYgKGZpbHRlciAmJiAhZmls
dGVyKG5vZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG5v
ZGUudHlwZSAhPT0gIm5hdGl2ZSIgJiYgbm9kZS5zZWxmU2l6ZSA9PT0gMCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHZhciBuYW1lTWF0dGVycyA9IG5vZGUudHlwZSA9
PT0gIm9iamVjdCIgfHwgbm9kZS50eXBlID09PSAibmF0aXZlIjsKICAgICAgICAgICAgIHZhciBj
bGFzc05hbWUgPSBub2RlLmNsYXNzTmFtZTsKLSAgICAgICAgICAgIGlmICghdGhpcy5fYWdncmVn
YXRlcy5oYXNPd25Qcm9wZXJ0eShjbGFzc05hbWUpKQotICAgICAgICAgICAgICAgIHRoaXMuX2Fn
Z3JlZ2F0ZXNbY2xhc3NOYW1lXSA9IHsgY291bnQ6IDAsIHNlbGY6IDAsIG1heFJldDogMCwgdHlw
ZTogbm9kZS50eXBlLCBuYW1lOiBuYW1lTWF0dGVycyA/IG5vZGUubmFtZSA6IG51bGwsIGlkeHM6
IFtdIH07Ci0gICAgICAgICAgICB2YXIgY2xzcyA9IHRoaXMuX2FnZ3JlZ2F0ZXNbY2xhc3NOYW1l
XTsKKyAgICAgICAgICAgIGlmICghYWdncmVnYXRlcy5oYXNPd25Qcm9wZXJ0eShjbGFzc05hbWUp
KQorICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZXNbY2xhc3NOYW1lXSA9IHsgY291bnQ6IDAsIHNl
bGY6IDAsIG1heFJldDogMCwgdHlwZTogbm9kZS50eXBlLCBuYW1lOiBuYW1lTWF0dGVycyA/IG5v
ZGUubmFtZSA6IG51bGwsIGlkeHM6IFtdIH07CisgICAgICAgICAgICB2YXIgY2xzcyA9IGFnZ3Jl
Z2F0ZXNbY2xhc3NOYW1lXTsKICAgICAgICAgICAgICsrY2xzcy5jb3VudDsKICAgICAgICAgICAg
IGNsc3Muc2VsZiArPSBub2RlLnNlbGZTaXplOwogICAgICAgICAgICAgaWYgKG5vZGUucmV0YWlu
ZWRTaXplID4gY2xzcy5tYXhSZXQpCkBAIC04NzIsMjMgKzkxMCwyMiBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNsc3MuaWR4cy5wdXNoKG5v
ZGUubm9kZUluZGV4KTsKICAgICAgICAgfQogICAgICAgICAvLyBTaGF2ZSBvZmYgcHJvdmlzaW9u
YWxseSBhbGxvY2F0ZWQgc3BhY2UuCi0gICAgICAgIGZvciAodmFyIGNsYXNzTmFtZSBpbiB0aGlz
Ll9hZ2dyZWdhdGVzKQotICAgICAgICAgICAgdGhpcy5fYWdncmVnYXRlc1tjbGFzc05hbWVdLmlk
eHMgPSB0aGlzLl9hZ2dyZWdhdGVzW2NsYXNzTmFtZV0uaWR4cy5zbGljZSgwKTsKKyAgICAgICAg
Zm9yICh2YXIgY2xhc3NOYW1lIGluIGFnZ3JlZ2F0ZXMpCisgICAgICAgICAgICBhZ2dyZWdhdGVz
W2NsYXNzTmFtZV0uaWR4cyA9IGFnZ3JlZ2F0ZXNbY2xhc3NOYW1lXS5pZHhzLnNsaWNlKDApOwor
ICAgICAgICByZXR1cm4gYWdncmVnYXRlczsKICAgICB9LAogCi0gICAgX3NvcnRBZ2dyZWdhdGVJ
bmRleGVzOiBmdW5jdGlvbigpCisgICAgX3NvcnRBZ2dyZWdhdGVJbmRleGVzOiBmdW5jdGlvbihh
Z2dyZWdhdGVzKQogICAgIHsKICAgICAgICAgdmFyIG5vZGVBID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlKHRoaXMpOwogICAgICAgICB2YXIgbm9kZUIgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcyk7Ci0gICAgICAgIGZvciAodmFyIGNsc3MgaW4gdGhp
cy5fYWdncmVnYXRlcykKLSAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNbY2xzc10uaWR4cy5z
b3J0KAorICAgICAgICBmb3IgKHZhciBjbHNzIGluIGFnZ3JlZ2F0ZXMpCisgICAgICAgICAgICBh
Z2dyZWdhdGVzW2Nsc3NdLmlkeHMuc29ydCgKICAgICAgICAgICAgICAgICBmdW5jdGlvbihpZHhB
LCBpZHhCKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGVBLm5vZGVJbmRleCA9IGlkeEE7CiAg
ICAgICAgICAgICAgICAgICAgIG5vZGVCLm5vZGVJbmRleCA9IGlkeEI7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlQS5pZCA8IG5vZGVCLmlkID8gLTEgOiAxOwogICAgICAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNJbmRleGVzU29ydGVkID0gdHJ1ZTsK
ICAgICB9LAogCiAgICAgX2J1aWxkTm9kZUluZGV4OiBmdW5jdGlvbigpCkBAIC0xMDQ4LDkgKzEw
ODUsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlcih0aGlzLCB0
aGlzLl9wYXJzZUZpbHRlcihmaWx0ZXIpKTsKICAgICB9LAogCi0gICAgY3JlYXRlTm9kZXNQcm92
aWRlckZvckNsYXNzOiBmdW5jdGlvbihjbGFzc05hbWUpCisgICAgY3JlYXRlTm9kZXNQcm92aWRl
ckZvckNsYXNzOiBmdW5jdGlvbihjbGFzc05hbWUsIGFnZ3JlZ2F0ZXNLZXkpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHRo
aXMsIG51bGwsIHRoaXMuYWdncmVnYXRlcyhmYWxzZSlbY2xhc3NOYW1lXS5pZHhzKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlcih0aGlz
LCBudWxsLCB0aGlzLmFnZ3JlZ2F0ZXMoYWdncmVnYXRlc0tleSlbY2xhc3NOYW1lXS5pZHhzKTsK
ICAgICB9LAogCiAgICAgY3JlYXRlTm9kZXNQcm92aWRlckZvckRvbWluYXRvcjogZnVuY3Rpb24o
bm9kZUluZGV4LCBmaWx0ZXIpCkBAIC0xMDY2LDcgKzExMDMsNyBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAgIHVwZGF0ZVN0YXRpY0RhdGE6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB7bm9kZUNvdW50OiB0aGlzLm5vZGVDb3VudCwgcm9v
dE5vZGVJbmRleDogdGhpcy5fcm9vdE5vZGVJbmRleCwgdG90YWxTaXplOiB0aGlzLnRvdGFsU2l6
ZSwgdWlkOiB0aGlzLnVpZCwgbm9kZUZsYWdzOiB0aGlzLl9ub2RlRmxhZ3N9OworICAgICAgICBy
ZXR1cm4ge25vZGVDb3VudDogdGhpcy5ub2RlQ291bnQsIHJvb3ROb2RlSW5kZXg6IHRoaXMuX3Jv
b3ROb2RlSW5kZXgsIHRvdGFsU2l6ZTogdGhpcy50b3RhbFNpemUsIHVpZDogdGhpcy51aWQsIG5v
ZGVGbGFnczogdGhpcy5fbm9kZUZsYWdzLCBtYXhOb2RlSWQ6IHRoaXMubWF4Tm9kZUlkfTsKICAg
ICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdFByb3h5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3RQcm94eS5qcwppbmRleCA3ZjU3ZDM1MzFlMmRjMmU1MDcwYWM2NGI0NDE2
MWE3OWNhZTc5YzhiLi40ODQyOWFkMDMwMDMyNDE2MWJkOThjMzg1ODA1NGNjNjAxMGY1ZWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dFByb3h5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90UHJveHkuanMKQEAgLTkzLDcgKzkzLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFdvcmtlciA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9jYWxsYmFja3MgPSBbXTsKICAgICB0aGlz
Ll9wcmV2aW91c0NhbGxiYWNrcyA9IFtdOwogICAgIC8vIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9y
IHdvcmtlcnMgaW4gQ2hyb21pdW0gRFJULgotICAgIHRoaXMuX3dvcmtlciA9IHR5cGVvZiBJbnNw
ZWN0b3JUZXN0ID09PSAidW5kZWZpbmVkIiA/IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UmVhbFdvcmtlcigpIDogbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyKCk7
CisgICAgdGhpcy5fd29ya2VyID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29y
a2VyKCk7CiAgICAgdGhpcy5fd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlz
Ll9tZXNzYWdlUmVjZWl2ZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogfQogCkBAIC0zMTAsOSArMzEw
LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5ID0gZnVuY3Rpb24od29ya2VyLCBv
YmplY3RJZCkKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9
IHsKLSAgICBhZ2dyZWdhdGVzOiBmdW5jdGlvbihzb3J0ZWRJbmRleGVzLCBjYWxsYmFjaykKKyAg
ICBhZ2dyZWdhdGVzOiBmdW5jdGlvbihzb3J0ZWRJbmRleGVzLCBrZXksIGZpbHRlciwgY2FsbGJh
Y2spCiAgICAgewotICAgICAgICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ssICJhZ2dyZWdhdGVz
Iiwgc29ydGVkSW5kZXhlcyk7CisgICAgICAgIHRoaXMuY2FsbE1ldGhvZChjYWxsYmFjaywgImFn
Z3JlZ2F0ZXMiLCBzb3J0ZWRJbmRleGVzLCBrZXksIGZpbHRlcik7CiAgICAgfSwKIAogICAgIGNy
ZWF0ZURpZmY6IGZ1bmN0aW9uKGNsYXNzTmFtZSkKQEAgLTMzMCw5ICszMzAsOSBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5jYWxsRmFjdG9yeU1ldGhvZChudWxsLCAiY3JlYXRlTm9kZXNQcm92aWRlciIsICJXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSIsIGZpbHRlcik7CiAgICAgfSwKIAotICAg
IGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xhc3NOYW1lKQorICAgIGNy
ZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xhc3NOYW1lLCBhZ2dyZWdhdGVz
S2V5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwg
ImNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzcyIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UHJvdmlkZXJQcm94eSIsIGNsYXNzTmFtZSk7CisgICAgICAgIHJldHVybiB0aGlzLmNhbGxGYWN0
b3J5TWV0aG9kKG51bGwsICJjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3MiLCAiV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkiLCBjbGFzc05hbWUsIGFnZ3JlZ2F0ZXNLZXkp
OwogICAgIH0sCiAKICAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yRG9taW5hdG9yOiBmdW5jdGlv
bihub2RlSW5kZXgsIGZpbHRlcikKQEAgLTM2MCw2ICszNjAsMTEgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICEhdGhpcy5fb2Jq
ZWN0SWQ7CiAgICAgfSwKIAorICAgIGdldCBtYXhOb2RlSWQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3N0YXRpY0RhdGEubWF4Tm9kZUlkOworICAgIH0sCisKICAgICBnZXQgbm9kZUNv
dW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0aWNEYXRhLm5vZGVDb3VudDsK
QEAgLTM5Nyw3ICs0MDIsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90
eXBlID0gewogCiAgICAgc3RhcnRMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0g
ICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOworICAgICAgICBzZXRUaW1lb3V0KGNhbGxi
YWNrLmJpbmQobnVsbCwgdGhpcyksIDApOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111593</attachid>
            <date>2011-10-19 04:50:35 -0700</date>
            <delta_ts>2011-10-19 06:27:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61178-20111019155033.patch</filename>
            <type>text/plain</type>
            <size>24563</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MjIyYzBmMzNjYzZhNTU4
ZmY3YTk5NzQ4YmExZDE1MDhhZWYxY2YwLi5mNzZkNWRlMDVlYmUzYjFmYTZmMGIwMjNkZGMxZTk5
ZDdmNDE5NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMTAtMTkgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDaHJvbWl1bV0gQWRkIGFuIGFiaWxpdHkgdG8gc2hvdyB0aGUgb2JqZWN0cyB0aGF0IHdl
cmUgYWxsb2NhdGVkIGJldHdlZW4gc25hcHNob3QgTi0yIGFuZCBzbmFwc2hvdCBOLTEgYW5kIHN0
aWxsIGFsaXZlIGluIHNuYXBzaG90IE4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTE3OAorCisgICAgICAgIFRoaXMgYWJpbGl0eSB3aWxsIGhlbHAg
dXMgdG8gc2VlIG9ubHkgdGhlIGxlYWtlZCBvYmplY3RzLgorICAgICAgICBTY2VuYXJpbzoKKyAg
ICAgICAgMSkgZG8gYW4gYWN0aW9uIG9uIGluc3BlY3RlZCBwYWdlIHdoaWNoIGxlYWtzIGphdmFz
Y3JpcHQgZGF0YTsKKyAgICAgICAgMikgbWFrZSBzbmFwc2hvdDsKKyAgICAgICAgMykgcmVwZWF0
IGZpcnN0IHR3byBzdGVwcyB0aHJlZSBvciBtb3JlIHRpbWVzOworICAgICAgICA0KSBzZWxlY3Qg
dGhlIGxhc3Qgc25hcHNob3QgYW5kIHNlbGVjdCB0aGUgZmlsdGVyICdPYmplY3RzIGFsbG9jYXRl
ZCBiZXR3ZWVuIFNuYXBzaG90IDEgYW5kIFNuYXBzaG90MicgaW5zdGVhZCBvZiAnQWxsIG9iamVj
dHMnLgorICAgICAgICBUaGUgdmlldyBzaG93cyB0aGUgb2JqZWN0IHRoYXQgd2VyZSBhbGxvY2F0
ZWQgYmV0d2VlbiBzbmFwc2hvdCBOLTIgYW5kIHNuYXBzaG90IE4tMSBhbmQgc3RpbGwgYWxpdmUg
aW4gc25hcHNob3QgTgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUuX2NyZWF0ZU5v
ZGVzUHJvdmlkZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFw
c2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0
b3JzRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVj
dG9yc0RhdGFHcmlkLnByb3RvdHlwZS5zZXREYXRhU291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5cGUucG9wdWxhdGVD
aGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3Jz
RGF0YUdyaWQucHJvdG90eXBlLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQuZmlyc3RTbmFwc2hv
dExvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3Jz
RGF0YUdyaWQucHJvdG90eXBlLl9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQuc2Vjb25kU25hcHNo
b3RMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9y
c0RhdGFHcmlkLnByb3RvdHlwZS5fZmlsdGVyU2VsZWN0SW5kZXhDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLl9iYXNlUHJv
ZmlsZUluZGV4Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlm
ZkRhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX2NoYW5nZUJh
c2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlw
ZS5fY2hhbmdlRmlsdGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90
Vmlldy5wcm90b3R5cGUuX2xvYWRQcm9maWxlQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUZpbHRl
ck9wdGlvbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZGlzcG9zZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgbWF4Tm9k
ZUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmFnZ3Jl
Z2F0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1
aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fc29ydEFnZ3JlZ2F0ZUluZGV4ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlTm9kZXNQcm92aWRlckZvckNsYXNzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLnVwZGF0ZVN0YXRpY0RhdGEpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuYWdncmVnYXRlcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmNyZWF0ZU5vZGVzUHJvdmlk
ZXJGb3JDbGFzcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJv
dG90eXBlLmdldCBtYXhOb2RlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFByb3h5LnByb3RvdHlwZS5zdGFydExvYWRpbmcpOgorCiAyMDExLTEwLTE5ICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENv
bnNvbGUgbWVzc2FnZXMgZm9yIFhIUiBsb2dnaW5nIHNob3VsZCBzaG93IGNhbGwgc3RhY2sgaWYg
YXZhaWxhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzCmluZGV4IDdlMjI1ZGI1MTIyY2ZmNTFlY2M2NzRkNzg2ZmQwN2VmZTIwYmJjODgu
LjBhYmUxODc5ODdjMTA1ZjgwMTI2MDcyNzM3ZDM4MTNlNjUwNmEwZWIgMTAwNjQ0CkdJVCBiaW5h
cnkgcGF0Y2gKZGVsdGEgMjgzCnpjbVpxYlg0JXJ1KHkpY0dpRk5ZN09qVEEjaDgle1IkcmRrVXB7
JXFRKXtgc3FgSUhxSDU8eE55YDMlV0dSdFpCWQp6TGtmY2VMbFRmcTFCdypeWEAkdmVXPWw/MWVr
aTZ8NDNyXjh3SWolNlNLTWsjN3xNYT5yWlZJSyU/ayNTaTN8a3sKZSNTOXJoYCR+VyFzJGRyKzA+
eXpZZiFYYmomdS1HcGxLfXVFcUMrbkwKCmRlbHRhIDExClNjbWRuZSYoaFMqKHkpY0dpNF8xRihn
WU8lCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRh
aWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCmluZGV4IDI3OWFiNjEyMzY5ZDYwYzFi
ZjUzYTc2OGIxZjUzYzVkMjdmNmE3N2EuLmI5ZWM2NWJkY2VjZTk0ZGNmMDMxZTBmZThjMmQyMGMw
NWYxZjFhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKQEAgLTQ5MywxNCArNDkz
LDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUucHJvdG90eXBlID0g
ewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90
eXBlOwogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlID0gZnVuY3Rp
b24odHJlZSwgY2xhc3NOYW1lLCBhZ2dyZWdhdGUpCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Q29uc3RydWN0b3JOb2RlID0gZnVuY3Rpb24odHJlZSwgY2xhc3NOYW1lLCBhZ2dyZWdhdGUsIGFn
Z3JlZ2F0ZXNLZXkpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLmNh
bGwodGhpcywgdHJlZSwgYWdncmVnYXRlLmNvdW50ID4gMCk7CiAgICAgdGhpcy5fbmFtZSA9IGNs
YXNzTmFtZTsKICAgICB0aGlzLl9jb3VudCA9IGFnZ3JlZ2F0ZS5jb3VudDsKICAgICB0aGlzLl9z
aGFsbG93U2l6ZSA9IGFnZ3JlZ2F0ZS5zZWxmOwogICAgIHRoaXMuX3JldGFpbmVkU2l6ZSA9IGFn
Z3JlZ2F0ZS5tYXhSZXQ7Ci0gICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVOb2Rlc1By
b3ZpZGVyKHRyZWUuc25hcHNob3QsIGNsYXNzTmFtZSk7CisgICAgdGhpcy5fcHJvdmlkZXIgPSB0
aGlzLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyKHRyZWUuc25hcHNob3QsIGNsYXNzTmFtZSwgYWdncmVn
YXRlc0tleSk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUu
cHJvdG90eXBlID0gewpAQCAtNTA5LDkgKzUwOSw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUodGhpcy5kYXRhR3JpZCwgbnVsbCwgdGhp
cy5kYXRhR3JpZC5zbmFwc2hvdCwgaXRlbSk7CiAgICAgfSwKIAotICAgIF9jcmVhdGVOb2Rlc1By
b3ZpZGVyOiBmdW5jdGlvbihzbmFwc2hvdCwgY2xhc3NOYW1lKQorICAgIF9jcmVhdGVOb2Rlc1By
b3ZpZGVyOiBmdW5jdGlvbihzbmFwc2hvdCwgY2xhc3NOYW1lLCBhZ2dyZWdhdGVzS2V5KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90LmNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzcyhj
bGFzc05hbWUpOworICAgICAgICByZXR1cm4gc25hcHNob3QuY3JlYXRlTm9kZXNQcm92aWRlckZv
ckNsYXNzKGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSk7CiAgICAgfSwKIAogICAgIGNvbXBhcmF0
b3I6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCmluZGV4IDY4NjczMGM2NDlkMjMwMmFl
NDhkNjA3MmFmYzY3YzE1YjhiZDkzNzUuLjNjNDE0MzZkODFlYTM5ODk4ZDkzY2EzYTNiZmJlNDVm
ZjhjYTgzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwpAQCAtMTg5LDYgKzE4OSw3IEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZCA9IGZ1bmN0aW9uKCkKICAg
ICAgICAgcmV0YWluZWRTaXplOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldGFp
bmVkIFNpemUiKSwgd2lkdGg6ICI5MHB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTog
dHJ1ZSB9CiAgICAgfTsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRh
R3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOworICAgIHRoaXMuX2ZpbHRlclByb2ZpbGVJbmRleCA9
IC0xOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQu
cHJvdG90eXBlID0gewpAQCAtMjA4LDE5ICsyMDksNjQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRo
aXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3OwogICAgICAgICB0aGlzLnNuYXBzaG90ID0g
c25hcHNob3Q7Ci0gICAgICAgIHRoaXMucG9wdWxhdGVDaGlsZHJlbigpOworICAgICAgICBpZiAo
dGhpcy5fZmlsdGVyUHJvZmlsZUluZGV4ID09PSAtMSkKKyAgICAgICAgICAgIHRoaXMucG9wdWxh
dGVDaGlsZHJlbigpOwogICAgIH0sCiAKICAgICBwb3B1bGF0ZUNoaWxkcmVuOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBmdW5jdGlvbiBhZ2dyZWdhdGVzUmVjZWl2ZWQoYWdncmVnYXRlcykK
KyAgICAgICAgZnVuY3Rpb24gYWdncmVnYXRlc1JlY2VpdmVkKGtleSwgYWdncmVnYXRlcykKICAg
ICAgICAgewogICAgICAgICAgICAgZm9yICh2YXIgY29uc3RydWN0b3IgaW4gYWdncmVnYXRlcykK
LSAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Q29uc3RydWN0b3JOb2RlKHRoaXMsIGNvbnN0cnVjdG9yLCBhZ2dyZWdhdGVzW2NvbnN0
cnVjdG9yXSkpOworICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUodGhpcywgY29uc3RydWN0b3IsIGFnZ3Jl
Z2F0ZXNbY29uc3RydWN0b3JdLCBrZXkpKTsKICAgICAgICAgICAgIHRoaXMuc29ydGluZ0NoYW5n
ZWQoKTsKICAgICAgICAgfQotICAgICAgICB0aGlzLnNuYXBzaG90LmFnZ3JlZ2F0ZXMoZmFsc2Us
IGFnZ3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMpKTsKLSAgICB9CisKKyAgICAgICAgaWYgKHRo
aXMuX2ZpbHRlclByb2ZpbGVJbmRleCA9PT0gLTEpIHsKKyAgICAgICAgICAgIHRoaXMuc25hcHNo
b3QuYWdncmVnYXRlcyhmYWxzZSwgImFsbE9iamVjdHMiLCBudWxsLCBhZ2dyZWdhdGVzUmVjZWl2
ZWQuYmluZCh0aGlzLCAiYWxsT2JqZWN0cyIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuZGlzcG9zZSgpOworICAgICAgICB0aGlzLnJlbW92ZUNoaWxk
cmVuKCk7CisgICAgICAgIHRoaXMucmVzZXRTb3J0aW5nQ2FjaGUoKTsKKworICAgICAgICB2YXIg
a2V5ID0gdGhpcy5fbWluTm9kZUlkICsgIi4uIiArIHRoaXMuX21heE5vZGVJZDsKKyAgICAgICAg
dmFyIGZpbHRlciA9ICJmdW5jdGlvbihub2RlKSB7IHZhciBpZCA9IG5vZGUuaWQ7IHJldHVybiBp
ZCA+ICIgKyB0aGlzLl9taW5Ob2RlSWQgKyAiICYmIGlkIDw9ICIgKyB0aGlzLl9tYXhOb2RlSWQg
KyAiOyB9IjsKKyAgICAgICAgdGhpcy5zbmFwc2hvdC5hZ2dyZWdhdGVzKGZhbHNlLCBrZXksIGZp
bHRlciwgYWdncmVnYXRlc1JlY2VpdmVkLmJpbmQodGhpcywga2V5KSk7CisgICAgfSwKKworICAg
IF9maWx0ZXJTZWxlY3RJbmRleENoYW5nZWQ6IGZ1bmN0aW9uKGxvYWRlciwgcHJvZmlsZUluZGV4
KQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlsdGVyUHJvZmlsZUluZGV4ID0gcHJvZmlsZUluZGV4
OworCisgICAgICAgIGRlbGV0ZSB0aGlzLl9tYXhOb2RlSWQ7CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9taW5Ob2RlSWQ7CisKKyAgICAgICAgaWYgKHRoaXMuX2ZpbHRlclByb2ZpbGVJbmRleCA9PT0g
LTEpIHsKKyAgICAgICAgICAgIHRoaXMucG9wdWxhdGVDaGlsZHJlbigpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZmlyc3RTbmFwc2hvdExvYWRl
ZChzbmFwc2hvdCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fbWF4Tm9kZUlkID0gc25h
cHNob3QubWF4Tm9kZUlkOworICAgICAgICAgICAgaWYgKHByb2ZpbGVJbmRleCA+IDApCisgICAg
ICAgICAgICAgICAgbG9hZGVyKHByb2ZpbGVJbmRleCAtIDEsIHNlY29uZFNuYXBzaG90TG9hZGVk
LmJpbmQodGhpcykpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5f
bWluTm9kZUlkID0gMDsKKyAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNlY29uZFNuYXBz
aG90TG9hZGVkKHNuYXBzaG90KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9taW5Ob2Rl
SWQgPSBzbmFwc2hvdC5tYXhOb2RlSWQ7CisgICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRy
ZW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWRlcihwcm9maWxlSW5kZXgsIGZpcnN0U25h
cHNob3RMb2FkZWQuYmluZCh0aGlzKSk7CisgICAgfSwKIH07CiAKIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RDb25zdHJ1Y3RvcnNEYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlOwpAQCAtMjYyLDYg
KzMwOCwxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IHNuYXBzaG90OwogICAgIH0sCiAKKyAgICBf
YmFzZVByb2ZpbGVJbmRleENoYW5nZWQ6IGZ1bmN0aW9uKGxvYWRlciwgcHJvZmlsZUluZGV4KQor
ICAgIHsKKyAgICAgICAgbG9hZGVyKHByb2ZpbGVJbmRleCwgdGhpcy5zZXRCYXNlRGF0YVNvdXJj
ZS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAgc2V0QmFzZURhdGFTb3VyY2U6IGZ1bmN0aW9u
KGJhc2VTbmFwc2hvdCkKICAgICB7CiAgICAgICAgIHRoaXMuYmFzZVNuYXBzaG90ID0gYmFzZVNu
YXBzaG90OwpAQCAtMzAyLDkgKzM1Myw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZm
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBub2RlLmNhbGN1bGF0
ZURpZmYodGhpcywgYWRkTm9kZUlmTm9uWmVyb0RpZmYuYmluZCh0aGlzLCBub2RlKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5h
Z2dyZWdhdGVzKHRydWUsIGFnZ3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
ICAgIHRoaXMuc25hcHNob3QuYWdncmVnYXRlcyh0cnVlLCAiYWxsT2JqZWN0cyIsIG51bGwsIGFn
Z3JlZ2F0ZXNSZWNlaXZlZC5iaW5kKHRoaXMpKTsKICAgICAgICAgfQotICAgICAgICB0aGlzLmJh
c2VTbmFwc2hvdC5hZ2dyZWdhdGVzKHRydWUsIGJhc2VBZ2dyZWdhdGVzUmVjZWl2ZWQuYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuYmFzZVNuYXBzaG90LmFnZ3JlZ2F0ZXModHJ1ZSwgImFsbE9i
amVjdHMiLCBudWxsLCBiYXNlQWdncmVnYXRlc1JlY2VpdmVkLmJpbmQodGhpcykpOwogICAgIH0K
IH07CiAKQEAgLTUxOSw2ICs1NzAsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZp
ZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCiAKICAgICB0aGlzLnBhcmVudCA9IHBhcmVu
dDsKICAgICB0aGlzLnBhcmVudC5hZGRFdmVudExpc3RlbmVyKCJwcm9maWxlIGFkZGVkIiwgdGhp
cy5fdXBkYXRlQmFzZU9wdGlvbnMsIHRoaXMpOworICAgIHRoaXMucGFyZW50LmFkZEV2ZW50TGlz
dGVuZXIoInByb2ZpbGUgYWRkZWQiLCB0aGlzLl91cGRhdGVGaWx0ZXJPcHRpb25zLCB0aGlzKTsK
IAogICAgIHRoaXMuc2hvd0NvdW50QXNQZXJjZW50ID0gZmFsc2U7CiAgICAgdGhpcy5zaG93U2hh
bGxvd1NpemVBc1BlcmNlbnQgPSBmYWxzZTsKQEAgLTYxNiw2ICs2NjgsMTEgQEAgV2ViSW5zcGVj
dG9yLkRldGFpbGVkSGVhcHNob3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAg
IHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5f
Y2hhbmdlQmFzZS5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhpcy5fdXBkYXRlQmFzZU9wdGlv
bnMoKTsKIAorICAgIHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNlbGVjdCIpOworICAgIHRoaXMuZmlsdGVyU2VsZWN0RWxlbWVudC5jbGFzc05hbWUg
PSAic3RhdHVzLWJhci1pdGVtIjsKKyAgICB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlRmlsdGVyLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICB0aGlzLl91cGRhdGVGaWx0ZXJPcHRpb25zKCk7CisKICAgICB0aGlzLnBlcmNlbnRC
dXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgInBlcmNlbnQtdGlt
ZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIik7CiAgICAgdGhpcy5wZXJjZW50QnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcGVyY2VudENsaWNrZWQuYmluZCh0
aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuaGVscEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3Rh
dHVzQmFyQnV0dG9uKCIiLCAiaGVhcHNob3QtaGVscC1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJh
ci1pdGVtIik7CkBAIC02MjksMTEgKzY4NiwxMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFw
c2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCiAgICAgewogICAgICAgICB2YXIg
bGlzdCA9IHRoaXMuX3Byb2ZpbGVzKCk7CiAgICAgICAgIHZhciBwcm9maWxlSW5kZXg7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAobGlzdFtp
XS51aWQgPT09IHRoaXMuX3Byb2ZpbGVVaWQpIHsKICAgICAgICAgICAgICAgICBwcm9maWxlSW5k
ZXggPSBpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICB9
CisKICAgICAgICAgaWYgKHByb2ZpbGVJbmRleCA+IDApCiAgICAgICAgICAgICB0aGlzLmJhc2VT
ZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBwcm9maWxlSW5kZXggLSAxOwogICAgICAgICBl
bHNlCkBAIC02NTgsNyArNzE3LDcgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewotICAgICAg
ICByZXR1cm4gW3RoaXMudmlld1NlbGVjdEVsZW1lbnQsIHRoaXMuYmFzZVNlbGVjdEVsZW1lbnQs
IHRoaXMucGVyY2VudEJ1dHRvbi5lbGVtZW50LCB0aGlzLmhlbHBCdXR0b24uZWxlbWVudF07Cisg
ICAgICAgIHJldHVybiBbdGhpcy52aWV3U2VsZWN0RWxlbWVudCwgdGhpcy5iYXNlU2VsZWN0RWxl
bWVudCwgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LCB0aGlzLnBlcmNlbnRCdXR0b24uZWxlbWVu
dCwgdGhpcy5oZWxwQnV0dG9uLmVsZW1lbnRdOwogICAgIH0sCiAKICAgICBnZXQgcHJvZmlsZSgp
CkBAIC04NjUsMTQgKzkyNCwyMiBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2Jhc2VQ
cm9maWxlVWlkID0gdGhpcy5fcHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVj
dGVkSW5kZXhdLnVpZDsKLSAgICAgICAgdGhpcy5fbG9hZFByb2ZpbGUodGhpcy5fYmFzZVByb2Zp
bGVVaWQsIGJhc2VQcm9maWxlTG9hZGVkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLmRhdGFH
cmlkLl9iYXNlUHJvZmlsZUluZGV4Q2hhbmdlZCh0aGlzLl9sb2FkUHJvZmlsZUJ5SW5kZXguYmlu
ZCh0aGlzKSwgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4KTsKIAotICAgICAg
ICBmdW5jdGlvbiBiYXNlUHJvZmlsZUxvYWRlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRl
bGV0ZSB0aGlzLl9iYXNlUHJvZmlsZVdyYXBwZXI7Ci0gICAgICAgICAgICB0aGlzLmJhc2VQcm9m
aWxlLl9sYXN0U2hvd24gPSBEYXRlLm5vdygpOwotICAgICAgICAgICAgdGhpcy5kaWZmRGF0YUdy
aWQuc2V0QmFzZURhdGFTb3VyY2UodGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIpOwotICAgICAgICB9
CisgICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVk
Q2FsbGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgLy8gVGhlIGN1cnJlbnQgc2VhcmNoIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBhZ2Fp
bi4gRmlyc3QgbmVnYXRlIG91dCBwcmV2aW91cyBtYXRjaAorICAgICAgICAvLyBjb3VudCBieSBj
YWxsaW5nIHRoZSBzZWFyY2ggZmluaXNoZWQgY2FsbGJhY2sgd2l0aCBhIG5lZ2F0aXZlIG51bWJl
ciBvZiBtYXRjaGVzLgorICAgICAgICAvLyBUaGVuIHBlcmZvcm0gdGhlIHNlYXJjaCBhZ2FpbiB3
aXRoIHRoZSBzYW1lIHF1ZXJ5IGFuZCBjYWxsYmFjay4KKyAgICAgICAgdGhpcy5fc2VhcmNoRmlu
aXNoZWRDYWxsYmFjayh0aGlzLCAtdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOworICAgICAg
ICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5jdXJyZW50UXVlcnksIHRoaXMuX3NlYXJjaEZpbmlz
aGVkQ2FsbGJhY2spOworICAgIH0sCisKKyAgICBfY2hhbmdlRmlsdGVyOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgcHJvZmlsZUluZGV4ID0gdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50
LnNlbGVjdGVkSW5kZXggLSAxOworICAgICAgICB0aGlzLmRhdGFHcmlkLl9maWx0ZXJTZWxlY3RJ
bmRleENoYW5nZWQodGhpcy5fbG9hZFByb2ZpbGVCeUluZGV4LmJpbmQodGhpcyksIHByb2ZpbGVJ
bmRleCk7CiAKICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVyeSB8fCAhdGhpcy5fc2VhcmNo
RmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTg5NCw2ICs5NjEsMTIgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5s
b2FkSGVhcFNuYXBzaG90KHByb2ZpbGVVaWQsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgX2xv
YWRQcm9maWxlQnlJbmRleDogZnVuY3Rpb24ocHJvZmlsZUluZGV4LCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHZhciBwcm9maWxlVWlkID0gdGhpcy5fcHJvZmlsZXMoKVtwcm9maWxlSW5kZXhd
LnVpZDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5sb2FkSGVhcFNuYXBz
aG90KHByb2ZpbGVVaWQsIGNhbGxiYWNrKTsKKyAgICB9LAorCiAgICAgaXNEZXRhaWxlZFNuYXBz
aG90OiBmdW5jdGlvbihzbmFwc2hvdCkKICAgICB7CiAgICAgICAgIHZhciBzID0gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3Qoc25hcHNob3QpOwpAQCAtMTAwMywxMSArMTA3NiwxMiBAQCBX
ZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLmN1cnJlbnRWaWV3LnNob3coKTsKICAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEo
KTsKICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKKwogICAgICAgICBpZiAo
dGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5kaWZmVmlldykgewogICAgICAgICAgICAgdGhpcy5i
YXNlU2VsZWN0RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAg
IGlmICghdGhpcy5kYXRhR3JpZC5zbmFwc2hvdFZpZXcpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fY2hhbmdlQmFzZSgpOworICAgICAgICAgICAgICAgIHRoaXMuZGF0
YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlzLnByb2ZpbGVXcmFwcGVyKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuYmFzZVNlbGVjdEVsZW1l
bnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CkBAIC0xMDE1LDYgKzEwODksMTEgQEAgV2ViSW5z
cGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7
CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5jb25z
dHJ1Y3RvcnNWaWV3KQorICAgICAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RFbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLmZp
bHRlclNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CisKICAgICAgICAgaWYg
KCF0aGlzLmN1cnJlbnRRdWVyeSB8fCAhdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayB8fCAh
dGhpcy5fc2VhcmNoUmVzdWx0cykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTE4NCw2ICsx
MjYzLDMzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KICAgICB9LAogCisgICAgX3VwZGF0ZUZpbHRlck9wdGlvbnM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBsaXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKKyAgICAgICAg
Ly8gV2UncmUgYXNzdW1pbmcgdGhhdCBzbmFwc2hvdHMgY2FuIG9ubHkgYmUgYWRkZWQuCisgICAg
ICAgIGlmICh0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQubGVuZ3RoIC0gMSA9PT0gbGlzdC5sZW5n
dGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLmZpbHRlclNlbGVj
dEVsZW1lbnQubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgZmlsdGVyT3B0aW9uID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICBmaWx0ZXJPcHRpb24ubGFi
ZWwgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbCBvYmplY3RzIik7CisgICAgICAgICAgICB0
aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZmlsdGVyT3B0aW9uKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLmZpbHRlclNlbGVjdEVsZW1lbnQubGVu
Z3RoIC0gMSwgbiA9IGxpc3QubGVuZ3RoOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICB2YXIg
ZmlsdGVyT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAg
ICAgICB2YXIgdGl0bGUgPSBsaXN0W2ldLnRpdGxlOworICAgICAgICAgICAgaWYgKCF0aXRsZS5p
bmRleE9mKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWkpCisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJP
YmplY3RzIGFsbG9jYXRlZCBiZWZvcmUgU25hcHNob3QgJWQiLCB0aXRsZS5zdWJzdHJpbmcoVXNl
ckluaXRpYXRlZFByb2ZpbGVOYW1lLmxlbmd0aCArIDEpKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPYmpl
Y3RzIGFsbG9jYXRlZCBiZXR3ZWVuIFNuYXBzaG90cyAlZCBhbmQgJWQiLCB0aXRsZS5zdWJzdHJp
bmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLmxlbmd0aCArIDEpIC0gMSwgdGl0bGUuc3Vic3Ry
aW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZS5sZW5ndGggKyAxKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBmaWx0ZXJPcHRpb24ubGFiZWwgPSB0aXRsZTsKKyAgICAgICAgICAgIHRo
aXMuZmlsdGVyU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChmaWx0ZXJPcHRpb24pOworICAgICAg
ICB9CisgICAgfSwKKwogICAgIF91cGRhdGVQZXJjZW50QnV0dG9uOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5faXNTaG93aW5nQXNQZXJjZW50KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IDMzZjkx
OTExMDBkZTU1YTY5M2EzNjg1MjAxYTE3NzkwMTk3OWY2YTAuLmViMTU3ZjVlZDQ4MGJiM2ZjODg1
NDBkNGNkNmY1Mzg2YTBkZmQ2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC03MTgsNiArNzE4LDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kb21p
bmF0ZWROb2RlczsKICAgICAgICAgZGVsZXRlIHRoaXMuX2RvbWluYXRlZEluZGV4OwogICAgICAg
ICBkZWxldGUgdGhpcy5fZmxhZ3M7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9maWx0ZXJlZEFnZ3Jl
Z2F0ZXM7CiAgICAgfSwKIAogICAgIGdldCBfYWxsTm9kZXMoKQpAQCAtNzUyLDYgKzc1MywxOSBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLCB0aGlzLl9yb290Tm9kZUlu
ZGV4KTsKICAgICB9LAogCisgICAgZ2V0IG1heE5vZGVJZCgpCisgICAgeworICAgICAgICBpZiAo
dHlwZW9mIHRoaXMuX21heE5vZGVJZCA9PT0gIm51bWJlciIpCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fbWF4Tm9kZUlkOworICAgICAgICB0aGlzLl9tYXhOb2RlSWQgPSAwOworICAgICAgICBm
b3IgKHZhciBpdGVyID0gdGhpcy5fYWxsTm9kZXM7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQo
KSkgeworICAgICAgICAgICAgdmFyIGlkID0gaXRlci5ub2RlLmlkOworICAgICAgICAgICAgaWYg
KChpZCAlIDIpICYmIGlkID4gdGhpcy5fbWF4Tm9kZUlkKQorICAgICAgICAgICAgICAgIHRoaXMu
X21heE5vZGVJZCA9IGlkOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9tYXhOb2Rl
SWQ7CisgICAgfSwKKwogICAgIGdldCByb290Tm9kZUluZGV4KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9yb290Tm9kZUluZGV4OwpAQCAtNzg5LDEzICs4MDMsMzUgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mbGFn
c1tub2RlLm5vZGVJbmRleF07CiAgICAgfSwKIAotICAgIGFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKHNv
cnRlZEluZGV4ZXMpCisgICAgYWdncmVnYXRlczogZnVuY3Rpb24oc29ydGVkSW5kZXhlcywga2V5
LCBmaWx0ZXJTdHJpbmcpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2FnZ3JlZ2F0ZXMpCi0g
ICAgICAgICAgICB0aGlzLl9idWlsZEFnZ3JlZ2F0ZXMoKTsKLSAgICAgICAgaWYgKHNvcnRlZElu
ZGV4ZXMgJiYgIXRoaXMuX2FnZ3JlZ2F0ZXNJbmRleGVzU29ydGVkKQotICAgICAgICAgICAgdGhp
cy5fc29ydEFnZ3JlZ2F0ZUluZGV4ZXMoKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2FnZ3JlZ2F0
ZXM7CisgICAgICAgIGlmICghdGhpcy5fYWdncmVnYXRlcykgeworICAgICAgICAgICAgdGhpcy5f
YWdncmVnYXRlcyA9IHt9OworICAgICAgICAgICAgdGhpcy5fYWdncmVnYXRlc1NvcnRlZEZsYWdz
ID0ge307CisgICAgICAgIH0KKworICAgICAgICB2YXIgYWdncmVnYXRlcyA9IHRoaXMuX2FnZ3Jl
Z2F0ZXNba2V5XTsKKyAgICAgICAgaWYgKGFnZ3JlZ2F0ZXMpIHsKKyAgICAgICAgICAgIGlmIChz
b3J0ZWRJbmRleGVzICYmICF0aGlzLl9hZ2dyZWdhdGVzU29ydGVkRmxhZ3Nba2V5XSkgeworICAg
ICAgICAgICAgICAgIHRoaXMuX3NvcnRBZ2dyZWdhdGVJbmRleGVzKGFnZ3JlZ2F0ZXMpOworICAg
ICAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNTb3J0ZWRGbGFnc1trZXldID0gc29ydGVkSW5k
ZXhlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBhZ2dyZWdhdGVzOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIGZpbHRlcjsKKyAgICAgICAgaWYgKGZpbHRlclN0cmluZykK
KyAgICAgICAgICAgIGZpbHRlciA9IHRoaXMuX3BhcnNlRmlsdGVyKGZpbHRlclN0cmluZyk7CisK
KyAgICAgICAgYWdncmVnYXRlcyA9IHRoaXMuX2J1aWxkQWdncmVnYXRlcyhmaWx0ZXIpOworCisg
ICAgICAgIGlmIChzb3J0ZWRJbmRleGVzKQorICAgICAgICAgICAgdGhpcy5fc29ydEFnZ3JlZ2F0
ZUluZGV4ZXMoYWdncmVnYXRlcyk7CisKKyAgICAgICAgdGhpcy5fYWdncmVnYXRlc1NvcnRlZEZs
YWdzW2tleV0gPSBzb3J0ZWRJbmRleGVzOworICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzW2tleV0g
PSBhZ2dyZWdhdGVzOworCisgICAgICAgIHJldHVybiBhZ2dyZWdhdGVzOwogICAgIH0sCiAKICAg
ICBfYnVpbGRSZXZlcnNlSW5kZXg6IGZ1bmN0aW9uKGluZGV4QXJyYXlOYW1lLCBiYWNrUmVmc0Fy
cmF5TmFtZSwgaW5kZXhDYWxsYmFjaywgZGF0YUNhbGxiYWNrKQpAQCAtODUzLDE4ICs4ODksMjAg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
fSkuYmluZCh0aGlzKSk7CiAgICAgfSwKIAotICAgIF9idWlsZEFnZ3JlZ2F0ZXM6IGZ1bmN0aW9u
KCkKKyAgICBfYnVpbGRBZ2dyZWdhdGVzOiBmdW5jdGlvbihmaWx0ZXIpCiAgICAgewotICAgICAg
ICB0aGlzLl9hZ2dyZWdhdGVzID0ge307CisgICAgICAgIHZhciBhZ2dyZWdhdGVzID0ge307CiAg
ICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLl9hbGxOb2RlczsgaXRlci5oYXNOZXh0KCk7IGl0
ZXIubmV4dCgpKSB7CiAgICAgICAgICAgICB2YXIgbm9kZSA9IGl0ZXIubm9kZTsKKyAgICAgICAg
ICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlcihub2RlKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmIChub2RlLnR5cGUgIT09ICJuYXRpdmUiICYmIG5vZGUuc2VsZlNp
emUgPT09IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB2YXIgbmFt
ZU1hdHRlcnMgPSBub2RlLnR5cGUgPT09ICJvYmplY3QiIHx8IG5vZGUudHlwZSA9PT0gIm5hdGl2
ZSI7CiAgICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7Ci0gICAgICAg
ICAgICBpZiAoIXRoaXMuX2FnZ3JlZ2F0ZXMuaGFzT3duUHJvcGVydHkoY2xhc3NOYW1lKSkKLSAg
ICAgICAgICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzW2NsYXNzTmFtZV0gPSB7IGNvdW50OiAwLCBz
ZWxmOiAwLCBtYXhSZXQ6IDAsIHR5cGU6IG5vZGUudHlwZSwgbmFtZTogbmFtZU1hdHRlcnMgPyBu
b2RlLm5hbWUgOiBudWxsLCBpZHhzOiBbXSB9OwotICAgICAgICAgICAgdmFyIGNsc3MgPSB0aGlz
Ll9hZ2dyZWdhdGVzW2NsYXNzTmFtZV07CisgICAgICAgICAgICBpZiAoIWFnZ3JlZ2F0ZXMuaGFz
T3duUHJvcGVydHkoY2xhc3NOYW1lKSkKKyAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzW2NsYXNz
TmFtZV0gPSB7IGNvdW50OiAwLCBzZWxmOiAwLCBtYXhSZXQ6IDAsIHR5cGU6IG5vZGUudHlwZSwg
bmFtZTogbmFtZU1hdHRlcnMgPyBub2RlLm5hbWUgOiBudWxsLCBpZHhzOiBbXSB9OworICAgICAg
ICAgICAgdmFyIGNsc3MgPSBhZ2dyZWdhdGVzW2NsYXNzTmFtZV07CiAgICAgICAgICAgICArK2Ns
c3MuY291bnQ7CiAgICAgICAgICAgICBjbHNzLnNlbGYgKz0gbm9kZS5zZWxmU2l6ZTsKICAgICAg
ICAgICAgIGlmIChub2RlLnJldGFpbmVkU2l6ZSA+IGNsc3MubWF4UmV0KQpAQCAtODcyLDIzICs5
MTAsMjIgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBjbHNzLmlkeHMucHVzaChub2RlLm5vZGVJbmRleCk7CiAgICAgICAgIH0KICAgICAgICAg
Ly8gU2hhdmUgb2ZmIHByb3Zpc2lvbmFsbHkgYWxsb2NhdGVkIHNwYWNlLgotICAgICAgICBmb3Ig
KHZhciBjbGFzc05hbWUgaW4gdGhpcy5fYWdncmVnYXRlcykKLSAgICAgICAgICAgIHRoaXMuX2Fn
Z3JlZ2F0ZXNbY2xhc3NOYW1lXS5pZHhzID0gdGhpcy5fYWdncmVnYXRlc1tjbGFzc05hbWVdLmlk
eHMuc2xpY2UoMCk7CisgICAgICAgIGZvciAodmFyIGNsYXNzTmFtZSBpbiBhZ2dyZWdhdGVzKQor
ICAgICAgICAgICAgYWdncmVnYXRlc1tjbGFzc05hbWVdLmlkeHMgPSBhZ2dyZWdhdGVzW2NsYXNz
TmFtZV0uaWR4cy5zbGljZSgwKTsKKyAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZXM7CiAgICAgfSwK
IAotICAgIF9zb3J0QWdncmVnYXRlSW5kZXhlczogZnVuY3Rpb24oKQorICAgIF9zb3J0QWdncmVn
YXRlSW5kZXhlczogZnVuY3Rpb24oYWdncmVnYXRlcykKICAgICB7CiAgICAgICAgIHZhciBub2Rl
QSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzKTsKICAgICAgICAgdmFy
IG5vZGVCID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHRoaXMpOwotICAgICAg
ICBmb3IgKHZhciBjbHNzIGluIHRoaXMuX2FnZ3JlZ2F0ZXMpCi0gICAgICAgICAgICB0aGlzLl9h
Z2dyZWdhdGVzW2Nsc3NdLmlkeHMuc29ydCgKKyAgICAgICAgZm9yICh2YXIgY2xzcyBpbiBhZ2dy
ZWdhdGVzKQorICAgICAgICAgICAgYWdncmVnYXRlc1tjbHNzXS5pZHhzLnNvcnQoCiAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oaWR4QSwgaWR4QikgewogICAgICAgICAgICAgICAgICAgICBub2Rl
QS5ub2RlSW5kZXggPSBpZHhBOwogICAgICAgICAgICAgICAgICAgICBub2RlQi5ub2RlSW5kZXgg
PSBpZHhCOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUEuaWQgPCBub2RlQi5pZCA/
IC0xIDogMTsKICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICB0aGlzLl9hZ2dyZWdhdGVz
SW5kZXhlc1NvcnRlZCA9IHRydWU7CiAgICAgfSwKIAogICAgIF9idWlsZE5vZGVJbmRleDogZnVu
Y3Rpb24oKQpAQCAtMTA0OCw5ICsxMDg1LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dE5vZGVzUHJvdmlkZXIodGhpcywgdGhpcy5fcGFyc2VGaWx0ZXIoZmlsdGVyKSk7CiAgICAgfSwK
IAotICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xhc3NOYW1lKQor
ICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xhc3NOYW1lLCBhZ2dy
ZWdhdGVzS2V5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZXNQcm92aWRlcih0aGlzLCBudWxsLCB0aGlzLmFnZ3JlZ2F0ZXMoZmFsc2UpW2Ns
YXNzTmFtZV0uaWR4cyk7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGVzUHJvdmlkZXIodGhpcywgbnVsbCwgdGhpcy5hZ2dyZWdhdGVzKGFnZ3JlZ2F0ZXNL
ZXkpW2NsYXNzTmFtZV0uaWR4cyk7CiAgICAgfSwKIAogICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJG
b3JEb21pbmF0b3I6IGZ1bmN0aW9uKG5vZGVJbmRleCwgZmlsdGVyKQpAQCAtMTA2Niw3ICsxMTAz
LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAKICAgICB1cGRh
dGVTdGF0aWNEYXRhOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4ge25vZGVDb3Vu
dDogdGhpcy5ub2RlQ291bnQsIHJvb3ROb2RlSW5kZXg6IHRoaXMuX3Jvb3ROb2RlSW5kZXgsIHRv
dGFsU2l6ZTogdGhpcy50b3RhbFNpemUsIHVpZDogdGhpcy51aWQsIG5vZGVGbGFnczogdGhpcy5f
bm9kZUZsYWdzfTsKKyAgICAgICAgcmV0dXJuIHtub2RlQ291bnQ6IHRoaXMubm9kZUNvdW50LCBy
b290Tm9kZUluZGV4OiB0aGlzLl9yb290Tm9kZUluZGV4LCB0b3RhbFNpemU6IHRoaXMudG90YWxT
aXplLCB1aWQ6IHRoaXMudWlkLCBub2RlRmxhZ3M6IHRoaXMuX25vZGVGbGFncywgbWF4Tm9kZUlk
OiB0aGlzLm1heE5vZGVJZH07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanMKaW5kZXggN2Y1N2Qz
NTMxZTJkYzJlNTA3MGFjNjRiNDQxNjFhNzljYWU3OWM4Yi4uMjU3YWYyNmZmNzg1ODNiNzM3OWJm
MDdhYjIwMjJhODg0MmM3ZmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBAIC0zMTAsOSArMzEwLDkgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5ID0gZnVuY3Rpb24od29ya2VyLCBvYmplY3RJ
ZCkKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKLSAg
ICBhZ2dyZWdhdGVzOiBmdW5jdGlvbihzb3J0ZWRJbmRleGVzLCBjYWxsYmFjaykKKyAgICBhZ2dy
ZWdhdGVzOiBmdW5jdGlvbihzb3J0ZWRJbmRleGVzLCBrZXksIGZpbHRlciwgY2FsbGJhY2spCiAg
ICAgewotICAgICAgICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ssICJhZ2dyZWdhdGVzIiwgc29y
dGVkSW5kZXhlcyk7CisgICAgICAgIHRoaXMuY2FsbE1ldGhvZChjYWxsYmFjaywgImFnZ3JlZ2F0
ZXMiLCBzb3J0ZWRJbmRleGVzLCBrZXksIGZpbHRlcik7CiAgICAgfSwKIAogICAgIGNyZWF0ZURp
ZmY6IGZ1bmN0aW9uKGNsYXNzTmFtZSkKQEAgLTMzMCw5ICszMzAsOSBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5jYWxs
RmFjdG9yeU1ldGhvZChudWxsLCAiY3JlYXRlTm9kZXNQcm92aWRlciIsICJXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSIsIGZpbHRlcik7CiAgICAgfSwKIAotICAgIGNyZWF0
ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xhc3NOYW1lKQorICAgIGNyZWF0ZU5v
ZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xhc3NOYW1lLCBhZ2dyZWdhdGVzS2V5KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwgImNyZWF0
ZU5vZGVzUHJvdmlkZXJGb3JDbGFzcyIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlk
ZXJQcm94eSIsIGNsYXNzTmFtZSk7CisgICAgICAgIHJldHVybiB0aGlzLmNhbGxGYWN0b3J5TWV0
aG9kKG51bGwsICJjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yQ2xhc3MiLCAiV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb3ZpZGVyUHJveHkiLCBjbGFzc05hbWUsIGFnZ3JlZ2F0ZXNLZXkpOwogICAg
IH0sCiAKICAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yRG9taW5hdG9yOiBmdW5jdGlvbihub2Rl
SW5kZXgsIGZpbHRlcikKQEAgLTM2MCw2ICszNjAsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICEhdGhpcy5fb2JqZWN0SWQ7
CiAgICAgfSwKIAorICAgIGdldCBtYXhOb2RlSWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3N0YXRpY0RhdGEubWF4Tm9kZUlkOworICAgIH0sCisKICAgICBnZXQgbm9kZUNvdW50KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0aWNEYXRhLm5vZGVDb3VudDsKQEAgLTM5
Nyw3ICs0MDIsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlID0g
ewogCiAgICAgc3RhcnRMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAg
IHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOworICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJp
bmQobnVsbCwgdGhpcyksIDApOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAo=
</data>
<flag name="review"
          id="109460"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>