<?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>122898</bug_id>
          
          <creation_ts>2013-10-16 08:57:51 -0700</creation_ts>
          <short_desc>REGRESSION (Safari 6): Web Inspector: JSON may not be pretty printed if served as text/html</short_desc>
          <delta_ts>2019-08-22 11:48:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201046</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Coffin">dcoffin</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940384</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Coffin">dcoffin</who>
    <bug_when>2013-10-16 08:57:51 -0700</bug_when>
    <thetext>JSON is not available to be pretty printed if its MIME type is text/html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940385</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-16 08:57:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/15241419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940400</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-10-16 09:20:54 -0700</bug_when>
    <thetext>Not sure this is actually a bug, the Web Inspector relies on mime-types to identify what the resource type is. In other words, content served as text/html is treated as HTML and not JSON.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940402</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Coffin">dcoffin</who>
    <bug_when>2013-10-16 09:28:29 -0700</bug_when>
    <thetext>I take your point, but this is an example of a significant disconnect from the old web inspector. The old inspector ignored the MIME Type, so if your web app had incorrect MIME Types, you could still debug until you fixed it (because it would pretty print was is obviously JSON). I don&apos;t see a downside to pretty printing regardless of the MIME Type, and in my case it would be pretty helpful, and I&apos;m probably not the only one. This particular issue would be a reason why I would not switch back to Safari from Chrome (I inspect JSON API responses all day long), to which your point would be &quot;Fix your headers&quot;, and my rebuttal is that its never that simple. 

Especially if you&apos;re using a public API and don&apos;t have control over the content type headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940403</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-10-16 09:32:58 -0700</bug_when>
    <thetext>Thanks for pointing this out Dave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940443</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-16 10:57:57 -0700</bug_when>
    <thetext>An option to fixing this would be to allow the user to change/force a different MIME-type in the UI, which will affect the syntax highlighting and in turn the pretty printing.

That would be useful for subtle dialects like SASS or LESS that might get the wrong MIME-type on the server.

The next obvious approach (which Dave mentions) would be to second guess the server MIME-type and sniff the content to make the guess about the correct MIME-type.

I think we should consider doing both of these things (user selectable type in the sidebar and content sniffing for obvious content types).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940476</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Coffin">dcoffin</who>
    <bug_when>2013-10-16 12:04:03 -0700</bug_when>
    <thetext>That&apos;d be awesome Tim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941242</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-18 09:54:51 -0700</bug_when>
    <thetext>The same issue happens with Request Data. If the mime-type is application/x-www-form-urlencoded we will not show the data in a content view, but try to parse the key/values pairs. You should be able to force the request and/or response content-type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941266</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-18 10:43:09 -0700</bug_when>
    <thetext>See bug 123026.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028574</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-08-12 12:52:04 -0700</bug_when>
    <thetext>*** Bug 123026 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559418</commentid>
    <comment_count>10</comment_count>
      <attachid>375778</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-07 19:34:22 -0700</bug_when>
    <thetext>Created attachment 375778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559637</commentid>
    <comment_count>11</comment_count>
      <attachid>375778</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-08-08 13:05:57 -0700</bug_when>
    <thetext>Comment on attachment 375778
Patch

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

&gt; Source/WebInspectorUI/ChangeLog:21
&gt; +        (WI.ResourceClusterContentView.prototype._canShowCustomResponseContentView):

Per other comments it&apos;s not really clear what the design is here. Is it supporting lazy loading of the content view?

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:54
&gt; +        this._customRequestPathComponent = createPathComponent.call(this, WI.UIString(&quot;Custom&quot;), WI.ResourceClusterContentView.RequestIconStyleClassName, WI.ResourceClusterContentView.CustomRequestIdentifier);

Can you please add a UIString label/description? &quot;Custom&quot; is quite vague.

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:132
&gt; +        if (!this._customResponseContentView) {

I strongly prefer holding onto the constructor rather than a new-instance-returning lambda that needs to be null&apos;d out. What is the rationale for this change?

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:355
&gt; +        if (this._resource.requestData.isJSON()) {

Please invert this to:

if (!this._resource.requestData.isJSON())
return;

Then you can remove if (!this._customRequestContentViewInitializer) later.

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:372
&gt; +        if (this._canShowCustomResponseContentView())

This code does not read well, or it is a bug. If we can&apos;t show a custom response view, then execution continues to set it up. Huh? Is this actually something like this._readyToShowCustomResponseContentView?

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:380
&gt; +            if (error || this._canShowCustomResponseContentView())

Ditto. This seems like a bug or misnamed.

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:386
&gt; +            if (content.isJSON()) {

content could be undefined here for a page like about:blank. Thus throwing an exception:

[Error] Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating &apos;content.isJSON&apos;)
	(anonymous function) (ResourceClusterContentView.js:386)
	promiseReactionJob</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559714</commentid>
    <comment_count>12</comment_count>
      <attachid>375778</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-08 16:26:24 -0700</bug_when>
    <thetext>Comment on attachment 375778
Patch

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:21
&gt;&gt; +        (WI.ResourceClusterContentView.prototype._canShowCustomResponseContentView):
&gt; 
&gt; Per other comments it&apos;s not really clear what the design is here. Is it supporting lazy loading of the content view?

Lazy loading, but not in the &quot;traditional&quot; sense.  The main issue is that given a `WI.Resource`, we don&apos;t know (at construction time) the contents of the `WI.Resource`, as the only way to retrieve that is via a `Promise` (async).  Showing the request as JSON can be synchronous, as `WI.Resource.prototype.requestData` is known (and retrievable) from the moment the `WI.Resource` is constructed, so perhaps that could remove much of the `try*`/`can*`.  I wanted it to be consistent, but frankly it doesn&apos;t have to be.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:54
&gt;&gt; +        this._customRequestPathComponent = createPathComponent.call(this, WI.UIString(&quot;Custom&quot;), WI.ResourceClusterContentView.RequestIconStyleClassName, WI.ResourceClusterContentView.CustomRequestIdentifier);
&gt; 
&gt; Can you please add a UIString label/description? &quot;Custom&quot; is quite vague.

This is overridden later on, so the user would never actually see it.  It probably shouldn&apos;t even be a `WI.UIString`.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:132
&gt;&gt; +        if (!this._customResponseContentView) {
&gt; 
&gt; I strongly prefer holding onto the constructor rather than a new-instance-returning lambda that needs to be null&apos;d out. What is the rationale for this change?

Since I&apos;m using `WI.JSONContentView` for both the request data (sync retrieval) and response content (async retrieval), I need a way of abstracting _how_ the JSON string is passed into the `WI.JSONContentView` when it&apos;s constructed.  This approach allows the `WI.JSONContentView` to be lazily created _after_ all of the data has been retrieved in _both_ cases.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:372
&gt;&gt; +        if (this._canShowCustomResponseContentView())
&gt; 
&gt; This code does not read well, or it is a bug. If we can&apos;t show a custom response view, then execution continues to set it up. Huh? Is this actually something like this._readyToShowCustomResponseContentView?

If we already can show a custom response content view, we don&apos;t need to try to &quot;enable&quot; the custom content view as it&apos;s already been &quot;enabled&quot;, since we can show it.

The reason it uses &quot;enable&quot; (instead of &quot;create&quot; or &quot;prepare&quot;) is because it&apos;s inside this function that the path components (&quot;Request JSON&quot; and &quot;Response JSON&quot;) are added and made selectable and that&apos;s the only way to actually &quot;show&quot; the custom content view.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:386
&gt;&gt; +            if (content.isJSON()) {
&gt; 
&gt; content could be undefined here for a page like about:blank. Thus throwing an exception:
&gt; 
&gt; [Error] Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating &apos;content.isJSON&apos;)
&gt; 	(anonymous function) (ResourceClusterContentView.js:386)
&gt; 	promiseReactionJob

Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559722</commentid>
    <comment_count>13</comment_count>
      <attachid>375778</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-08 16:32:56 -0700</bug_when>
    <thetext>Comment on attachment 375778
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:132
&gt;&gt;&gt; +        if (!this._customResponseContentView) {
&gt;&gt; 
&gt;&gt; I strongly prefer holding onto the constructor rather than a new-instance-returning lambda that needs to be null&apos;d out. What is the rationale for this change?
&gt; 
&gt; Since I&apos;m using `WI.JSONContentView` for both the request data (sync retrieval) and response content (async retrieval), I need a way of abstracting _how_ the JSON string is passed into the `WI.JSONContentView` when it&apos;s constructed.  This approach allows the `WI.JSONContentView` to be lazily created _after_ all of the data has been retrieved in _both_ cases.

One other thing to mention is that we don&apos;t actually want/need to create the content view until the path component is selected, but we still need to know what to create when it is selected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559723</commentid>
    <comment_count>14</comment_count>
      <attachid>375857</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-08 16:38:17 -0700</bug_when>
    <thetext>Created attachment 375857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560005</commentid>
    <comment_count>15</comment_count>
      <attachid>375857</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-09 14:03:57 -0700</bug_when>
    <thetext>Comment on attachment 375857
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:747
&gt; +Object.defineProperty(String.prototype, &quot;isJSON&quot;,
&gt; +{
&gt; +    value()
&gt; +    {
&gt; +        try {
&gt; +            JSON.parse(this);
&gt; +            return true;
&gt; +        } catch { }
&gt; +        return false;
&gt; +    }
&gt; +});

I wonder if we should have a variant that checks for types.

For example these are all true:

    `&quot;this is the data&quot;`.isJSON()
    `true`.isJSON()
    `false`.isJSON()
    `100`.isJSON()
    `null`.isJSON()
    ...

I think this ContentView case we probably would desire a JSON view if the data is an &quot;object&quot; or &quot;array&quot; JSON type:

    `100`.isJSON([&quot;object&quot;, &quot;array&quot;]) // =&gt; false

That still doesn&apos;t do well on the `null` case.

So perhaps some code to work with the JSON to check its type / operate on it further:

    `100`.asJSON((json) =&gt; {
        ... // only called if text was parsed to json object
    });

For now it&apos;s fine because we don&apos;t do anything with it other than Boolean logic but I&apos;m thinking we could improve this.

------

Side note: what does it look like if the response data is just `true`?

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:-277
&gt; -        if (!contentViewToShow)
&gt; -            contentViewToShow = this.responseContentView;

I find this easier to read, and safer, than the `default:` and chain...

I also think that we should put a comment about the switch to point out that this is expected to fall all the way through to the bottom, in case someone adds a new case in the future.

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:345
&gt; +        if (!this._resource.requestData.isJSON())
&gt; +            return;

Currently the only custom content view is JSON. But we could add something in the future.

In such a future we probably wouldn&apos;t use early returns and instead a chain:

    if (this._canUseCustomJSONContentView(requestData)) {
        ...
        return;
    }

    if (this._canUseCustomMultiPartContentView(requestData) {
        ...;
        return;
    }

Okay to leave as is for now though.

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:364
&gt; +            if (error || !content || !content.isJSON())
&gt; +                return;

Same thing here with the early isJSON bail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560007</commentid>
    <comment_count>16</comment_count>
      <attachid>375778</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-09 14:05:52 -0700</bug_when>
    <thetext>Comment on attachment 375778
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:355
&gt;&gt; +        if (this._resource.requestData.isJSON()) {
&gt; 
&gt; Please invert this to:
&gt; 
&gt; if (!this._resource.requestData.isJSON())
&gt; return;
&gt; 
&gt; Then you can remove if (!this._customRequestContentViewInitializer) later.

I didn&apos;t see this comment when I did my review.

This is an ideal case for a set of chains in case we support various custom views in the future and want to check if this satisfies each.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560039</commentid>
    <comment_count>17</comment_count>
      <attachid>375957</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-09 14:29:19 -0700</bug_when>
    <thetext>Created attachment 375957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560070</commentid>
    <comment_count>18</comment_count>
      <attachid>375957</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-09 15:12:18 -0700</bug_when>
    <thetext>Comment on attachment 375957
Patch

Clearing flags on attachment: 375957

Committed r248485: &lt;https://trac.webkit.org/changeset/248485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560071</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-09 15:12:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375778</attachid>
            <date>2019-08-07 19:34:22 -0700</date>
            <delta_ts>2019-08-08 16:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122898-20190807193421.patch</filename>
            <type>text/plain</type>
            <size>34879</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGU2ZTMzY2M0MWJlNDM2ZTY4NmIyNjhkMDQ2NjZj
YTBhMjYyMzI2MGUuLjE4OTgyNWYxN2U0ODlmMDAzZjQwZGQ0Y2IwMmM1NzJmNDE2Mzg3ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTA4LTA3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChTYWZh
cmkgNik6IFdlYiBJbnNwZWN0b3I6IEpTT04gbWF5IG5vdCBiZSBwcmV0dHkgcHJpbnRlZCBpZiBz
ZXJ2ZWQgYXMgdGV4dC9odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjI4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1MjQxNDE5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIHRoZSBy
ZXF1ZXN0L3Jlc3BvbnNlIGRhdGEgdG8gc2VlIGlmIGl0J3MgSlNPTiBwYXJzYWJsZS4gSWYgc28s
IGFsbG93IHRoZSB1c2VyIHRvIGVsZWN0CisgICAgICAgIHRvIHZpZXcgdGhlIHJlcXVlc3QvcmVz
cG9uc2UgYXMgYSBKU09OIHByZXZpZXcgaW5zdGVhZCBvZiByYXcgKG9yIHByZXR0eSBwcmludGVk
KSB0ZXh0LgorCisgICAgICAgIFByZWZlciB0aGUgSlNPTiB2aWV3IHdoZXJldmVyIHBvc3NpYmxl
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgcmVxdWVzdENv
bnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5nZXQgY3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3KTogQWRkZWQuCisgICAgICAgIChXSS5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IGN1c3RvbVJlc3BvbnNlQ29u
dGVudFZpZXcpOgorICAgICAgICAoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90
eXBlLnNob3dSZXF1ZXN0KToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fY2FuU2hvd0N1c3RvbVJlcXVlc3RDb250ZW50Vmlldyk6IEFkZGVkLgorICAg
ICAgICAoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLl9jYW5TaG93Q3Vz
dG9tUmVzcG9uc2VDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250
ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRWaWV3Rm9yUmVzb3VyY2VUeXBlKToKKyAgICAgICAg
KFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcGF0aENvbXBvbmVudEZv
ckNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5faWRlbnRpZmllckZvckNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJlc291cmNl
Q2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmll
cik6CisgICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuX3Ry
eUVuYWJsZUN1c3RvbVJlcXVlc3RDb250ZW50Vmlldyk6IEFkZGVkLgorICAgICAgICAoV0kuUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLl90cnlFbmFibGVDdXN0b21SZXNwb25z
ZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5zYXZlVG9Db29raWUpOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVzb3VyY2VDbHVz
dGVyQ29udGVudFZpZXcucHJvdG90eXBlLl9jdXN0b21Db250ZW50Vmlld0NvbnN0cnVjdG9yRm9y
UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICBTaW5jZSB0aGUgY3VycmVudCB2aWV3IGlzIGFs
cmVhZHkgc2F2ZWQgaW4gYSBgV0kuU2V0dGluZ2AsIHRoZXJlJ3Mgbm8gbmVlZCB0byBzYXZlIHRo
YXQKKyAgICAgICAgc3RhdGUgdG8gYSBjb29raWUsIGFzIGl0J2xsIGJlIHJlc3RvcmVkIGVsc2V3
aGVyZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAo
V0kuc2hvd1Jlc291cmNlUmVxdWVzdCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4u
aHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05Db250ZW50Vmlldy5qczog
QWRkZWQuCisgICAgICAgIChXSS5KU09OQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuSlNPTkNv
bnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkpTT05Db250
ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQpOgorICAgICAgICAoV0kuSlNPTkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSlNPTkNv
bnRlbnRWaWV3LmNzczogQWRkZWQuCisgICAgICAgICguY29udGVudC12aWV3Lmpzb24pOgorICAg
ICAgICAqIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05SZXNv
dXJjZUNvbnRlbnRWaWV3LmpzOiBEZWxldGVkLgorICAgICAgICAqIFNvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05SZXNvdXJjZUNvbnRlbnRWaWV3LmNzczogRGVs
ZXRlZC4KKyAgICAgICAgQ3JlYXRlIGEgbW9yZSBnZW5lcmljIGNvbnRlbnQgdmlldyB0aGF0IHNo
b3dzIGEgcHJldmlldyBmb3IgdGhlIGdpdmVuIEpTT04gcGFyc2FibGUgc3RyaW5nLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qczoKKyAgICAgICAgKFN0cmluZy5w
cm90b3R5cGUuaXNKU09OKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9X
ZWJTb2NrZXREYXRhR3JpZE5vZGUuanM6CisgICAgICAgIChXSS5XZWJTb2NrZXREYXRhR3JpZE5v
ZGUucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMpOgorICAgICAgICBVdGlsaXR5IGZ1
bmN0aW9uIGZvciBjaGVja2luZyBpZiBhIHN0cmluZyBpcyBKU09OIHBhcnNhYmxlLgorCisgICAg
ICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorCiAyMDE5
LTA4LTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTZXR0aW5nczogYWRkIGFuIEVuZ2luZWVyaW5nIHBhbmUgdG8gZXhwb3NlIHVz
ZWZ1bCBzZXR0aW5ncyBmb3Igb3RoZXIgV2ViS2l0IGVuZ2luZWVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKaW5kZXggOTQxNjNlM2FjNGVlMjg3NGY0ZjBlMDgyODZjMTE3MTc4NGI1
ZmJlMy4uYTRhODMxN2YwOTU2YjQwMGY1MWIzZmUyNzJlNjA2YTEwOTRiY2NiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC02MTUsNyArNjE1LDYgQEAgbG9jYWxpemVkU3Ry
aW5nc1siSW52ZXJ0ZWQiXSA9ICJJbnZlcnRlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJbnZva2Ug
Z2V0dGVyIl0gPSAiSW52b2tlIGdldHRlciI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJKUDIiXSA9ICJK
UDIiOwogbG9jYWxpemVkU3RyaW5nc1siSlBFRyJdID0gIkpQRUciOwotbG9jYWxpemVkU3RyaW5n
c1siSlNPTiJdID0gIkpTT04iOwogbG9jYWxpemVkU3RyaW5nc1siSmF2YVNjcmlwdCJdID0gIkph
dmFTY3JpcHQiOwogbG9jYWxpemVkU3RyaW5nc1siSmF2YVNjcmlwdCAmIEV2ZW50cyJdID0gIkph
dmFTY3JpcHQgJiBFdmVudHMiOwogbG9jYWxpemVkU3RyaW5nc1siSmF2YVNjcmlwdCBBbGxvY2F0
aW9ucyJdID0gIkphdmFTY3JpcHQgQWxsb2NhdGlvbnMiOwpAQCAtODY5LDYgKzg2OCw3IEBAIGxv
Y2FsaXplZFN0cmluZ3NbIlJlcGVhdGluZyBMaW5lYXIgR3JhZGllbnQiXSA9ICJSZXBlYXRpbmcg
TGluZWFyIEdyYWRpZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcGVhdGluZyBSYWRpYWwgR3Jh
ZGllbnQiXSA9ICJSZXBlYXRpbmcgUmFkaWFsIEdyYWRpZW50IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlJlcXVlc3QiXSA9ICJSZXF1ZXN0IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcXVlc3QgJiBSZXNw
b25zZSJdID0gIlJlcXVlc3QgJiBSZXNwb25zZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0
IChKU09OKSJdID0gIlJlcXVlc3QgKEpTT04pIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcXVlc3Qg
Q29va2llcyJdID0gIlJlcXVlc3QgQ29va2llcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0
IERhdGEiXSA9ICJSZXF1ZXN0IERhdGEiOwogbG9jYWxpemVkU3RyaW5nc1siUmVxdWVzdCBIZWFk
ZXJzIl0gPSAiUmVxdWVzdCBIZWFkZXJzIjsKQEAgLTg4NSw2ICs4ODUsNyBAQCBsb2NhbGl6ZWRT
dHJpbmdzWyJSZXNvdXJjZSB3YXMgbG9hZGVkIHdpdGggdGhlIFx1MjAxQ2RhdGFcdTIwMUQgc2No
ZW1lLiJdID0gIlJlcwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2Ugd2FzIHNlcnZlZCBmcm9t
IHRoZSBjYWNoZS4iXSA9ICJSZXNvdXJjZSB3YXMgc2VydmVkIGZyb20gdGhlIGNhY2hlLiI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZXMiXSA9ICJSZXNvdXJjZXMiOwogbG9jYWxpemVkU3Ry
aW5nc1siUmVzcG9uc2UiXSA9ICJSZXNwb25zZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJSZXNwb25z
ZSAoSlNPTikiXSA9ICJSZXNwb25zZSAoSlNPTikiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzcG9u
c2UgQ29va2llcyJdID0gIlJlc3BvbnNlIENvb2tpZXMiOwogbG9jYWxpemVkU3RyaW5nc1siUmVz
cG9uc2UgSGVhZGVycyJdID0gIlJlc3BvbnNlIEhlYWRlcnMiOwogbG9jYWxpemVkU3RyaW5nc1si
UmVzcG9uc2U6Il0gPSAiUmVzcG9uc2U6IjsKQEAgLTExNzUsNyArMTE3Niw2IEBAIGxvY2FsaXpl
ZFN0cmluZ3NbIlR5cGUgaW5mb3JtYXRpb24gZm9yIHZhcmlhYmxlOiAlcyJdID0gIlR5cGUgaW5m
b3JtYXRpb24gZm9yIHZhCiBsb2NhbGl6ZWRTdHJpbmdzWyJVUkwiXSA9ICJVUkwiOwogbG9jYWxp
emVkU3RyaW5nc1siVVJMIEJyZWFrcG9pbnRcdTIwMjYiXSA9ICJVUkwgQnJlYWtwb2ludFx1MjAy
NiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVbmFibGUgdG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVy
dHkgZnJvbSByb290Il0gPSAiVW5hYmxlIHRvIGRldGVybWluZSBwYXRoIHRvIHByb3BlcnR5IGZy
b20gcm9vdCI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJVbmFibGUgdG8gcGFyc2UgYXMgSlNPTjogJXMi
XSA9ICJVbmFibGUgdG8gcGFyc2UgYXMgSlNPTjogJXMiOwogbG9jYWxpemVkU3RyaW5nc1siVW5h
YmxlIHRvIHNob3cgY2VydGlmaWNhdGUgZm9yIFx1MjAxQyVzXHUyMDFEIl0gPSAiVW5hYmxlIHRv
IHNob3cgY2VydGlmaWNhdGUgZm9yIFx1MjAxQyVzXHUyMDFEIjsKIC8qIEJyZWFrIChwYXVzZSkg
b24gdW5jYXVnaHQgKHVuaGFuZGxlZCkgZXhjZXB0aW9ucyAqLwogbG9jYWxpemVkU3RyaW5nc1si
VW5jYXVnaHQgRXhjZXB0aW9ucyJdID0gIlVuY2F1Z2h0IEV4Y2VwdGlvbnMiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDZkNmM0
MjYyZTMxNzA5YzE2OTIwZWU0NGM3YWQ3NjBjM2I1NWUzNTYuLjAzZGNiMTU0YmUwY2M4MjJkZjA0
NjQxMzljMDRkYWRkMDE0Nzk2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTE0MDUsNyArMTQwNSw3IEBAIFdJLnNob3dPcmln
aW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZVRleHRSYW5nZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVU
ZXh0UmFuZ2UsIG9wCiAKIFdJLnNob3dSZXNvdXJjZVJlcXVlc3QgPSBmdW5jdGlvbihyZXNvdXJj
ZSwgb3B0aW9ucyA9IHt9KQogewotICAgIFdJLnNob3dSZXByZXNlbnRlZE9iamVjdChyZXNvdXJj
ZSwge1tXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJD
b29raWVLZXldOiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWRlbnRpZmll
cn0sIG9wdGlvbnMpOworICAgIFdJLnNob3dSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZSwge1tX
SS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJDb29raWVL
ZXldOiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXF1ZXN0SWRlbnRpZmll
cn0sIG9wdGlvbnMpOwogfTsKIAogV0kuZGVidWdnZXJUb2dnbGVCcmVha3BvaW50cyA9IGZ1bmN0
aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1V0aWxpdGllcy5qcwppbmRleCA1Njc0NGZiMDgyZGY4ZGE0OTZlY2JkYjM4YzliNjkx
YWMxNWIxYmEyLi5hODZjODY3NjBiZTgwZjMzNjM2MjE5ZmY5MGYwNzZhMDdjYWQ2MzdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGll
cy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxp
dGllcy5qcwpAQCAtNzM0LDYgKzczNCwxOCBAQCBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5n
LnByb3RvdHlwZSwgImlzVXBwZXJDYXNlIiwKICAgICB9CiB9KTsKIAorT2JqZWN0LmRlZmluZVBy
b3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJpc0pTT04iLAoreworICAgIHZhbHVlKCkKKyAgICB7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBKU09OLnBhcnNlKHRoaXMpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9KTsKKwogT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUs
ICJ0cnVuY2F0ZVN0YXJ0IiwKIHsKICAgICB2YWx1ZShtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggNWY4Y2U2ZDgwMjIxMzA2
NzkxNjk4M2ExODA4YmI4MTJmYzc0YWNhMy4uNWIwYjA2NDkyMGNjZDZjNDJjYmZiZjIwMjY2N2Zl
MzhlYmYzNzE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uaHRtbApAQCAtMTIzLDcgKzEyMyw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9JbmxpbmVTd2F0Y2guY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL0lucHV0UG9wb3Zlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvSXNzdWVUcmVlRWxlbWVudC5jc3MiPgotICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvSlNPTlJlc291cmNlQ29udGVudFZpZXcuY3NzIj4KKyAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0pTT05Db250ZW50Vmlldy5jc3MiPgog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJh
clBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MYXll
clRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmNzcyI+CkBAIC03MDYsNyArNzA2LDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSW5saW5lU3dhdGNoLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvSW5wdXRQb3BvdmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvSXNzdWVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0pTT05SZXNvdXJjZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvSlNPTkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJUcmVlRGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9KU09OQ29udGVudFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSlNPTkNvbnRlbnRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzE0NDA5ODA1
ZTkzM2IxYjUwMGQ2YjIxZGY5ZTZkZWUwOTUxYzc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNPTkNvbnRlbnRWaWV3LmNzcwpA
QCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmNvbnRlbnQtdmlldy5qc29uIHsKKyAgICBw
YWRkaW5nOiAxMHB4OworICAgIG92ZXJmbG93OiBzY3JvbGw7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OQ29udGVudFZp
ZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGEwOGVjOThiZTI1ZjYxOGVhYTMwYjZmOGM3ODY4MTFiNzIyMDcy
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0pTT05Db250ZW50Vmlldy5qcwpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V0kuSlNPTkNvbnRlbnRWaWV3ID0gY2xhc3MgSlNPTkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29u
dGVudFZpZXcKK3sKKyAgICBjb25zdHJ1Y3Rvcihqc29uLCByZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBqc29uID09PSAic3RyaW5nIiAmJiBq
c29uLmlzSlNPTigpKTsKKworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7CisKKyAg
ICAgICAgdGhpcy5fanNvbiA9IGpzb247CisgICAgICAgIHRoaXMuX3JlbW90ZU9iamVjdCA9IG51
bGw7CisgICAgICAgIHRoaXMuX3NwaW5uZXJUaW1lb3V0ID0gdW5kZWZpbmVkOworCisgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJqc29uIik7CisgICAgfQorCisgICAgLy8gUHJv
dGVjdGVkCisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7CisgICAgICAgIHN1cGVyLmluaXRp
YWxMYXlvdXQoKTsKKworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgZXhw
cmVzc2lvbjogIigiICsgdGhpcy5fanNvbiArICIpIiwKKyAgICAgICAgICAgIGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZSwKKyAgICAgICAgICAgIGdlbmVyYXRlUHJl
dmlldzogdHJ1ZSwKKyAgICAgICAgfTsKKyAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlLmlu
dm9rZShvcHRpb25zLCAoZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKSA9PiB7CisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydCghZXJyb3IpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXdh
c1Rocm93bik7CisKKyAgICAgICAgICAgIHRoaXMuX3JlbW90ZU9iamVjdCA9IFdJLlJlbW90ZU9i
amVjdC5mcm9tUGF5bG9hZChyZXN1bHQpOworCisgICAgICAgICAgICBsZXQgb2JqZWN0VHJlZSA9
IG5ldyBXSS5PYmplY3RUcmVlVmlldyh0aGlzLl9yZW1vdGVPYmplY3QpOworICAgICAgICAgICAg
b2JqZWN0VHJlZS5zaG93T25seUpTT04oKTsKKyAgICAgICAgICAgIG9iamVjdFRyZWUuZXhwYW5k
KCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9zcGlubmVyVGltZW91dCkgeworICAgICAgICAg
ICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zcGlubmVyVGltZW91dCk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc3Bpbm5lclRpbWVvdXQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKG9iamVjdFRyZWUuZWxlbWVudCk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGF0dGFjaGVkKCkKKyAgICB7CisgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7
CisKKyAgICAgICAgaWYgKHRoaXMuX3NwaW5uZXJUaW1lb3V0IHx8IHRoaXMuX3JlbW90ZU9iamVj
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zcGlubmVyVGltZW91dCA9
IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc3Bp
bm5lclRpbWVvdXQpOworCisgICAgICAgICAgICBsZXQgc3Bpbm5lciA9IG5ldyBXSS5JbmRldGVy
bWluYXRlUHJvZ3Jlc3NTcGlubmVyOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHNwaW5uZXIuZWxlbWVudCk7CisKKyAgICAgICAgICAgIHRoaXMuX3NwaW5uZXJUaW1lb3V0
ID0gdW5kZWZpbmVkOworICAgICAgICB9LCAxMDApOworICAgIH0KKworICAgIGNsb3NlZCgpCisg
ICAgeworICAgICAgICBzdXBlci5jbG9zZWQoKTsKKworICAgICAgICBpZiAodGhpcy5fcmVtb3Rl
T2JqZWN0KSB7CisgICAgICAgICAgICB0aGlzLl9yZW1vdGVPYmplY3QucmVsZWFzZSgpOworICAg
ICAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0ID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9K
U09OUmVzb3VyY2VDb250ZW50Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9KU09OUmVzb3VyY2VDb250ZW50Vmlldy5jc3MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE4ODdiMTA5NmVlMTczM2FhNTUwYmZkMDg4ZTcyNTIyOThhM2FlODcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNPTlJlc291cmNlQ29udGVudFZpZXcu
Y3NzCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS5jb250ZW50
LXZpZXcucmVzb3VyY2UuanNvbiB7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBvdmVyZmxvdzog
c2Nyb2xsOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSlNPTlJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OUmVzb3VyY2VDb250ZW50Vmlldy5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAxZWU2OThhNjQxZWYxMTU3MDg1MTVlZDg1Nzc0MzBk
MzdmZDAyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OUmVzb3VyY2VDb250
ZW50Vmlldy5qcworKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1X
SS5KU09OUmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIEpTT05SZXNvdXJjZUNvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuUmVzb3VyY2VDb250ZW50VmlldwotewotICAgIGNvbnN0cnVjdG9yKHJlc291
cmNlKQotICAgIHsKLSAgICAgICAgc3VwZXIocmVzb3VyY2UsICJqc29uIik7Ci0KLSAgICAgICAg
dGhpcy5fcmVtb3RlT2JqZWN0ID0gbnVsbDsKLSAgICB9Ci0KLSAgICAvLyBTdGF0aWMKLQotICAg
IHN0YXRpYyBjdXN0b21Db250ZW50Vmlld0Rpc3BsYXlOYW1lKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBXSS5VSVN0cmluZygiSlNPTiIpOwotICAgIH0KLQotICAgIC8vIFByb3RlY3RlZAotCi0g
ICAgY29udGVudEF2YWlsYWJsZShjb250ZW50LCBiYXNlNjRFbmNvZGVkKQotICAgIHsKLSAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgIEpTT04ucGFyc2UoY29udGVudCk7Ci0gICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoV0kuVUlTdHJpbmcoIlVuYWJs
ZSB0byBwYXJzZSBhcyBKU09OOiAlcyIpLmZvcm1hdChlLm1lc3NhZ2UpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAg
ICAgICBleHByZXNzaW9uOiAiKCIgKyBjb250ZW50ICsgIikiLAotICAgICAgICAgICAgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJOiBmYWxzZSwKLSAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZTogdHJ1ZSwKLSAgICAgICAgICAgIGNvbnRleHRJZDogdW5kZWZpbmVk
LAotICAgICAgICAgICAgcmV0dXJuQnlWYWx1ZTogZmFsc2UsCi0gICAgICAgICAgICBnZW5lcmF0
ZVByZXZpZXc6IHRydWUsCi0gICAgICAgIH07Ci0gICAgICAgIHRoaXMucmVzb3VyY2UudGFyZ2V0
LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uob3B0aW9ucywgKGVycm9yLCByZXN1bHQsIHdh
c1Rocm93bikgPT4gewotICAgICAgICAgICAgaWYgKGVycm9yIHx8IHdhc1Rocm93bikgewotICAg
ICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoV0kuVUlTdHJpbmcoIlVuYWJsZSB0byBwYXJz
ZSBhcyBKU09OOiAlcyIpLmZvcm1hdChyZXN1bHQuZGVzY3JpcHRpb24pKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMucmVtb3ZlTG9h
ZGluZ0luZGljYXRvcigpOwotCi0gICAgICAgICAgICB0aGlzLl9yZW1vdGVPYmplY3QgPSBXSS5S
ZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0LCB0aGlzLnJlc291cmNlLnRhcmdldCk7Ci0K
LSAgICAgICAgICAgIGxldCBvYmplY3RUcmVlID0gbmV3IFdJLk9iamVjdFRyZWVWaWV3KHRoaXMu
X3JlbW90ZU9iamVjdCk7Ci0gICAgICAgICAgICBvYmplY3RUcmVlLnNob3dPbmx5SlNPTigpOwot
ICAgICAgICAgICAgb2JqZWN0VHJlZS5leHBhbmQoKTsKLQotICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKG9iamVjdFRyZWUuZWxlbWVudCk7Ci0gICAgICAgIH0sIHRoaXMucmVz
b3VyY2UudGFyZ2V0KTsKLSAgICB9Ci0KLSAgICBjbG9zZWQoKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3JlbW90ZU9iamVjdCkgewotICAgICAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0LnJl
bGVhc2UoKTsKLSAgICAgICAgICAgIHRoaXMuX3JlbW90ZU9iamVjdCA9IG51bGw7Ci0gICAgICAg
IH0KLSAgICB9Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5q
cwppbmRleCA4NDdhOTNkMTJmMTk1OTMzNmRkYjE1ZGM5ZWM1MTYwODc3YzUyNTNlLi4wNjRjNDc2
NDBjNzljMzYxMDgwODYwNWZhYWUwZmQ1ZTg4OThiMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcwpAQCAtMzUsNyArMzUsOSBAQCBXSS5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ2x1cwogCiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVBhdGhDb21wb25lbnQoZGlzcGxh
eU5hbWUsIGNsYXNzTmFtZSwgaWRlbnRpZmllcikKICAgICAgICAgewotICAgICAgICAgICAgbGV0
IHBhdGhDb21wb25lbnQgPSBuZXcgV0kuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudChkaXNwbGF5
TmFtZSwgY2xhc3NOYW1lLCBpZGVudGlmaWVyLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBj
b25zdCB0ZXh0T25seSA9IGZhbHNlOworICAgICAgICAgICAgY29uc3Qgc2hvd1NlbGVjdG9yQXJy
b3dzID0gdHJ1ZTsKKyAgICAgICAgICAgIGxldCBwYXRoQ29tcG9uZW50ID0gbmV3IFdJLkhpZXJh
cmNoaWNhbFBhdGhDb21wb25lbnQoZGlzcGxheU5hbWUsIGNsYXNzTmFtZSwgaWRlbnRpZmllciwg
dGV4dE9ubHksIHNob3dTZWxlY3RvckFycm93cyk7CiAgICAgICAgICAgICBwYXRoQ29tcG9uZW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5FdmVudC5TaWJs
aW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7CiAgICAg
ICAgICAgICBwYXRoQ29tcG9uZW50LmNvbXBhcmlzb25EYXRhID0gcmVzb3VyY2U7CiAgICAgICAg
ICAgICByZXR1cm4gcGF0aENvbXBvbmVudDsKQEAgLTQzLDMyICs0NSw0NyBAQCBXSS5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ2x1cwogCiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldyA9IG51bGw7
CiAgICAgICAgIHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXcgPSBudWxsOworICAgICAgICB0aGlz
Ll9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXcgPSBudWxsOworICAgICAgICB0aGlzLl9jdXN0b21S
ZXF1ZXN0Q29udGVudFZpZXdJbml0aWFsaXplciA9IG51bGw7CiAgICAgICAgIHRoaXMuX2N1c3Rv
bVJlc3BvbnNlQ29udGVudFZpZXcgPSBudWxsOwotICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25z
ZUNvbnRlbnRWaWV3Q29uc3RydWN0b3IgPSBudWxsOworICAgICAgICB0aGlzLl9jdXN0b21SZXNw
b25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6ZXIgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX3JlcXVl
c3RQYXRoQ29tcG9uZW50ID0gY3JlYXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdJLlVJU3Ry
aW5nKCJSZXF1ZXN0IiksIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJY29u
U3R5bGVDbGFzc05hbWUsIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVu
dGlmaWVyKTsKKyAgICAgICAgdGhpcy5fY3VzdG9tUmVxdWVzdFBhdGhDb21wb25lbnQgPSBjcmVh
dGVQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgV0kuVUlTdHJpbmcoIkN1c3RvbSIpLCBXSS5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWNvblN0eWxlQ2xhc3NOYW1lLCBXSS5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAg
IHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudCA9IGNyZWF0ZVBhdGhDb21wb25lbnQuY2FsbCh0
aGlzLCBXSS5VSVN0cmluZygiUmVzcG9uc2UiKSwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZp
ZXcuUmVzcG9uc2VJY29uU3R5bGVDbGFzc05hbWUsIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LlJlc3BvbnNlSWRlbnRpZmllcik7CiAgICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlUGF0
aENvbXBvbmVudCA9IGNyZWF0ZVBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCBXSS5VSVN0cmluZygi
Q3VzdG9tIiksIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWNvblN0eWxl
Q2xhc3NOYW1lLCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXNwb25zZUlk
ZW50aWZpZXIpOwogCiAgICAgICAgIGlmICh0aGlzLl9jYW5TaG93UmVxdWVzdENvbnRlbnRWaWV3
KCkpIHsKICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5n
ID0gdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OwogICAgICAgICAgICAgdGhpcy5fcmVzcG9u
c2VQYXRoQ29tcG9uZW50LnByZXZpb3VzU2libGluZyA9IHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9u
ZW50OworCisgICAgICAgICAgICB0aGlzLl90cnlFbmFibGVDdXN0b21SZXF1ZXN0Q29udGVudFZp
ZXcoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBTaW5jZSBhIGN1c3RvbSByZXNw
b25zZSBjb250ZW50IHZpZXcgbWF5IG9ubHkgYmVjb21lIGF2YWlsYWJsZSBhZnRlciBhIHJlc3Bv
bnNlIGlzIHJlY2VpdmVkCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0
byByZXN0b3JlIC8gcHJlZmVyIHRoZSBjdXN0b20gY29udGVudCB2aWV3LiBGb3IgZXhhbXBsZSBp
ZiB1c2VycwogICAgICAgICAvLyBhbHdheXMgd2FudCB0byBwcmVmZXIgdGhlIEpTT04gdmlldyB0
byB0aGUgbm9ybWFsIFJlc3BvbnNlIHRleHQgdmlldy4KIAotICAgICAgICB0aGlzLl9jdXJyZW50
Q29udGVudFZpZXdTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoInJlc291cmNlLWN1cnJlbnQtdmll
dy0iICsgdGhpcy5fcmVzb3VyY2UudXJsLmhhc2gsIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LlJlc3BvbnNlSWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50Vmll
d1NldHRpbmcgPSBuZXcgV0kuU2V0dGluZygicmVzb3VyY2UtY3VycmVudC12aWV3LSIgKyB0aGlz
Ll9yZXNvdXJjZS51cmwuaGFzaCwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ3VzdG9t
UmVzcG9uc2VJZGVudGlmaWVyKTsKIAogICAgICAgICB0aGlzLl90cnlFbmFibGVDdXN0b21SZXNw
b25zZUNvbnRlbnRWaWV3KCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgcmVz
b3VyY2UoKQorICAgIGdldCByZXNvdXJjZSgpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlOyB9CisK
KyAgICBnZXQgcmVxdWVzdENvbnRlbnRWaWV3KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9yZXNvdXJjZTsKKyAgICAgICAgaWYgKCF0aGlzLl9jYW5TaG93UmVxdWVzdENvbnRlbnRWaWV3
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAodGhpcy5fcmVxdWVz
dENvbnRlbnRWaWV3KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RDb250ZW50Vmll
dzsKKworICAgICAgICB0aGlzLl9yZXF1ZXN0Q29udGVudFZpZXcgPSBuZXcgV0kuVGV4dENvbnRl
bnRWaWV3KHRoaXMuX3Jlc291cmNlLnJlcXVlc3REYXRhIHx8ICIiLCB0aGlzLl9yZXNvdXJjZS5y
ZXF1ZXN0RGF0YUNvbnRlbnRUeXBlKTsKKworICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdENv
bnRlbnRWaWV3OwogICAgIH0KIAogICAgIGdldCByZXNwb25zZUNvbnRlbnRWaWV3KCkKQEAgLTk0
LDE3ICsxMTEsMTcgQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNv
dXJjZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Jlc3BvbnNlQ29udGVudFZpZXc7CiAgICAgfQogCi0gICAgZ2V0IHJlcXVlc3RDb250ZW50
VmlldygpCisgICAgZ2V0IGN1c3RvbVJlcXVlc3RDb250ZW50VmlldygpCiAgICAgewotICAgICAg
ICBpZiAoIXRoaXMuX2NhblNob3dSZXF1ZXN0Q29udGVudFZpZXcoKSkKKyAgICAgICAgaWYgKCF0
aGlzLl9jYW5TaG93Q3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3KCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKIAotICAgICAgICBpZiAodGhpcy5fcmVxdWVzdENvbnRlbnRWaWV3KQotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldzsKKyAgICAgICAgaWYgKCF0aGlz
Ll9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXcpIHsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbVJl
cXVlc3RDb250ZW50VmlldyA9IHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50Vmlld0luaXRpYWxp
emVyKCk7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXdJbml0aWFs
aXplciA9IG51bGw7CisgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9yZXF1ZXN0Q29udGVudFZp
ZXcgPSBuZXcgV0kuVGV4dENvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlLnJlcXVlc3REYXRhIHx8
ICIiLCB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBlKTsKLQotICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVxdWVzdENvbnRlbnRWaWV3OworICAgICAgICByZXR1cm4gdGhpcy5fY3Vz
dG9tUmVxdWVzdENvbnRlbnRWaWV3OwogICAgIH0KIAogICAgIGdldCBjdXN0b21SZXNwb25zZUNv
bnRlbnRWaWV3KCkKQEAgLTExMiw4ICsxMjksMTAgQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMK
ICAgICAgICAgaWYgKCF0aGlzLl9jYW5TaG93Q3VzdG9tUmVzcG9uc2VDb250ZW50VmlldygpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21SZXNw
b25zZUNvbnRlbnRWaWV3KQotICAgICAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50
VmlldyA9IG5ldyB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3Q29uc3RydWN0b3IodGhp
cy5fcmVzb3VyY2UpOworICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZp
ZXcpIHsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcgPSB0aGlz
Ll9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6ZXIoKTsKKyAgICAgICAgICAgIHRo
aXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdJbml0aWFsaXplciA9IG51bGw7CisgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50VmlldzsKICAg
ICB9CkBAIC0xNDksMTEgKzE2OCw2IEBAIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0g
Y2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5DbHVzCiAgICAgICAg
IHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBzYXZlVG9D
b29raWUoY29va2llKQotICAgIHsKLSAgICAgICAgY29va2llW1dJLlJlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmllckNvb2tpZUtleV0gPSB0aGlzLl9jdXJyZW50
Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlOwotICAgIH0KLQogICAgIHJlc3RvcmVGcm9tQ29va2ll
KGNvb2tpZSkKICAgICB7CiAgICAgICAgIGxldCBjb250ZW50VmlldyA9IHRoaXMuX3Nob3dDb250
ZW50Vmlld0ZvcklkZW50aWZpZXIoY29va2llW1dJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LkNvbnRlbnRWaWV3SWRlbnRpZmllckNvb2tpZUtleV0pOwpAQCAtMTY1LDcgKzE3OSw3IEBAIFdJ
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5DbHVzCiAgICAgewogICAgICAgICB0aGlzLl9zaG93bkluaXRpYWxD
b250ZW50ID0gdHJ1ZTsKIAotICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9y
SWRlbnRpZmllcihXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWRlbnRpZmll
cik7CisgICAgICAgIHJldHVybiB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKFdJ
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlcXVlc3RJZGVudGlmaWVyKTsKICAg
ICB9CiAKICAgICBzaG93UmVzcG9uc2UocG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxl
Y3QsIGZvcmNlVW5mb3JtYXR0ZWQpCkBAIC0xOTgsOSArMjEyLDE0IEBAIFdJLlJlc291cmNlQ2x1
c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5DbHVzCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIF9jYW5TaG93Q3Vz
dG9tUmVxdWVzdENvbnRlbnRWaWV3KCkKKyAgICB7CisgICAgICAgIHJldHVybiAhISh0aGlzLl9j
dXN0b21SZXF1ZXN0Q29udGVudFZpZXcgfHwgdGhpcy5fY3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3
SW5pdGlhbGl6ZXIpOworICAgIH0KKwogICAgIF9jYW5TaG93Q3VzdG9tUmVzcG9uc2VDb250ZW50
VmlldygpCiAgICAgewotICAgICAgICByZXR1cm4gISF0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRl
bnRWaWV3Q29uc3RydWN0b3I7CisgICAgICAgIHJldHVybiAhISh0aGlzLl9jdXN0b21SZXNwb25z
ZUNvbnRlbnRWaWV3IHx8IHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdJbml0aWFsaXpl
cik7CiAgICAgfQogCiAgICAgX2NvbnRlbnRWaWV3Rm9yUmVzb3VyY2VUeXBlKHR5cGUpCkBAIC0y
MTIsNyArMjMxLDcgQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNv
dXJjZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgICAgIHJldHVy
biBuZXcgV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcodGhpcy5fcmVzb3VyY2UpOwogCiAgICAg
ICAgIGNhc2UgV0kuUmVzb3VyY2UuVHlwZS5JbWFnZToKLSAgICAgICAgICAgIGlmICh0aGlzLl9y
ZXNvdXJjZS5taW1lVHlwZUNvbXBvbmVudHMudHlwZSA9PT0gImltYWdlL3N2Zyt4bWwiKQorICAg
ICAgICAgICAgaWYgKFdJLmZpbGVFeHRlbnNpb25Gb3JNSU1FVHlwZSh0aGlzLl9yZXNvdXJjZS5t
aW1lVHlwZSkgPT09ICJzdmciKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuU1ZHSW1h
Z2VSZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldyh0aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IFdJLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldyh0aGlzLl9yZXNvdXJjZSk7
CiAKQEAgLTIzNiw2ICsyNTUsOCBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNs
YXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50OwogICAgICAgICBpZiAoY29udGVu
dFZpZXcgPT09IHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OworICAgICAgICBpZiAoY29udGVudFZpZXcgPT09
IHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50VmlldykKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jdXN0b21SZXF1ZXN0UGF0aENvbXBvbmVudDsKICAgICAgICAgaWYgKGNvbnRlbnRWaWV3ID09
PSB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2N1c3RvbVJlc3BvbnNlUGF0aENvbXBvbmVudDsKICAgICAgICAgY29uc29sZS5lcnJvcigi
VW5rbm93biBjb250ZW50Vmlldy4iKTsKQEAgLTI1MSw2ICsyNzIsOCBAQCBXSS5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ2x1cwogICAgICAgICAgICAgcmV0dXJuIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LlJlcXVlc3RJZGVudGlmaWVyOwogICAgICAgICBpZiAoY29udGVudFZpZXcgPT09IHRoaXMu
X3Jlc3BvbnNlQ29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4gV0kuUmVzb3VyY2VDbHVz
dGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyOworICAgICAgICBpZiAoY29udGVudFZp
ZXcgPT09IHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50VmlldykKKyAgICAgICAgICAgIHJldHVy
biBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXF1ZXN0SWRlbnRpZmllcjsK
ICAgICAgICAgaWYgKGNvbnRlbnRWaWV3ID09PSB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRW
aWV3KQogICAgICAgICAgICAgcmV0dXJuIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1
c3RvbVJlc3BvbnNlSWRlbnRpZmllcjsKICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBj
b250ZW50Vmlldy4iKTsKQEAgLTI2MiwyMCArMjg1LDI3IEBAIFdJLlJlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
bHVzCiAgICAgICAgIGxldCBjb250ZW50Vmlld1RvU2hvdyA9IG51bGw7CiAKICAgICAgICAgc3dp
dGNoIChpZGVudGlmaWVyKSB7CisgICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcuQ3VzdG9tUmVxdWVzdElkZW50aWZpZXI6CisgICAgICAgICAgICBjb250ZW50Vmlld1Rv
U2hvdyA9IHRoaXMuY3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3OworICAgICAgICAgICAgaWYgKGNv
bnRlbnRWaWV3VG9TaG93KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8g
ZmFsbHRocm91Z2gKICAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5S
ZXF1ZXN0SWRlbnRpZmllcjoKICAgICAgICAgICAgIGNvbnRlbnRWaWV3VG9TaG93ID0gdGhpcy5y
ZXF1ZXN0Q29udGVudFZpZXc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXSS5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXI6Ci0gICAgICAgICAg
ICBjb250ZW50Vmlld1RvU2hvdyA9IHRoaXMucmVzcG9uc2VDb250ZW50VmlldzsKLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGNvbnRlbnRWaWV3VG9TaG93KQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gZmFsbHRocm91Z2gKICAgICAgICAgY2FzZSBX
SS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXNwb25zZUlkZW50aWZpZXI6CiAg
ICAgICAgICAgICBjb250ZW50Vmlld1RvU2hvdyA9IHRoaXMuY3VzdG9tUmVzcG9uc2VDb250ZW50
VmlldzsKKyAgICAgICAgICAgIGlmIChjb250ZW50Vmlld1RvU2hvdykKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgIGNhc2UgV0kuUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyOgorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgY29udGVudFZpZXdUb1Nob3cgPSB0aGlzLnJlc3BvbnNlQ29udGVu
dFZpZXc7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghY29u
dGVudFZpZXdUb1Nob3cpCi0gICAgICAgICAgICBjb250ZW50Vmlld1RvU2hvdyA9IHRoaXMucmVz
cG9uc2VDb250ZW50VmlldzsKLQogICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlld1Rv
U2hvdyk7CiAKICAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZSA9
IHRoaXMuX2lkZW50aWZpZXJGb3JDb250ZW50Vmlldyhjb250ZW50Vmlld1RvU2hvdyk7CkBAIC0z
MTcsMzIgKzM0Nyw1NiBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogICAgICAgICB9CiAgICAg
fQogCisgICAgX3RyeUVuYWJsZUN1c3RvbVJlcXVlc3RDb250ZW50VmlldygpCisgICAgeworICAg
ICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXdJbml0aWFsaXplciA9IG51bGw7Cisg
ICAgICAgIGxldCBkaXNwbGF5TmFtZSA9IG51bGw7CisKKyAgICAgICAgaWYgKHRoaXMuX3Jlc291
cmNlLnJlcXVlc3REYXRhLmlzSlNPTigpKSB7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21SZXF1
ZXN0Q29udGVudFZpZXdJbml0aWFsaXplciA9ICgpID0+IG5ldyBXSS5KU09OQ29udGVudFZpZXco
dGhpcy5fcmVzb3VyY2UucmVxdWVzdERhdGEsIHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgICAg
IGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIlJlcXVlc3QgKEpTT04pIik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50Vmlld0luaXRpYWxpemVy
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2N1c3RvbVJlcXVlc3RQYXRo
Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgICAgICAgIHRoaXMuX2N1c3Rv
bVJlcXVlc3RQYXRoQ29tcG9uZW50LnByZXZpb3VzU2libGluZyA9IHRoaXMuX3JlcXVlc3RQYXRo
Q29tcG9uZW50OworICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0UGF0aENvbXBvbmVudC5uZXh0
U2libGluZyA9IHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudDsKKyAgICAgICAgdGhpcy5fcmVx
dWVzdFBhdGhDb21wb25lbnQubmV4dFNpYmxpbmcgPSB0aGlzLl9jdXN0b21SZXF1ZXN0UGF0aENv
bXBvbmVudDsKKyAgICAgICAgdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50LnByZXZpb3VzU2li
bGluZyA9IHRoaXMuX2N1c3RvbVJlcXVlc3RQYXRoQ29tcG9uZW50OworICAgIH0KKwogICAgIF90
cnlFbmFibGVDdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3KCkKICAgICB7CisgICAgICAgIGlmICh0
aGlzLl9jYW5TaG93Q3VzdG9tUmVzcG9uc2VDb250ZW50VmlldygpKQorICAgICAgICAgICAgcmV0
dXJuOworCiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UuaGFzUmVzcG9uc2UoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3
Q29uc3RydWN0b3IgPSB0aGlzLl9jdXN0b21Db250ZW50Vmlld0NvbnN0cnVjdG9yRm9yUmVzb3Vy
Y2UodGhpcy5fcmVzb3VyY2UpOwotICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbVJlc3BvbnNlQ29u
dGVudFZpZXdDb25zdHJ1Y3RvcikKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2UucmVxdWVzdENvbnRlbnQoKQorICAgICAgICAudGhlbigoe2Vycm9yLCBjb250ZW50
fSkgPT4geworICAgICAgICAgICAgaWYgKGVycm9yIHx8IHRoaXMuX2NhblNob3dDdXN0b21SZXNw
b25zZUNvbnRlbnRWaWV3KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdDb25zdHJ1Y3Rvci5j
dXN0b21Db250ZW50Vmlld0Rpc3BsYXlOYW1lLCAiQ3VzdG9tIFJlc3BvbnNlIENvbnRlbnRWaWV3
cyBzaG91bGQgaGF2ZSBhIHN0YXRpYyBjdXN0b21Db250ZW50Vmlld0Rpc3BsYXlOYW1lIG1ldGhv
ZC4iLCB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3Q29uc3RydWN0b3IpOworICAgICAg
ICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50Vmlld0luaXRpYWxpemVyID0gbnVsbDsK
KyAgICAgICAgICAgIGxldCBkaXNwbGF5TmFtZSA9IG51bGw7CiAKLSAgICAgICAgdGhpcy5fcmVz
cG9uc2VQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gdGhpcy5fY3VzdG9tUmVzcG9uc2VQYXRo
Q29tcG9uZW50OwotICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZVBhdGhDb21wb25lbnQucHJl
dmlvdXNTaWJsaW5nID0gdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OwotICAgICAgICB0aGlz
Ll9jdXN0b21SZXNwb25zZVBhdGhDb21wb25lbnQuZGlzcGxheU5hbWUgPSB0aGlzLl9jdXN0b21S
ZXNwb25zZUNvbnRlbnRWaWV3Q29uc3RydWN0b3IuY3VzdG9tQ29udGVudFZpZXdEaXNwbGF5TmFt
ZSgpOworICAgICAgICAgICAgaWYgKGNvbnRlbnQuaXNKU09OKCkpIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6ZXIgPSAoKSA9PiBuZXcg
V0kuSlNPTkNvbnRlbnRWaWV3KGNvbnRlbnQsIHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5nKCJSZXNwb25zZSAoSlNPTikiKTsKKyAgICAg
ICAgICAgIH0KIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250
ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7Ci0gICAgfQor
ICAgICAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6
ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgX2N1c3RvbUNvbnRlbnRWaWV3Q29u
c3RydWN0b3JGb3JSZXNvdXJjZShyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGxldCBtaW1lVHlw
ZSA9IHRoaXMuX3Jlc291cmNlLm1pbWVUeXBlOwotICAgICAgICBsZXQgZmlsZUV4dGVuc2lvbiA9
IFdJLmZpbGVFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7Ci0gICAgICAgIGlmIChmaWxl
RXh0ZW5zaW9uID09PSAianNvbiIpCi0gICAgICAgICAgICByZXR1cm4gV0kuSlNPTlJlc291cmNl
Q29udGVudFZpZXc7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZVBhdGhDb21wb25l
bnQuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbVJl
c3BvbnNlUGF0aENvbXBvbmVudC5wcmV2aW91c1NpYmxpbmcgPSB0aGlzLl9yZXNwb25zZVBhdGhD
b21wb25lbnQ7CisgICAgICAgICAgICB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQubmV4dFNp
YmxpbmcgPSB0aGlzLl9jdXN0b21SZXNwb25zZVBhdGhDb21wb25lbnQ7CiAKLSAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5D
b250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7CisgICAg
ICAgIH0pOwogICAgIH0KIH07CiAKQEAgLTM1Miw0ICs0MDYsNSBAQCBXSS5SZXNvdXJjZUNsdXN0
ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWNvblN0eWxlQ2xhc3NOYW1lID0gInJlcXVlc3QtaWNvbiI7
CiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25TdHlsZUNsYXNzTmFt
ZSA9ICJyZXNwb25zZS1pY29uIjsKIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVl
c3RJZGVudGlmaWVyID0gInJlcXVlc3QiOwogV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcu
UmVzcG9uc2VJZGVudGlmaWVyID0gInJlc3BvbnNlIjsKK1dJLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LkN1c3RvbVJlcXVlc3RJZGVudGlmaWVyID0gImN1c3RvbS1yZXF1ZXN0IjsKIFdJLlJl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlc3BvbnNlSWRlbnRpZmllciA9ICJjdXN0
b20tcmVzcG9uc2UiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvV2ViU29ja2V0RGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0RGF0YUdyaWROb2RlLmpzCmluZGV4IDFh
NDA2NmVlMmFiNjRjOWZhZTQzNjllYTU3YmRlNDNhODgzZjhkNjIuLjJmOTA0YzZkMTg5MmE1MjA1
MDQxMWVmYjYyZDFkZTk2MjhkOTQyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldERhdGFHcmlkTm9kZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJTb2NrZXREYXRhR3JpZE5v
ZGUuanMKQEAgLTY2LDExICs2Niw3IEBAIFdJLldlYlNvY2tldERhdGFHcmlkTm9kZSA9IGNsYXNz
IFdlYlNvY2tldERhdGFHcmlkTm9kZSBleHRlbmRzIFdJLkRhdGFHcmlkTm9kZQogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGlzIHVubmVjZXNzYXJ5LCBhcyB3ZSBqdXN0
IG5lZWQgdGhlIHN0cmluZyB0byBldmFsdWF0ZS4KLSAgICAgICAgICAgICAgICAvLyBXZSBzdGls
bCBuZWVkIHRvIGV4ZWN1dGUgdGhpcywgaG93ZXZlciwgaW4gb3JkZXIgdG8gdHJ5LWNhdGNoIGlm
IGl0IGZhaWxzLgotICAgICAgICAgICAgICAgIEpTT04ucGFyc2UodGhpcy5fZGF0YS5kYXRhKTsK
LQorICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGEuZGF0YS5pc0pTT04oKSkgewogICAgICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkxvZyBGcmFtZSBWYWx1
ZSIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3RHcm91cDogV0kuUnVudGltZU1hbmFnZXIuQ29uc29s
ZU9iamVjdEdyb3VwLApAQCAtODIsNyArNzgsNyBAQCBXSS5XZWJTb2NrZXREYXRhR3JpZE5vZGUg
PSBjbGFzcyBXZWJTb2NrZXREYXRhR3JpZE5vZGUgZXh0ZW5kcyBXSS5EYXRhR3JpZE5vZGUKICAg
ICAgICAgICAgICAgICAgICAgbGV0IGV4cHJlc3Npb24gPSAiKCIgKyB0aGlzLl9kYXRhLmRhdGEg
KyAiKSI7CiAgICAgICAgICAgICAgICAgICAgIFdJLnJ1bnRpbWVNYW5hZ2VyLmV2YWx1YXRlSW5J
bnNwZWN0ZWRXaW5kb3coZXhwcmVzc2lvbiwgb3B0aW9ucywgbG9nUmVzdWx0KTsKICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375857</attachid>
            <date>2019-08-08 16:38:17 -0700</date>
            <delta_ts>2019-08-09 14:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122898-20190808163816.patch</filename>
            <type>text/plain</type>
            <size>35068</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDA2NjM3YTJhYTBmMjIzYTJjZGZlODA4M2RjOTQ1
ZTdkNmM2NWJmZTkuLmMzNjBlM2IzZWY4YjllYjY1ZjkxZGU2NWViYzlhNjQ0NTMxYTExY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTA4LTA4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChTYWZh
cmkgNik6IFdlYiBJbnNwZWN0b3I6IEpTT04gbWF5IG5vdCBiZSBwcmV0dHkgcHJpbnRlZCBpZiBz
ZXJ2ZWQgYXMgdGV4dC9odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjI4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1MjQxNDE5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIHRoZSBy
ZXF1ZXN0L3Jlc3BvbnNlIGRhdGEgdG8gc2VlIGlmIGl0J3MgSlNPTiBwYXJzYWJsZS4gSWYgc28s
IGFsbG93IHRoZSB1c2VyIHRvIGVsZWN0CisgICAgICAgIHRvIHZpZXcgdGhlIHJlcXVlc3QvcmVz
cG9uc2UgYXMgYSBKU09OIHByZXZpZXcgaW5zdGVhZCBvZiByYXcgKG9yIHByZXR0eSBwcmludGVk
KSB0ZXh0LgorCisgICAgICAgIFByZWZlciB0aGUgSlNPTiB2aWV3IHdoZXJldmVyIHBvc3NpYmxl
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgcmVxdWVzdENv
bnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5nZXQgY3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3KTogQWRkZWQuCisgICAgICAgIChXSS5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IGN1c3RvbVJlc3BvbnNlQ29u
dGVudFZpZXcpOgorICAgICAgICAoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90
eXBlLmdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXSS5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd1JlcXVlc3QpOgorICAgICAgICAoV0kuUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLl9jYW5TaG93Q3VzdG9tUmVxdWVzdENv
bnRlbnRWaWV3KTogQWRkZWQuCisgICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5wcm90b3R5cGUuX2NhblNob3dDdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3KToKKyAgICAgICAg
KFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudFZpZXdGb3JS
ZXNvdXJjZVR5cGUpOgorICAgICAgICAoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJv
dG90eXBlLl9wYXRoQ29tcG9uZW50Rm9yQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLl9pZGVudGlmaWVyRm9yQ29udGVudFZpZXcp
OgorICAgICAgICAoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLl9zaG93
Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3LnByb3RvdHlwZS5fdHJ5RW5hYmxlQ3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3KTog
QWRkZWQuCisgICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUu
X3RyeUVuYWJsZUN1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLnNhdmVUb0Nvb2tpZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuX2N1c3RvbUNv
bnRlbnRWaWV3Q29uc3RydWN0b3JGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIFNpbmNl
IHRoZSBjdXJyZW50IHZpZXcgaXMgYWxyZWFkeSBzYXZlZCBpbiBhIGBXSS5TZXR0aW5nYCwgdGhl
cmUncyBubyBuZWVkIHRvIHNhdmUgdGhhdAorICAgICAgICBzdGF0ZSB0byBhIGNvb2tpZSwgYXMg
aXQnbGwgYmUgcmVzdG9yZWQgZWxzZXdoZXJlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9C
YXNlL01haW4uanM6CisgICAgICAgIChXSS5zaG93UmVzb3VyY2VSZXF1ZXN0KToKKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvSlNPTkNvbnRlbnRWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkpTT05Db250ZW50Vmll
dyk6CisgICAgICAgIChXSS5KU09OQ29udGVudFZpZXcucHJvdG90eXBlLmluaXRpYWxMYXlvdXQp
OgorICAgICAgICAoV0kuSlNPTkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hlZCk6CisgICAg
ICAgIChXSS5KU09OQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9KU09OQ29udGVudFZpZXcuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5j
b250ZW50LXZpZXcuanNvbik6CisgICAgICAgICogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSlNPTlJlc291cmNlQ29udGVudFZpZXcuanM6IERlbGV0ZWQuCisgICAg
ICAgICogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNPTlJlc291
cmNlQ29udGVudFZpZXcuY3NzOiBEZWxldGVkLgorICAgICAgICBDcmVhdGUgYSBtb3JlIGdlbmVy
aWMgY29udGVudCB2aWV3IHRoYXQgc2hvd3MgYSBwcmV2aWV3IGZvciB0aGUgZ2l2ZW4gSlNPTiBw
YXJzYWJsZSBzdHJpbmcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVz
LmpzOgorICAgICAgICAoU3RyaW5nLnByb3RvdHlwZS5pc0pTT04pOiBBZGRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldERhdGFHcmlkTm9kZS5qczoKKyAgICAgICAg
KFdJLldlYlNvY2tldERhdGFHcmlkTm9kZS5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVt
cyk6CisgICAgICAgIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEgc3RyaW5nIGlz
IEpTT04gcGFyc2FibGUuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanM6CisKIDIwMTktMDgtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBjb25zdHJ1Y3Rpb24gb2YgYFdJLkV2ZW50QnJlYWtwb2lu
dGAgYWZ0ZXIgcjI0ODIwMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggOTQx
NjNlM2FjNGVlMjg3NGY0ZjBlMDgyODZjMTE3MTc4NGI1ZmJlMy4uYTRhODMxN2YwOTU2YjQwMGY1
MWIzZmUyNzJlNjA2YTEwOTRiY2NiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
CkBAIC02MTUsNyArNjE1LDYgQEAgbG9jYWxpemVkU3RyaW5nc1siSW52ZXJ0ZWQiXSA9ICJJbnZl
cnRlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJbnZva2UgZ2V0dGVyIl0gPSAiSW52b2tlIGdldHRl
ciI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJKUDIiXSA9ICJKUDIiOwogbG9jYWxpemVkU3RyaW5nc1si
SlBFRyJdID0gIkpQRUciOwotbG9jYWxpemVkU3RyaW5nc1siSlNPTiJdID0gIkpTT04iOwogbG9j
YWxpemVkU3RyaW5nc1siSmF2YVNjcmlwdCJdID0gIkphdmFTY3JpcHQiOwogbG9jYWxpemVkU3Ry
aW5nc1siSmF2YVNjcmlwdCAmIEV2ZW50cyJdID0gIkphdmFTY3JpcHQgJiBFdmVudHMiOwogbG9j
YWxpemVkU3RyaW5nc1siSmF2YVNjcmlwdCBBbGxvY2F0aW9ucyJdID0gIkphdmFTY3JpcHQgQWxs
b2NhdGlvbnMiOwpAQCAtODY5LDYgKzg2OCw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlJlcGVhdGlu
ZyBMaW5lYXIgR3JhZGllbnQiXSA9ICJSZXBlYXRpbmcgTGluZWFyIEdyYWRpZW50IjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlJlcGVhdGluZyBSYWRpYWwgR3JhZGllbnQiXSA9ICJSZXBlYXRpbmcgUmFk
aWFsIEdyYWRpZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcXVlc3QiXSA9ICJSZXF1ZXN0IjsK
IGxvY2FsaXplZFN0cmluZ3NbIlJlcXVlc3QgJiBSZXNwb25zZSJdID0gIlJlcXVlc3QgJiBSZXNw
b25zZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0IChKU09OKSJdID0gIlJlcXVlc3QgKEpT
T04pIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcXVlc3QgQ29va2llcyJdID0gIlJlcXVlc3QgQ29v
a2llcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0IERhdGEiXSA9ICJSZXF1ZXN0IERhdGEi
OwogbG9jYWxpemVkU3RyaW5nc1siUmVxdWVzdCBIZWFkZXJzIl0gPSAiUmVxdWVzdCBIZWFkZXJz
IjsKQEAgLTg4NSw2ICs4ODUsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSB3YXMgbG9h
ZGVkIHdpdGggdGhlIFx1MjAxQ2RhdGFcdTIwMUQgc2NoZW1lLiJdID0gIlJlcwogbG9jYWxpemVk
U3RyaW5nc1siUmVzb3VyY2Ugd2FzIHNlcnZlZCBmcm9tIHRoZSBjYWNoZS4iXSA9ICJSZXNvdXJj
ZSB3YXMgc2VydmVkIGZyb20gdGhlIGNhY2hlLiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJj
ZXMiXSA9ICJSZXNvdXJjZXMiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzcG9uc2UiXSA9ICJSZXNw
b25zZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJSZXNwb25zZSAoSlNPTikiXSA9ICJSZXNwb25zZSAo
SlNPTikiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzcG9uc2UgQ29va2llcyJdID0gIlJlc3BvbnNl
IENvb2tpZXMiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzcG9uc2UgSGVhZGVycyJdID0gIlJlc3Bv
bnNlIEhlYWRlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzcG9uc2U6Il0gPSAiUmVzcG9uc2U6
IjsKQEAgLTExNzUsNyArMTE3Niw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIlR5cGUgaW5mb3JtYXRp
b24gZm9yIHZhcmlhYmxlOiAlcyJdID0gIlR5cGUgaW5mb3JtYXRpb24gZm9yIHZhCiBsb2NhbGl6
ZWRTdHJpbmdzWyJVUkwiXSA9ICJVUkwiOwogbG9jYWxpemVkU3RyaW5nc1siVVJMIEJyZWFrcG9p
bnRcdTIwMjYiXSA9ICJVUkwgQnJlYWtwb2ludFx1MjAyNiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJV
bmFibGUgdG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVydHkgZnJvbSByb290Il0gPSAiVW5hYmxl
IHRvIGRldGVybWluZSBwYXRoIHRvIHByb3BlcnR5IGZyb20gcm9vdCI7Ci1sb2NhbGl6ZWRTdHJp
bmdzWyJVbmFibGUgdG8gcGFyc2UgYXMgSlNPTjogJXMiXSA9ICJVbmFibGUgdG8gcGFyc2UgYXMg
SlNPTjogJXMiOwogbG9jYWxpemVkU3RyaW5nc1siVW5hYmxlIHRvIHNob3cgY2VydGlmaWNhdGUg
Zm9yIFx1MjAxQyVzXHUyMDFEIl0gPSAiVW5hYmxlIHRvIHNob3cgY2VydGlmaWNhdGUgZm9yIFx1
MjAxQyVzXHUyMDFEIjsKIC8qIEJyZWFrIChwYXVzZSkgb24gdW5jYXVnaHQgKHVuaGFuZGxlZCkg
ZXhjZXB0aW9ucyAqLwogbG9jYWxpemVkU3RyaW5nc1siVW5jYXVnaHQgRXhjZXB0aW9ucyJdID0g
IlVuY2F1Z2h0IEV4Y2VwdGlvbnMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDZkNmM0MjYyZTMxNzA5YzE2OTIwZWU0NGM3YWQ3
NjBjM2I1NWUzNTYuLjAzZGNiMTU0YmUwY2M4MjJkZjA0NjQxMzljMDRkYWRkMDE0Nzk2ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMK
QEAgLTE0MDUsNyArMTQwNSw3IEBAIFdJLnNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29k
ZVRleHRSYW5nZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVUZXh0UmFuZ2UsIG9wCiAKIFdJLnNob3dS
ZXNvdXJjZVJlcXVlc3QgPSBmdW5jdGlvbihyZXNvdXJjZSwgb3B0aW9ucyA9IHt9KQogewotICAg
IFdJLnNob3dSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZSwge1tXSS5SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJDb29raWVLZXldOiBXSS5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWRlbnRpZmllcn0sIG9wdGlvbnMpOworICAgIFdJLnNo
b3dSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZSwge1tXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50
Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJDb29raWVLZXldOiBXSS5SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5DdXN0b21SZXF1ZXN0SWRlbnRpZmllcn0sIG9wdGlvbnMpOwogfTsKIAogV0ku
ZGVidWdnZXJUb2dnbGVCcmVha3BvaW50cyA9IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwppbmRl
eCA1Njc0NGZiMDgyZGY4ZGE0OTZlY2JkYjM4YzliNjkxYWMxNWIxYmEyLi5hODZjODY3NjBiZTgw
ZjMzNjM2MjE5ZmY5MGYwNzZhMDdjYWQ2MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwpAQCAtNzM0LDYgKzczNCwx
OCBAQCBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgImlzVXBwZXJDYXNl
IiwKICAgICB9CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUs
ICJpc0pTT04iLAoreworICAgIHZhbHVlKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBKU09OLnBhcnNlKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0gY2F0Y2ggeyB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9KTsKKwogT2JqZWN0
LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJ0cnVuY2F0ZVN0YXJ0IiwKIHsKICAg
ICB2YWx1ZShtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKaW5kZXggNWY4Y2U2ZDgwMjIxMzA2NzkxNjk4M2ExODA4YmI4MTJmYzc0YWNh
My4uNWIwYjA2NDkyMGNjZDZjNDJjYmZiZjIwMjY2N2ZlMzhlYmYzNzE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMTIzLDcgKzEyMyw3
IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9JbmxpbmVTd2F0Y2gu
Y3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lucHV0UG9wb3Zl
ci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSXNzdWVUcmVl
RWxlbWVudC5jc3MiPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSlNP
TlJlc291cmNlQ29udGVudFZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL0pTT05Db250ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVs
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MYXllcnMzRENv
bnRlbnRWaWV3LmNzcyI+CkBAIC03MDYsNyArNzA2LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvSW5saW5lU3dhdGNoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSW5w
dXRQb3BvdmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSXNzdWVUcmVl
RWxlbWVudC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlZpZXdzL0pTT05SZXNvdXJj
ZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvSlNPTkNv
bnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJEZXRh
aWxzU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5
ZXJUcmVlRGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
TGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OQ29udGVudFZpZXcu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNPTkNvbnRl
bnRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzE0NDA5ODA1ZTkzM2IxYjUwMGQ2YjIxZGY5ZTZkZWUw
OTUxYzc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvSlNPTkNvbnRlbnRWaWV3LmNzcwpAQCAtMCwwICsxLDI5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLmNvbnRlbnQtdmlldy5qc29uIHsKKyAgICBwYWRkaW5nOiAxMHB4OworICAgIG92ZXJm
bG93OiBzY3JvbGw7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9KU09OQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9KU09OQ29udGVudFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEwOGVj
OThiZTI1ZjYxOGVhYTMwYjZmOGM3ODY4MTFiNzIyMDcyOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05Db250ZW50Vmlldy5q
cwpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuSlNPTkNvbnRlbnRWaWV3ID0gY2xh
c3MgSlNPTkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKK3sKKyAgICBjb25zdHJ1
Y3Rvcihqc29uLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBqc29uID09PSAic3RyaW5nIiAmJiBqc29uLmlzSlNPTigpKTsKKworICAgICAg
ICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgdGhpcy5fanNvbiA9IGpzb247
CisgICAgICAgIHRoaXMuX3JlbW90ZU9iamVjdCA9IG51bGw7CisgICAgICAgIHRoaXMuX3NwaW5u
ZXJUaW1lb3V0ID0gdW5kZWZpbmVkOworCisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJqc29uIik7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBpbml0aWFsTGF5
b3V0KCkKKyAgICB7CisgICAgICAgIHN1cGVyLmluaXRpYWxMYXlvdXQoKTsKKworICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgZXhwcmVzc2lvbjogIigiICsgdGhpcy5fanNv
biArICIpIiwKKyAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29s
ZTogdHJ1ZSwKKyAgICAgICAgICAgIGdlbmVyYXRlUHJldmlldzogdHJ1ZSwKKyAgICAgICAgfTsK
KyAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlLmludm9rZShvcHRpb25zLCAoZXJyb3IsIHJl
c3VsdCwgd2FzVGhyb3duKSA9PiB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghZXJyb3Ip
OworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXdhc1Rocm93bik7CisKKyAgICAgICAgICAg
IHRoaXMuX3JlbW90ZU9iamVjdCA9IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQp
OworCisgICAgICAgICAgICBsZXQgb2JqZWN0VHJlZSA9IG5ldyBXSS5PYmplY3RUcmVlVmlldyh0
aGlzLl9yZW1vdGVPYmplY3QpOworICAgICAgICAgICAgb2JqZWN0VHJlZS5zaG93T25seUpTT04o
KTsKKyAgICAgICAgICAgIG9iamVjdFRyZWUuZXhwYW5kKCk7CisKKyAgICAgICAgICAgIGlmICh0
aGlzLl9zcGlubmVyVGltZW91dCkgeworICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlz
Ll9zcGlubmVyVGltZW91dCk7CisgICAgICAgICAgICAgICAgdGhpcy5fc3Bpbm5lclRpbWVvdXQg
PSB1bmRlZmluZWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG9i
amVjdFRyZWUuZWxlbWVudCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGF0dGFjaGVkKCkK
KyAgICB7CisgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3Nw
aW5uZXJUaW1lb3V0IHx8IHRoaXMuX3JlbW90ZU9iamVjdCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLl9zcGlubmVyVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4geworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc3Bpbm5lclRpbWVvdXQpOworCisgICAgICAg
ICAgICBsZXQgc3Bpbm5lciA9IG5ldyBXSS5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyOwor
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNwaW5uZXIuZWxlbWVudCk7CisK
KyAgICAgICAgICAgIHRoaXMuX3NwaW5uZXJUaW1lb3V0ID0gdW5kZWZpbmVkOworICAgICAgICB9
LCAxMDApOworICAgIH0KKworICAgIGNsb3NlZCgpCisgICAgeworICAgICAgICBzdXBlci5jbG9z
ZWQoKTsKKworICAgICAgICBpZiAodGhpcy5fcmVtb3RlT2JqZWN0KSB7CisgICAgICAgICAgICB0
aGlzLl9yZW1vdGVPYmplY3QucmVsZWFzZSgpOworICAgICAgICAgICAgdGhpcy5fcmVtb3RlT2Jq
ZWN0ID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OUmVzb3VyY2VDb250ZW50Vmlldy5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OUmVzb3Vy
Y2VDb250ZW50Vmlldy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ODdiMTA5
NmVlMTczM2FhNTUwYmZkMDg4ZTcyNTIyOThhM2FlODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSlNPTlJlc291cmNlQ29udGVudFZpZXcuY3NzCisrKyAvZGV2L251bGwKQEAgLTEs
MjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS5jb250ZW50LXZpZXcucmVzb3VyY2UuanNvbiB7Ci0g
ICAgcGFkZGluZzogMTBweDsKLSAgICBvdmVyZmxvdzogc2Nyb2xsOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNPTlJlc291cmNlQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9K
U09OUmVzb3VyY2VDb250ZW50Vmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAxZWU2OThhNjQxZWYxMTU3MDg1MTVlZDg1Nzc0MzBkMzdmZDAyOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9KU09OUmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgL2Rldi9udWxs
CkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5KU09OUmVzb3VyY2VDb250ZW50Vmll
dyA9IGNsYXNzIEpTT05SZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuUmVzb3VyY2VDb250
ZW50VmlldwotewotICAgIGNvbnN0cnVjdG9yKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgc3Vw
ZXIocmVzb3VyY2UsICJqc29uIik7Ci0KLSAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0ID0gbnVs
bDsKLSAgICB9Ci0KLSAgICAvLyBTdGF0aWMKLQotICAgIHN0YXRpYyBjdXN0b21Db250ZW50Vmll
d0Rpc3BsYXlOYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiSlNPTiIp
OwotICAgIH0KLQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgY29udGVudEF2YWlsYWJsZShjb250
ZW50LCBiYXNlNjRFbmNvZGVkKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIEpT
T04ucGFyc2UoY29udGVudCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIHRo
aXMuc2hvd01lc3NhZ2UoV0kuVUlTdHJpbmcoIlVuYWJsZSB0byBwYXJzZSBhcyBKU09OOiAlcyIp
LmZvcm1hdChlLm1lc3NhZ2UpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICBleHByZXNzaW9uOiAiKCIgKyBj
b250ZW50ICsgIikiLAotICAgICAgICAgICAgaW5jbHVkZUNvbW1hbmRMaW5lQVBJOiBmYWxzZSwK
LSAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZSwK
LSAgICAgICAgICAgIGNvbnRleHRJZDogdW5kZWZpbmVkLAotICAgICAgICAgICAgcmV0dXJuQnlW
YWx1ZTogZmFsc2UsCi0gICAgICAgICAgICBnZW5lcmF0ZVByZXZpZXc6IHRydWUsCi0gICAgICAg
IH07Ci0gICAgICAgIHRoaXMucmVzb3VyY2UudGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5p
bnZva2Uob3B0aW9ucywgKGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikgPT4gewotICAgICAgICAg
ICAgaWYgKGVycm9yIHx8IHdhc1Rocm93bikgewotICAgICAgICAgICAgICAgIHRoaXMuc2hvd01l
c3NhZ2UoV0kuVUlTdHJpbmcoIlVuYWJsZSB0byBwYXJzZSBhcyBKU09OOiAlcyIpLmZvcm1hdChy
ZXN1bHQuZGVzY3JpcHRpb24pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHRoaXMucmVtb3ZlTG9hZGluZ0luZGljYXRvcigpOwotCi0gICAg
ICAgICAgICB0aGlzLl9yZW1vdGVPYmplY3QgPSBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQo
cmVzdWx0LCB0aGlzLnJlc291cmNlLnRhcmdldCk7Ci0KLSAgICAgICAgICAgIGxldCBvYmplY3RU
cmVlID0gbmV3IFdJLk9iamVjdFRyZWVWaWV3KHRoaXMuX3JlbW90ZU9iamVjdCk7Ci0gICAgICAg
ICAgICBvYmplY3RUcmVlLnNob3dPbmx5SlNPTigpOwotICAgICAgICAgICAgb2JqZWN0VHJlZS5l
eHBhbmQoKTsKLQotICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG9iamVjdFRy
ZWUuZWxlbWVudCk7Ci0gICAgICAgIH0sIHRoaXMucmVzb3VyY2UudGFyZ2V0KTsKLSAgICB9Ci0K
LSAgICBjbG9zZWQoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3JlbW90ZU9iamVjdCkgewot
ICAgICAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0LnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHRo
aXMuX3JlbW90ZU9iamVjdCA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVz
dGVyQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcwppbmRleCA4NDdhOTNkMTJmMTk1OTMz
NmRkYjE1ZGM5ZWM1MTYwODc3YzUyNTNlLi5lYWI1Yzc2YTY1MmQ0OGI0MzU3MmVjYjc5ZTA0YjJj
Njk4ZGNhMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5q
cwpAQCAtMzUsNyArMzUsOSBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNz
IFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogCiAgICAgICAgIGZ1
bmN0aW9uIGNyZWF0ZVBhdGhDb21wb25lbnQoZGlzcGxheU5hbWUsIGNsYXNzTmFtZSwgaWRlbnRp
ZmllcikKICAgICAgICAgewotICAgICAgICAgICAgbGV0IHBhdGhDb21wb25lbnQgPSBuZXcgV0ku
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NOYW1lLCBpZGVudGlm
aWVyLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBjb25zdCB0ZXh0T25seSA9IGZhbHNlOwor
ICAgICAgICAgICAgY29uc3Qgc2hvd1NlbGVjdG9yQXJyb3dzID0gdHJ1ZTsKKyAgICAgICAgICAg
IGxldCBwYXRoQ29tcG9uZW50ID0gbmV3IFdJLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQoZGlz
cGxheU5hbWUsIGNsYXNzTmFtZSwgaWRlbnRpZmllciwgdGV4dE9ubHksIHNob3dTZWxlY3RvckFy
cm93cyk7CiAgICAgICAgICAgICBwYXRoQ29tcG9uZW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSGll
cmFyY2hpY2FsUGF0aENvbXBvbmVudC5FdmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3Bh
dGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7CiAgICAgICAgICAgICBwYXRoQ29tcG9uZW50LmNv
bXBhcmlzb25EYXRhID0gcmVzb3VyY2U7CiAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVu
dDsKQEAgLTQzLDMyICs0NSw0NyBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNs
YXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogCiAgICAgICAg
IHRoaXMuX3JlcXVlc3RDb250ZW50VmlldyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Jlc3BvbnNl
Q29udGVudFZpZXcgPSBudWxsOworICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZp
ZXcgPSBudWxsOworICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXdJbml0aWFs
aXplciA9IG51bGw7CiAgICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcgPSBu
dWxsOwotICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3Q29uc3RydWN0b3Ig
PSBudWxsOworICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6
ZXIgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50ID0gY3JlYXRl
UGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdJLlVJU3RyaW5nKCJSZXF1ZXN0IiksIFdJLlJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJY29uU3R5bGVDbGFzc05hbWUsIFdJLlJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5f
Y3VzdG9tUmVxdWVzdFBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRoQ29tcG9uZW50LmNhbGwodGhp
cywgV0kuVUlTdHJpbmcoIkN1c3RvbSBSZXF1ZXN0IiksIFdJLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LlJlcXVlc3RJY29uU3R5bGVDbGFzc05hbWUsIFdJLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LkN1c3RvbVJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgdGhpcy5fcmVzcG9uc2VQ
YXRoQ29tcG9uZW50ID0gY3JlYXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdJLlVJU3RyaW5n
KCJSZXNwb25zZSIpLCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25T
dHlsZUNsYXNzTmFtZSwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVu
dGlmaWVyKTsKLSAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VQYXRoQ29tcG9uZW50ID0gY3Jl
YXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdJLlVJU3RyaW5nKCJDdXN0b20iKSwgV0kuUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJY29uU3R5bGVDbGFzc05hbWUsIFdJLlJl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlc3BvbnNlSWRlbnRpZmllcik7CisgICAg
ICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlUGF0aENvbXBvbmVudCA9IGNyZWF0ZVBhdGhDb21wb25l
bnQuY2FsbCh0aGlzLCBXSS5VSVN0cmluZygiQ3VzdG9tIFJlc3BvbnNlIiksIFdJLlJlc291cmNl
Q2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWNvblN0eWxlQ2xhc3NOYW1lLCBXSS5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXNwb25zZUlkZW50aWZpZXIpOwogCiAgICAgICAg
IGlmICh0aGlzLl9jYW5TaG93UmVxdWVzdENvbnRlbnRWaWV3KCkpIHsKICAgICAgICAgICAgIHRo
aXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gdGhpcy5fcmVzcG9uc2VQYXRo
Q29tcG9uZW50OwogICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50LnByZXZp
b3VzU2libGluZyA9IHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50OworCisgICAgICAgICAgICB0
aGlzLl90cnlFbmFibGVDdXN0b21SZXF1ZXN0Q29udGVudFZpZXcoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIEZJWE1FOiBTaW5jZSBhIGN1c3RvbSByZXNwb25zZSBjb250ZW50IHZpZXcgbWF5
IG9ubHkgYmVjb21lIGF2YWlsYWJsZSBhZnRlciBhIHJlc3BvbnNlIGlzIHJlY2VpdmVkCiAgICAg
ICAgIC8vIHdlIG5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0byByZXN0b3JlIC8gcHJlZmVyIHRo
ZSBjdXN0b20gY29udGVudCB2aWV3LiBGb3IgZXhhbXBsZSBpZiB1c2VycwogICAgICAgICAvLyBh
bHdheXMgd2FudCB0byBwcmVmZXIgdGhlIEpTT04gdmlldyB0byB0aGUgbm9ybWFsIFJlc3BvbnNl
IHRleHQgdmlldy4KIAotICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nID0g
bmV3IFdJLlNldHRpbmcoInJlc291cmNlLWN1cnJlbnQtdmlldy0iICsgdGhpcy5fcmVzb3VyY2Uu
dXJsLmhhc2gsIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmll
cik7CisgICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcgPSBuZXcgV0kuU2V0
dGluZygicmVzb3VyY2UtY3VycmVudC12aWV3LSIgKyB0aGlzLl9yZXNvdXJjZS51cmwuaGFzaCwg
V0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ3VzdG9tUmVzcG9uc2VJZGVudGlmaWVyKTsK
IAogICAgICAgICB0aGlzLl90cnlFbmFibGVDdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3KCk7CiAg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgcmVzb3VyY2UoKQorICAgIGdldCByZXNv
dXJjZSgpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlOyB9CisKKyAgICBnZXQgcmVxdWVzdENvbnRl
bnRWaWV3KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKKyAgICAgICAg
aWYgKCF0aGlzLl9jYW5TaG93UmVxdWVzdENvbnRlbnRWaWV3KCkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICBpZiAodGhpcy5fcmVxdWVzdENvbnRlbnRWaWV3KQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldzsKKworICAgICAgICB0aGlzLl9y
ZXF1ZXN0Q29udGVudFZpZXcgPSBuZXcgV0kuVGV4dENvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNl
LnJlcXVlc3REYXRhIHx8ICIiLCB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBl
KTsKKworICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdENvbnRlbnRWaWV3OwogICAgIH0KIAog
ICAgIGdldCByZXNwb25zZUNvbnRlbnRWaWV3KCkKQEAgLTk0LDI3ICsxMTEsMjEgQEAgV0kuUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlQ29udGVudFZp
ZXc7CiAgICAgfQogCi0gICAgZ2V0IHJlcXVlc3RDb250ZW50VmlldygpCisgICAgZ2V0IGN1c3Rv
bVJlcXVlc3RDb250ZW50VmlldygpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2NhblNob3dS
ZXF1ZXN0Q29udGVudFZpZXcoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAg
IGlmICh0aGlzLl9yZXF1ZXN0Q29udGVudFZpZXcpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5f
cmVxdWVzdENvbnRlbnRWaWV3OwotCi0gICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldyA9
IG5ldyBXSS5UZXh0Q29udGVudFZpZXcodGhpcy5fcmVzb3VyY2UucmVxdWVzdERhdGEgfHwgIiIs
IHRoaXMuX3Jlc291cmNlLnJlcXVlc3REYXRhQ29udGVudFR5cGUpOwotCi0gICAgICAgIHJldHVy
biB0aGlzLl9yZXF1ZXN0Q29udGVudFZpZXc7CisgICAgICAgIGlmICghdGhpcy5fY3VzdG9tUmVx
dWVzdENvbnRlbnRWaWV3ICYmIHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50Vmlld0luaXRpYWxp
emVyKSB7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXcgPSB0aGlz
Ll9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXdJbml0aWFsaXplcigpOworICAgICAgICAgICAgdGhp
cy5fY3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3SW5pdGlhbGl6ZXIgPSBudWxsOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXc7CiAgICAgfQog
CiAgICAgZ2V0IGN1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcoKQogICAgIHsKLSAgICAgICAgaWYg
KCF0aGlzLl9jYW5TaG93Q3VzdG9tUmVzcG9uc2VDb250ZW50VmlldygpKQotICAgICAgICAgICAg
cmV0dXJuIG51bGw7Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRW
aWV3KQotICAgICAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50VmlldyA9IG5ldyB0
aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3Q29uc3RydWN0b3IodGhpcy5fcmVzb3VyY2Up
OwotCisgICAgICAgIGlmICghdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50VmlldyAmJiB0aGlz
Ll9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6ZXIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcgPSB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRl
bnRWaWV3SW5pdGlhbGl6ZXIoKTsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29u
dGVudFZpZXdJbml0aWFsaXplciA9IG51bGw7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRo
aXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXc7CiAgICAgfQogCkBAIC0xMjQsNyArMTM1LDcg
QEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJD
b250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZp
ZXcpCiAgICAgICAgICAgICByZXR1cm4gW107CiAKLSAgICAgICAgaWYgKCF0aGlzLl9jYW5TaG93
UmVxdWVzdENvbnRlbnRWaWV3KCkgJiYgIXRoaXMuX2NhblNob3dDdXN0b21SZXNwb25zZUNvbnRl
bnRWaWV3KCkpCisgICAgICAgIGlmICghdGhpcy5fY2FuU2hvd1JlcXVlc3RDb250ZW50Vmlldygp
ICYmICF0aGlzLl9jYW5TaG93Q3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3KCkgJiYgIXRoaXMuX2Nh
blNob3dDdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3KCkpCiAgICAgICAgICAgICByZXR1cm4gY3Vy
cmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25lbnRzOwogCiAgICAgICAgIC8vIEFw
cGVuZCB0aGUgY3VycmVudCB2aWV3J3MgcGF0aCBjb21wb25lbnRzIHRvIHRoZSBwYXRoIGNvbXBv
bmVudCByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgdmlldy4KQEAgLTE0OSwxMSArMTYwLDYgQEAg
V0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250
ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29udGVu
dCA9IGZhbHNlOwogICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCi0gICAgewotICAg
ICAgICBjb29raWVbV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJZGVu
dGlmaWVyQ29va2llS2V5XSA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7
Ci0gICAgfQotCiAgICAgcmVzdG9yZUZyb21Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAg
bGV0IGNvbnRlbnRWaWV3ID0gdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcihjb29r
aWVbV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJZGVudGlmaWVyQ29v
a2llS2V5XSk7CkBAIC0xNjUsNyArMTcxLDcgQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZp
ZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAg
ICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSB0cnVlOwogCi0gICAgICAg
IHJldHVybiB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKFdJLlJlc291cmNlQ2x1
c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZp
ZXcuQ3VzdG9tUmVxdWVzdElkZW50aWZpZXIpOwogICAgIH0KIAogICAgIHNob3dSZXNwb25zZShw
b3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKQEAg
LTE5OCw5ICsyMDQsMTQgQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBS
ZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCisgICAgX2NhblNob3dDdXN0b21SZXF1ZXN0Q29udGVudFZpZXcoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEhKHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50VmlldyB8
fCB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXdJbml0aWFsaXplcik7CisgICAgfQorCiAg
ICAgX2NhblNob3dDdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3KCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAhIXRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdDb25zdHJ1Y3RvcjsKKyAgICAg
ICAgcmV0dXJuICEhKHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcgfHwgdGhpcy5fY3Vz
dG9tUmVzcG9uc2VDb250ZW50Vmlld0luaXRpYWxpemVyKTsKICAgICB9CiAKICAgICBfY29udGVu
dFZpZXdGb3JSZXNvdXJjZVR5cGUodHlwZSkKQEAgLTIxMiw3ICsyMjMsNyBAQCBXSS5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ2x1cwogICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5UZXh0UmVzb3VyY2VDb250
ZW50Vmlldyh0aGlzLl9yZXNvdXJjZSk7CiAKICAgICAgICAgY2FzZSBXSS5SZXNvdXJjZS5UeXBl
LkltYWdlOgotICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLm1pbWVUeXBlQ29tcG9uZW50
cy50eXBlID09PSAiaW1hZ2Uvc3ZnK3htbCIpCisgICAgICAgICAgICBpZiAoV0kuZmlsZUV4dGVu
c2lvbkZvck1JTUVUeXBlKHRoaXMuX3Jlc291cmNlLm1pbWVUeXBlKSA9PT0gInN2ZyIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5TVkdJbWFnZVJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3KHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuSW1hZ2VSZXNv
dXJjZUNvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlKTsKIApAQCAtMjM2LDYgKzI0Nyw4IEBAIFdJ
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5DbHVzCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFBh
dGhDb21wb25lbnQ7CiAgICAgICAgIGlmIChjb250ZW50VmlldyA9PT0gdGhpcy5fcmVzcG9uc2VD
b250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25l
bnQ7CisgICAgICAgIGlmIChjb250ZW50VmlldyA9PT0gdGhpcy5fY3VzdG9tUmVxdWVzdENvbnRl
bnRWaWV3KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbVJlcXVlc3RQYXRoQ29tcG9u
ZW50OwogICAgICAgICBpZiAoY29udGVudFZpZXcgPT09IHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29u
dGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VzdG9tUmVzcG9uc2VQYXRoQ29t
cG9uZW50OwogICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwpA
QCAtMjUxLDYgKzI2NCw4IEBAIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3Mg
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5DbHVzCiAgICAgICAgICAgICBy
ZXR1cm4gV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdElkZW50aWZpZXI7CiAg
ICAgICAgIGlmIChjb250ZW50VmlldyA9PT0gdGhpcy5fcmVzcG9uc2VDb250ZW50VmlldykKICAg
ICAgICAgICAgIHJldHVybiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlk
ZW50aWZpZXI7CisgICAgICAgIGlmIChjb250ZW50VmlldyA9PT0gdGhpcy5fY3VzdG9tUmVxdWVz
dENvbnRlbnRWaWV3KQorICAgICAgICAgICAgcmV0dXJuIFdJLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LkN1c3RvbVJlcXVlc3RJZGVudGlmaWVyOwogICAgICAgICBpZiAoY29udGVudFZpZXcg
PT09IHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4g
V0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ3VzdG9tUmVzcG9uc2VJZGVudGlmaWVyOwog
ICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwpAQCAtMjYyLDIw
ICsyNzcsMjcgQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJj
ZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgbGV0IGNvbnRlbnRW
aWV3VG9TaG93ID0gbnVsbDsKIAogICAgICAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICAg
ICAgY2FzZSBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXF1ZXN0SWRlbnRp
ZmllcjoKKyAgICAgICAgICAgIGNvbnRlbnRWaWV3VG9TaG93ID0gdGhpcy5jdXN0b21SZXF1ZXN0
Q29udGVudFZpZXc7CisgICAgICAgICAgICBpZiAoY29udGVudFZpZXdUb1Nob3cpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAogICAgICAgICBjYXNl
IFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlmaWVyOgogICAgICAg
ICAgICAgY29udGVudFZpZXdUb1Nob3cgPSB0aGlzLnJlcXVlc3RDb250ZW50VmlldzsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LlJlc3BvbnNlSWRlbnRpZmllcjoKLSAgICAgICAgICAgIGNvbnRlbnRWaWV3VG9TaG93ID0gdGhp
cy5yZXNwb25zZUNvbnRlbnRWaWV3OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoY29udGVudFZpZXdUb1Nob3cpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAvLyBmYWxsdGhyb3VnaAogICAgICAgICBjYXNlIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LkN1c3RvbVJlc3BvbnNlSWRlbnRpZmllcjoKICAgICAgICAgICAgIGNvbnRlbnRWaWV3VG9T
aG93ID0gdGhpcy5jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3OworICAgICAgICAgICAgaWYgKGNv
bnRlbnRWaWV3VG9TaG93KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8g
ZmFsbHRocm91Z2gKKyAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5S
ZXNwb25zZUlkZW50aWZpZXI6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZW50
Vmlld1RvU2hvdyA9IHRoaXMucmVzcG9uc2VDb250ZW50VmlldzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjb250ZW50Vmlld1RvU2hvdykKLSAgICAgICAg
ICAgIGNvbnRlbnRWaWV3VG9TaG93ID0gdGhpcy5yZXNwb25zZUNvbnRlbnRWaWV3OwotCiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3VG9TaG93KTsKIAogICAgICAgICB0aGlzLl9j
dXJyZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlID0gdGhpcy5faWRlbnRpZmllckZvckNvbnRl
bnRWaWV3KGNvbnRlbnRWaWV3VG9TaG93KTsKQEAgLTMxNywzMiArMzM5LDM4IEBAIFdJLlJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5DbHVzCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBfdHJ5RW5hYmxlQ3VzdG9t
UmVxdWVzdENvbnRlbnRWaWV3KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2Uu
cmVxdWVzdERhdGEuaXNKU09OKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5fY3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3SW5pdGlhbGl6ZXIgPSAoKSA9PiBuZXcgV0kuSlNP
TkNvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlLnJlcXVlc3REYXRhLCB0aGlzLl9yZXNvdXJjZSk7
CisKKyAgICAgICAgdGhpcy5fY3VzdG9tUmVxdWVzdFBhdGhDb21wb25lbnQuZGlzcGxheU5hbWUg
PSBXSS5VSVN0cmluZygiUmVxdWVzdCAoSlNPTikiKTsKKyAgICAgICAgdGhpcy5fY3VzdG9tUmVx
dWVzdFBhdGhDb21wb25lbnQucHJldmlvdXNTaWJsaW5nID0gdGhpcy5fcmVxdWVzdFBhdGhDb21w
b25lbnQ7CisgICAgICAgIHRoaXMuX2N1c3RvbVJlcXVlc3RQYXRoQ29tcG9uZW50Lm5leHRTaWJs
aW5nID0gdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OworICAgICAgICB0aGlzLl9yZXF1ZXN0
UGF0aENvbXBvbmVudC5uZXh0U2libGluZyA9IHRoaXMuX2N1c3RvbVJlcXVlc3RQYXRoQ29tcG9u
ZW50OworICAgICAgICB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQucHJldmlvdXNTaWJsaW5n
ID0gdGhpcy5fY3VzdG9tUmVxdWVzdFBhdGhDb21wb25lbnQ7CisgICAgfQorCiAgICAgX3RyeUVu
YWJsZUN1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9yZXNvdXJjZS5oYXNSZXNwb25zZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdDb25zdHJ1Y3RvciA9IHRoaXMuX2N1c3Rv
bUNvbnRlbnRWaWV3Q29uc3RydWN0b3JGb3JSZXNvdXJjZSh0aGlzLl9yZXNvdXJjZSk7Ci0gICAg
ICAgIGlmICghdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50Vmlld0NvbnN0cnVjdG9yKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudCgp
CisgICAgICAgIC50aGVuKCh7ZXJyb3IsIGNvbnRlbnR9KSA9PiB7CisgICAgICAgICAgICBpZiAo
ZXJyb3IgfHwgIWNvbnRlbnQgfHwgIWNvbnRlbnQuaXNKU09OKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29u
dGVudFZpZXdDb25zdHJ1Y3Rvci5jdXN0b21Db250ZW50Vmlld0Rpc3BsYXlOYW1lLCAiQ3VzdG9t
IFJlc3BvbnNlIENvbnRlbnRWaWV3cyBzaG91bGQgaGF2ZSBhIHN0YXRpYyBjdXN0b21Db250ZW50
Vmlld0Rpc3BsYXlOYW1lIG1ldGhvZC4iLCB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3
Q29uc3RydWN0b3IpOworICAgICAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50Vmll
d0luaXRpYWxpemVyID0gKCkgPT4gbmV3IFdJLkpTT05Db250ZW50Vmlldyhjb250ZW50LCB0aGlz
Ll9yZXNvdXJjZSk7CiAKLSAgICAgICAgdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50Lm5leHRT
aWJsaW5nID0gdGhpcy5fY3VzdG9tUmVzcG9uc2VQYXRoQ29tcG9uZW50OwotICAgICAgICB0aGlz
Ll9jdXN0b21SZXNwb25zZVBhdGhDb21wb25lbnQucHJldmlvdXNTaWJsaW5nID0gdGhpcy5fcmVz
cG9uc2VQYXRoQ29tcG9uZW50OwotICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZVBhdGhDb21w
b25lbnQuZGlzcGxheU5hbWUgPSB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3Q29uc3Ry
dWN0b3IuY3VzdG9tQ29udGVudFZpZXdEaXNwbGF5TmFtZSgpOworICAgICAgICAgICAgdGhpcy5f
Y3VzdG9tUmVzcG9uc2VQYXRoQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIlJl
c3BvbnNlIChKU09OKSIpOworICAgICAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VQYXRoQ29t
cG9uZW50LnByZXZpb3VzU2libGluZyA9IHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudDsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudC5uZXh0U2libGluZyA9IHRoaXMu
X2N1c3RvbVJlc3BvbnNlUGF0aENvbXBvbmVudDsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50
c0RpZENoYW5nZSk7Ci0gICAgfQotCi0gICAgX2N1c3RvbUNvbnRlbnRWaWV3Q29uc3RydWN0b3JG
b3JSZXNvdXJjZShyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGxldCBtaW1lVHlwZSA9IHRoaXMu
X3Jlc291cmNlLm1pbWVUeXBlOwotICAgICAgICBsZXQgZmlsZUV4dGVuc2lvbiA9IFdJLmZpbGVF
eHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7Ci0gICAgICAgIGlmIChmaWxlRXh0ZW5zaW9u
ID09PSAianNvbiIpCi0gICAgICAgICAgICByZXR1cm4gV0kuSlNPTlJlc291cmNlQ29udGVudFZp
ZXc7Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50
c0RpZENoYW5nZSk7CisgICAgICAgIH0pOwogICAgIH0KIH07CiAKQEAgLTM1Miw0ICszODAsNSBA
QCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWNvblN0eWxlQ2xhc3NOYW1l
ID0gInJlcXVlc3QtaWNvbiI7CiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25z
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXNwb25zZS1pY29uIjsKIFdJLlJlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlmaWVyID0gInJlcXVlc3QiOwogV0kuUmVzb3VyY2VD
bHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyID0gInJlc3BvbnNlIjsKK1dJLlJl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlcXVlc3RJZGVudGlmaWVyID0gImN1c3Rv
bS1yZXF1ZXN0IjsKIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlc3BvbnNl
SWRlbnRpZmllciA9ICJjdXN0b20tcmVzcG9uc2UiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0RGF0YUdyaWROb2RlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0RGF0YUdy
aWROb2RlLmpzCmluZGV4IDFhNDA2NmVlMmFiNjRjOWZhZTQzNjllYTU3YmRlNDNhODgzZjhkNjIu
LjJmOTA0YzZkMTg5MmE1MjA1MDQxMWVmYjYyZDFkZTk2MjhkOTQyNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldERhdGFHcmlk
Tm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9X
ZWJTb2NrZXREYXRhR3JpZE5vZGUuanMKQEAgLTY2LDExICs2Niw3IEBAIFdJLldlYlNvY2tldERh
dGFHcmlkTm9kZSA9IGNsYXNzIFdlYlNvY2tldERhdGFHcmlkTm9kZSBleHRlbmRzIFdJLkRhdGFH
cmlkTm9kZQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGlzIHVubmVj
ZXNzYXJ5LCBhcyB3ZSBqdXN0IG5lZWQgdGhlIHN0cmluZyB0byBldmFsdWF0ZS4KLSAgICAgICAg
ICAgICAgICAvLyBXZSBzdGlsbCBuZWVkIHRvIGV4ZWN1dGUgdGhpcywgaG93ZXZlciwgaW4gb3Jk
ZXIgdG8gdHJ5LWNhdGNoIGlmIGl0IGZhaWxzLgotICAgICAgICAgICAgICAgIEpTT04ucGFyc2Uo
dGhpcy5fZGF0YS5kYXRhKTsKLQorICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGEuZGF0YS5pc0pT
T04oKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJp
bmcoIkxvZyBGcmFtZSBWYWx1ZSIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RHcm91cDogV0kuUnVu
dGltZU1hbmFnZXIuQ29uc29sZU9iamVjdEdyb3VwLApAQCAtODIsNyArNzgsNyBAQCBXSS5XZWJT
b2NrZXREYXRhR3JpZE5vZGUgPSBjbGFzcyBXZWJTb2NrZXREYXRhR3JpZE5vZGUgZXh0ZW5kcyBX
SS5EYXRhR3JpZE5vZGUKICAgICAgICAgICAgICAgICAgICAgbGV0IGV4cHJlc3Npb24gPSAiKCIg
KyB0aGlzLl9kYXRhLmRhdGEgKyAiKSI7CiAgICAgICAgICAgICAgICAgICAgIFdJLnJ1bnRpbWVN
YW5hZ2VyLmV2YWx1YXRlSW5JbnNwZWN0ZWRXaW5kb3coZXhwcmVzc2lvbiwgb3B0aW9ucywgbG9n
UmVzdWx0KTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggeyB9Cisg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigp
OwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375957</attachid>
            <date>2019-08-09 14:29:19 -0700</date>
            <delta_ts>2019-08-09 15:12:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122898-20190809142919.patch</filename>
            <type>text/plain</type>
            <size>36015</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGNlMzJhYzFmZmFkZDY5MjY5MGZjYmY3Y2NjN2Vi
NTViZGI1ZGY1NjcuLmUwMjk3N2IyYWE1MDA4OGYwOTYzZGIzZmYzN2U1NGZlY2IxYzRhZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE5LTA4LTA5ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChTYWZh
cmkgNik6IFdlYiBJbnNwZWN0b3I6IEpTT04gbWF5IG5vdCBiZSBwcmV0dHkgcHJpbnRlZCBpZiBz
ZXJ2ZWQgYXMgdGV4dC9odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjI4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1MjQxNDE5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBDaGVjayB0aGUg
cmVxdWVzdC9yZXNwb25zZSBkYXRhIHRvIHNlZSBpZiBpdCdzIEpTT04gcGFyc2FibGUuIElmIHNv
LCBhbGxvdyB0aGUgdXNlciB0byBlbGVjdAorICAgICAgICB0byB2aWV3IHRoZSByZXF1ZXN0L3Jl
c3BvbnNlIGFzIGEgSlNPTiBwcmV2aWV3IGluc3RlYWQgb2YgcmF3IChvciBwcmV0dHkgcHJpbnRl
ZCkgdGV4dC4KKworICAgICAgICBQcmVmZXIgdGhlIEpTT04gdmlldyB3aGVyZXZlciBwb3NzaWJs
ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldyk6CisgICAg
ICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHJlcXVlc3RD
b250ZW50Vmlldyk6CisgICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90
b3R5cGUuZ2V0IGN1c3RvbVJlcXVlc3RDb250ZW50Vmlldyk6IEFkZGVkLgorICAgICAgICAoV0ku
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBjdXN0b21SZXNwb25zZUNv
bnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5nZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOgorICAgICAgICAoV0kuUmVzb3VyY2VD
bHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLnNob3dSZXF1ZXN0KToKKyAgICAgICAgKFdJLlJl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY2FuU2hvd0N1c3RvbVJlcXVlc3RD
b250ZW50Vmlldyk6IEFkZGVkLgorICAgICAgICAoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZp
ZXcucHJvdG90eXBlLl9jYW5TaG93Q3VzdG9tUmVzcG9uc2VDb250ZW50Vmlldyk6CisgICAgICAg
IChXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRWaWV3Rm9y
UmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5faWRlbnRpZmllckZvckNvbnRlbnRWaWV3
KToKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2hv
d0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcik6CisgICAgICAgIChXSS5SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5wcm90b3R5cGUuX2NhblVzZUpTT05Db250ZW50Vmlld0ZvckNvbnRlbnQpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
dHJ5RW5hYmxlQ3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3KTogQWRkZWQuCisgICAgICAgIChXSS5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuX3RyeUVuYWJsZUN1c3RvbVJlc3Bv
bnNlQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcu
cHJvdG90eXBlLnNhdmVUb0Nvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuX2N1c3RvbUNvbnRlbnRWaWV3Q29uc3RydWN0b3JG
b3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIFNpbmNlIHRoZSBjdXJyZW50IHZpZXcgaXMg
YWxyZWFkeSBzYXZlZCBpbiBhIGBXSS5TZXR0aW5nYCwgdGhlcmUncyBubyBuZWVkIHRvIHNhdmUg
dGhhdAorICAgICAgICBzdGF0ZSB0byBhIGNvb2tpZSwgYXMgaXQnbGwgYmUgcmVzdG9yZWQgZWxz
ZXdoZXJlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6CisgICAgICAg
IChXSS5zaG93UmVzb3VyY2VSZXF1ZXN0KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFp
bi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSlNPTkNvbnRlbnRWaWV3Lmpz
OiBBZGRlZC4KKyAgICAgICAgKFdJLkpTT05Db250ZW50Vmlldyk6CisgICAgICAgIChXSS5KU09O
Q29udGVudFZpZXcucHJvdG90eXBlLmluaXRpYWxMYXlvdXQpOgorICAgICAgICAoV0kuSlNPTkNv
bnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hlZCk6CisgICAgICAgIChXSS5KU09OQ29udGVudFZp
ZXcucHJvdG90eXBlLmNsb3NlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9KU09O
Q29udGVudFZpZXcuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5jb250ZW50LXZpZXcuanNvbik6Cisg
ICAgICAgICogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNPTlJl
c291cmNlQ29udGVudFZpZXcuanM6IERlbGV0ZWQuCisgICAgICAgICogU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNPTlJlc291cmNlQ29udGVudFZpZXcuY3NzOiBE
ZWxldGVkLgorICAgICAgICBDcmVhdGUgYSBtb3JlIGdlbmVyaWMgY29udGVudCB2aWV3IHRoYXQg
c2hvd3MgYSBwcmV2aWV3IGZvciB0aGUgZ2l2ZW4gSlNPTiBwYXJzYWJsZSBzdHJpbmcuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzOgorICAgICAgICAoU3RyaW5n
LnByb3RvdHlwZS5pc0pTT04pOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYlNvY2tldERhdGFHcmlkTm9kZS5qczoKKyAgICAgICAgKFdJLldlYlNvY2tldERhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgIFV0aWxpdHkg
ZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEgc3RyaW5nIGlzIEpTT04gcGFyc2FibGUuCisKKyAg
ICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisKIDIw
MTktMDgtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFBhZ2U6IGRvbid0IGFsbG93IHRoZSBkb21haW4gdG8gYmUgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDk0MTYzZTNhYzRlZTI4NzRmNGYw
ZTA4Mjg2YzExNzE3ODRiNWZiZTMuLjQ0ODMyMzcxZjkyMjAyYWUzN2Q2NzM2OGUyMzk3YjZjMzJi
ZmZjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMzA1LDYgKzMwNSw4
IEBAIGxvY2FsaXplZFN0cmluZ3NbIkNyb3NzLU9yaWdpbiBSZXN0cmljdGlvbnMiXSA9ICJDcm9z
cy1PcmlnaW4gUmVzdHJpY3Rpb25zIjsKIGxvY2FsaXplZFN0cmluZ3NbIkN1cnJlbnQiXSA9ICJD
dXJyZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkN1cnJlbnQgU3RhdGUiXSA9ICJDdXJyZW50IFN0
YXRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkN1c3RvbSJdID0gIkN1c3RvbSI7Citsb2NhbGl6ZWRT
dHJpbmdzWyJDdXN0b20gUmVxdWVzdCJdID0gIkN1c3RvbSBSZXF1ZXN0IjsKK2xvY2FsaXplZFN0
cmluZ3NbIkN1c3RvbSBSZXNwb25zZSJdID0gIkN1c3RvbSBSZXNwb25zZSI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJETlMiXSA9ICJETlMiOwogbG9jYWxpemVkU3RyaW5nc1siRE9NIl0gPSAiRE9NIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkRPTSBDb250ZW50IExvYWRlZCBcdTIwMTQgJXMiXSA9ICJET00g
Q29udGVudCBMb2FkZWQgXHUyMDE0ICVzIjsKQEAgLTYxNSw3ICs2MTcsNiBAQCBsb2NhbGl6ZWRT
dHJpbmdzWyJJbnZlcnRlZCJdID0gIkludmVydGVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkludm9r
ZSBnZXR0ZXIiXSA9ICJJbnZva2UgZ2V0dGVyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkpQMiJdID0g
IkpQMiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJKUEVHIl0gPSAiSlBFRyI7Ci1sb2NhbGl6ZWRTdHJp
bmdzWyJKU09OIl0gPSAiSlNPTiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJKYXZhU2NyaXB0Il0gPSAi
SmF2YVNjcmlwdCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJKYXZhU2NyaXB0ICYgRXZlbnRzIl0gPSAi
SmF2YVNjcmlwdCAmIEV2ZW50cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJKYXZhU2NyaXB0IEFsbG9j
YXRpb25zIl0gPSAiSmF2YVNjcmlwdCBBbGxvY2F0aW9ucyI7CkBAIC04NjksNiArODcwLDcgQEAg
bG9jYWxpemVkU3RyaW5nc1siUmVwZWF0aW5nIExpbmVhciBHcmFkaWVudCJdID0gIlJlcGVhdGlu
ZyBMaW5lYXIgR3JhZGllbnQiOwogbG9jYWxpemVkU3RyaW5nc1siUmVwZWF0aW5nIFJhZGlhbCBH
cmFkaWVudCJdID0gIlJlcGVhdGluZyBSYWRpYWwgR3JhZGllbnQiOwogbG9jYWxpemVkU3RyaW5n
c1siUmVxdWVzdCJdID0gIlJlcXVlc3QiOwogbG9jYWxpemVkU3RyaW5nc1siUmVxdWVzdCAmIFJl
c3BvbnNlIl0gPSAiUmVxdWVzdCAmIFJlc3BvbnNlIjsKK2xvY2FsaXplZFN0cmluZ3NbIlJlcXVl
c3QgKEpTT04pIl0gPSAiUmVxdWVzdCAoSlNPTikiOwogbG9jYWxpemVkU3RyaW5nc1siUmVxdWVz
dCBDb29raWVzIl0gPSAiUmVxdWVzdCBDb29raWVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlcXVl
c3QgRGF0YSJdID0gIlJlcXVlc3QgRGF0YSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1ZXN0IEhl
YWRlcnMiXSA9ICJSZXF1ZXN0IEhlYWRlcnMiOwpAQCAtODg1LDYgKzg4Nyw3IEBAIGxvY2FsaXpl
ZFN0cmluZ3NbIlJlc291cmNlIHdhcyBsb2FkZWQgd2l0aCB0aGUgXHUyMDFDZGF0YVx1MjAxRCBz
Y2hlbWUuIl0gPSAiUmVzCiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSB3YXMgc2VydmVkIGZy
b20gdGhlIGNhY2hlLiJdID0gIlJlc291cmNlIHdhcyBzZXJ2ZWQgZnJvbSB0aGUgY2FjaGUuIjsK
IGxvY2FsaXplZFN0cmluZ3NbIlJlc291cmNlcyJdID0gIlJlc291cmNlcyI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJSZXNwb25zZSJdID0gIlJlc3BvbnNlIjsKK2xvY2FsaXplZFN0cmluZ3NbIlJlc3Bv
bnNlIChKU09OKSJdID0gIlJlc3BvbnNlIChKU09OKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNw
b25zZSBDb29raWVzIl0gPSAiUmVzcG9uc2UgQ29va2llcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJS
ZXNwb25zZSBIZWFkZXJzIl0gPSAiUmVzcG9uc2UgSGVhZGVycyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJSZXNwb25zZToiXSA9ICJSZXNwb25zZToiOwpAQCAtMTE3NSw3ICsxMTc4LDYgQEAgbG9jYWxp
emVkU3RyaW5nc1siVHlwZSBpbmZvcm1hdGlvbiBmb3IgdmFyaWFibGU6ICVzIl0gPSAiVHlwZSBp
bmZvcm1hdGlvbiBmb3IgdmEKIGxvY2FsaXplZFN0cmluZ3NbIlVSTCJdID0gIlVSTCI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJVUkwgQnJlYWtwb2ludFx1MjAyNiJdID0gIlVSTCBCcmVha3BvaW50XHUy
MDI2IjsKIGxvY2FsaXplZFN0cmluZ3NbIlVuYWJsZSB0byBkZXRlcm1pbmUgcGF0aCB0byBwcm9w
ZXJ0eSBmcm9tIHJvb3QiXSA9ICJVbmFibGUgdG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVydHkg
ZnJvbSByb290IjsKLWxvY2FsaXplZFN0cmluZ3NbIlVuYWJsZSB0byBwYXJzZSBhcyBKU09OOiAl
cyJdID0gIlVuYWJsZSB0byBwYXJzZSBhcyBKU09OOiAlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJV
bmFibGUgdG8gc2hvdyBjZXJ0aWZpY2F0ZSBmb3IgXHUyMDFDJXNcdTIwMUQiXSA9ICJVbmFibGUg
dG8gc2hvdyBjZXJ0aWZpY2F0ZSBmb3IgXHUyMDFDJXNcdTIwMUQiOwogLyogQnJlYWsgKHBhdXNl
KSBvbiB1bmNhdWdodCAodW5oYW5kbGVkKSBleGNlcHRpb25zICovCiBsb2NhbGl6ZWRTdHJpbmdz
WyJVbmNhdWdodCBFeGNlcHRpb25zIl0gPSAiVW5jYXVnaHQgRXhjZXB0aW9ucyI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggNmQ2
YzQyNjJlMzE3MDljMTY5MjBlZTQ0YzdhZDc2MGMzYjU1ZTM1Ni4uMDNkY2IxNTRiZTBjYzgyMmRm
MDQ2NDEzOWMwNGRhZGQwMTQ3OTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgV0kuc2hvd09y
aWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlVGV4dFJhbmdlID0gZnVuY3Rpb24oc291cmNlQ29k
ZVRleHRSYW5nZSwgb3AKIAogV0kuc2hvd1Jlc291cmNlUmVxdWVzdCA9IGZ1bmN0aW9uKHJlc291
cmNlLCBvcHRpb25zID0ge30pCiB7Ci0gICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHJlc291
cmNlLCB7W1dJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmll
ckNvb2tpZUtleV06IFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlm
aWVyfSwgb3B0aW9ucyk7CisgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHJlc291cmNlLCB7
W1dJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmllckNvb2tp
ZUtleV06IFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlcXVlc3RJZGVudGlm
aWVyfSwgb3B0aW9ucyk7CiB9OwogCiBXSS5kZWJ1Z2dlclRvZ2dsZUJyZWFrcG9pbnRzID0gZnVu
Y3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IDU2NzQ0ZmIwODJkZjhkYTQ5NmVjYmRiMzhjOWI2
OTFhYzE1YjFiYTIuLmZiNDBhNDgxZTA0ZDE5ODdlZTZkNDRjMjMzOWQyZWY1MDRhYTEwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0
aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRp
bGl0aWVzLmpzCkBAIC03MzQsNiArNzM0LDE4IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJp
bmcucHJvdG90eXBlLCAiaXNVcHBlckNhc2UiLAogICAgIH0KIH0pOwogCitPYmplY3QuZGVmaW5l
UHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgImlzSlNPTiIsCit7CisgICAgdmFsdWUocHJlZGlj
YXRlKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5w
YXJzZSh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiAhcHJlZGljYXRlIHx8IHByZWRpY2F0ZShq
c29uKTsKKyAgICAgICAgfSBjYXRjaCB7IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgInRydW5jYXRl
U3RhcnQiLAogewogICAgIHZhbHVlKG1heExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1ZjhjZTZkODAyMjEzMDY3OTE2OTgzYTE4
MDhiYjgxMmZjNzRhY2EzLi41YjBiMDY0OTIwY2NkNmM0MmNiZmJmMjAyNjY3ZmUzOGViZjM3MTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBA
IC0xMjMsNyArMTIzLDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0lubGluZVN3YXRjaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmll
d3MvSW5wdXRQb3BvdmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9Jc3N1ZVRyZWVFbGVtZW50LmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9KU09OUmVzb3VyY2VDb250ZW50Vmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSlNPTkNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0xheWVyVHJlZURldGFp
bHNTaWRlYmFyUGFuZWwuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0xheWVyczNEQ29udGVudFZpZXcuY3NzIj4KQEAgLTcwNiw3ICs3MDYsNyBAQAogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9JbmxpbmVTd2F0Y2guanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9JbnB1dFBvcG92ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Jc3N1ZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iVmll
d3MvSlNPTlJlc291cmNlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9KU09OQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pT
T05Db250ZW50Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9KU09OQ29udGVudFZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMTQ0MDk4MDVlOTMzYjFiNTAw
ZDZiMjFkZjllNmRlZTA5NTFjNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OQ29udGVudFZpZXcuY3NzCkBAIC0wLDAgKzEs
MjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisuY29udGVudC12aWV3Lmpzb24geworICAgIHBhZGRpbmc6IDEw
cHg7CisgICAgb3ZlcmZsb3c6IHNjcm9sbDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05Db250ZW50Vmlldy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YTA4ZWM5OGJlMjVmNjE4ZWFhMzBiNmY4Yzc4NjgxMWI3MjIwNzI4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSlNP
TkNvbnRlbnRWaWV3LmpzCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5KU09OQ29u
dGVudFZpZXcgPSBjbGFzcyBKU09OQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmlldwor
eworICAgIGNvbnN0cnVjdG9yKGpzb24sIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGpzb24gPT09ICJzdHJpbmciICYmIGpzb24uaXNKU09O
KCkpOworCisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB0aGlz
Ll9qc29uID0ganNvbjsKKyAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0ID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fc3Bpbm5lclRpbWVvdXQgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImpzb24iKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKwor
ICAgIGluaXRpYWxMYXlvdXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgp
OworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBleHByZXNzaW9uOiAi
KCIgKyB0aGlzLl9qc29uICsgIikiLAorICAgICAgICAgICAgZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlOiB0cnVlLAorICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiB0cnVl
LAorICAgICAgICB9OworICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKG9wdGlv
bnMsIChlcnJvciwgcmVzdWx0LCB3YXNUaHJvd24pID0+IHsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFlcnJvcik7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghd2FzVGhyb3duKTsK
KworICAgICAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0ID0gV0kuUmVtb3RlT2JqZWN0LmZyb21Q
YXlsb2FkKHJlc3VsdCk7CisKKyAgICAgICAgICAgIGxldCBvYmplY3RUcmVlID0gbmV3IFdJLk9i
amVjdFRyZWVWaWV3KHRoaXMuX3JlbW90ZU9iamVjdCk7CisgICAgICAgICAgICBvYmplY3RUcmVl
LnNob3dPbmx5SlNPTigpOworICAgICAgICAgICAgb2JqZWN0VHJlZS5leHBhbmQoKTsKKworICAg
ICAgICAgICAgaWYgKHRoaXMuX3NwaW5uZXJUaW1lb3V0KSB7CisgICAgICAgICAgICAgICAgY2xl
YXJUaW1lb3V0KHRoaXMuX3NwaW5uZXJUaW1lb3V0KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9z
cGlubmVyVGltZW91dCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQob2JqZWN0VHJlZS5lbGVtZW50KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgYXR0YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKworICAgICAg
ICBpZiAodGhpcy5fc3Bpbm5lclRpbWVvdXQgfHwgdGhpcy5fcmVtb3RlT2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NwaW5uZXJUaW1lb3V0ID0gc2V0VGltZW91
dCgoKSA9PiB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zcGlubmVyVGltZW91
dCk7CisKKyAgICAgICAgICAgIGxldCBzcGlubmVyID0gbmV3IFdJLkluZGV0ZXJtaW5hdGVQcm9n
cmVzc1NwaW5uZXI7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Bpbm5l
ci5lbGVtZW50KTsKKworICAgICAgICAgICAgdGhpcy5fc3Bpbm5lclRpbWVvdXQgPSB1bmRlZmlu
ZWQ7CisgICAgICAgIH0sIDEwMCk7CisgICAgfQorCisgICAgY2xvc2VkKCkKKyAgICB7CisgICAg
ICAgIHN1cGVyLmNsb3NlZCgpOworCisgICAgICAgIGlmICh0aGlzLl9yZW1vdGVPYmplY3QpIHsK
KyAgICAgICAgICAgIHRoaXMuX3JlbW90ZU9iamVjdC5yZWxlYXNlKCk7CisgICAgICAgICAgICB0
aGlzLl9yZW1vdGVPYmplY3QgPSBudWxsOworICAgICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05SZXNvdXJj
ZUNvbnRlbnRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0pTT05SZXNvdXJjZUNvbnRlbnRWaWV3LmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTg4N2IxMDk2ZWUxNzMzYWE1NTBiZmQwODhlNzI1MjI5OGEzYWU4Ny4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9KU09OUmVzb3VyY2VDb250ZW50Vmlldy5jc3MKKysrIC9k
ZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLmNvbnRlbnQtdmlldy5yZXNv
dXJjZS5qc29uIHsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIG92ZXJmbG93OiBzY3JvbGw7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9K
U09OUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0pTT05SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDFlZTY5OGE2NDFlZjExNTcwODUxNWVkODU3NzQzMGQzN2ZkMDI5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0pTT05SZXNvdXJjZUNvbnRlbnRWaWV3Lmpz
CisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLkpTT05SZXNv
dXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgSlNPTlJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5SZXNvdXJjZUNvbnRlbnRWaWV3Ci17Ci0gICAgY29uc3RydWN0b3IocmVzb3VyY2UpCi0gICAg
ewotICAgICAgICBzdXBlcihyZXNvdXJjZSwgImpzb24iKTsKLQotICAgICAgICB0aGlzLl9yZW1v
dGVPYmplY3QgPSBudWxsOwotICAgIH0KLQotICAgIC8vIFN0YXRpYwotCi0gICAgc3RhdGljIGN1
c3RvbUNvbnRlbnRWaWV3RGlzcGxheU5hbWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLlVJ
U3RyaW5nKCJKU09OIik7Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBjb250ZW50
QXZhaWxhYmxlKGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpCi0gICAgewotICAgICAgICB0cnkgewot
ICAgICAgICAgICAgSlNPTi5wYXJzZShjb250ZW50KTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShXSS5VSVN0cmluZygiVW5hYmxlIHRvIHBhcnNl
IGFzIEpTT046ICVzIikuZm9ybWF0KGUubWVzc2FnZSkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgIGV4cHJl
c3Npb246ICIoIiArIGNvbnRlbnQgKyAiKSIsCi0gICAgICAgICAgICBpbmNsdWRlQ29tbWFuZExp
bmVBUEk6IGZhbHNlLAotICAgICAgICAgICAgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlOiB0cnVlLAotICAgICAgICAgICAgY29udGV4dElkOiB1bmRlZmluZWQsCi0gICAgICAg
ICAgICByZXR1cm5CeVZhbHVlOiBmYWxzZSwKLSAgICAgICAgICAgIGdlbmVyYXRlUHJldmlldzog
dHJ1ZSwKLSAgICAgICAgfTsKLSAgICAgICAgdGhpcy5yZXNvdXJjZS50YXJnZXQuUnVudGltZUFn
ZW50LmV2YWx1YXRlLmludm9rZShvcHRpb25zLCAoZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKSA9
PiB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgfHwgd2FzVGhyb3duKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5zaG93TWVzc2FnZShXSS5VSVN0cmluZygiVW5hYmxlIHRvIHBhcnNlIGFzIEpTT046
ICVzIikuZm9ybWF0KHJlc3VsdC5kZXNjcmlwdGlvbikpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5yZW1vdmVMb2FkaW5nSW5kaWNh
dG9yKCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX3JlbW90ZU9iamVjdCA9IFdJLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChyZXN1bHQsIHRoaXMucmVzb3VyY2UudGFyZ2V0KTsKLQotICAgICAgICAg
ICAgbGV0IG9iamVjdFRyZWUgPSBuZXcgV0kuT2JqZWN0VHJlZVZpZXcodGhpcy5fcmVtb3RlT2Jq
ZWN0KTsKLSAgICAgICAgICAgIG9iamVjdFRyZWUuc2hvd09ubHlKU09OKCk7Ci0gICAgICAgICAg
ICBvYmplY3RUcmVlLmV4cGFuZCgpOwotCi0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQob2JqZWN0VHJlZS5lbGVtZW50KTsKLSAgICAgICAgfSwgdGhpcy5yZXNvdXJjZS50YXJn
ZXQpOwotICAgIH0KLQotICAgIGNsb3NlZCgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVt
b3RlT2JqZWN0KSB7Ci0gICAgICAgICAgICB0aGlzLl9yZW1vdGVPYmplY3QucmVsZWFzZSgpOwot
ICAgICAgICAgICAgdGhpcy5fcmVtb3RlT2JqZWN0ID0gbnVsbDsKLSAgICAgICAgfQotICAgIH0K
LX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCmluZGV4IDg0
N2E5M2QxMmYxOTU5MzM2ZGRiMTVkYzllYzUxNjA4NzdjNTI1M2UuLmMxYmVhY2I5MDY4ZGZkNDMx
MTdmNmM3Yzg0ODk2ODAyNGQzYzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LmpzCkBAIC0zNSw3ICszNSw5IEBAIFdJLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5DbHVz
CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xh
c3NOYW1lLCBpZGVudGlmaWVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBsZXQgcGF0aENvbXBv
bmVudCA9IG5ldyBXSS5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50KGRpc3BsYXlOYW1lLCBjbGFz
c05hbWUsIGlkZW50aWZpZXIsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGNvbnN0IHRleHRP
bmx5ID0gZmFsc2U7CisgICAgICAgICAgICBjb25zdCBzaG93U2VsZWN0b3JBcnJvd3MgPSB0cnVl
OworICAgICAgICAgICAgbGV0IHBhdGhDb21wb25lbnQgPSBuZXcgV0kuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NOYW1lLCBpZGVudGlmaWVyLCB0ZXh0T25seSwg
c2hvd1NlbGVjdG9yQXJyb3dzKTsKICAgICAgICAgICAgIHBhdGhDb21wb25lbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkV2ZW50LlNpYmxpbmdXYXNTZWxl
Y3RlZCwgdGhpcy5fcGF0aENvbXBvbmVudFNlbGVjdGVkLCB0aGlzKTsKICAgICAgICAgICAgIHBh
dGhDb21wb25lbnQuY29tcGFyaXNvbkRhdGEgPSByZXNvdXJjZTsKICAgICAgICAgICAgIHJldHVy
biBwYXRoQ29tcG9uZW50OwpAQCAtNDMsMzIgKzQ1LDQ3IEBAIFdJLlJlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
bHVzCiAKICAgICAgICAgdGhpcy5fcmVxdWVzdENvbnRlbnRWaWV3ID0gbnVsbDsKICAgICAgICAg
dGhpcy5fcmVzcG9uc2VDb250ZW50VmlldyA9IG51bGw7CisgICAgICAgIHRoaXMuX2N1c3RvbVJl
cXVlc3RDb250ZW50VmlldyA9IG51bGw7CisgICAgICAgIHRoaXMuX2N1c3RvbVJlcXVlc3RDb250
ZW50Vmlld0luaXRpYWxpemVyID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VD
b250ZW50VmlldyA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZp
ZXdDb25zdHJ1Y3RvciA9IG51bGw7CisgICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVu
dFZpZXdJbml0aWFsaXplciA9IG51bGw7CiAKICAgICAgICAgdGhpcy5fcmVxdWVzdFBhdGhDb21w
b25lbnQgPSBjcmVhdGVQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgV0kuVUlTdHJpbmcoIlJlcXVl
c3QiKSwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdEljb25TdHlsZUNsYXNz
TmFtZSwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdElkZW50aWZpZXIpOwor
ICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0UGF0aENvbXBvbmVudCA9IGNyZWF0ZVBhdGhDb21w
b25lbnQuY2FsbCh0aGlzLCBXSS5VSVN0cmluZygiQ3VzdG9tIFJlcXVlc3QiKSwgV0kuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdEljb25TdHlsZUNsYXNzTmFtZSwgV0kuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcuQ3VzdG9tUmVxdWVzdElkZW50aWZpZXIpOwogICAgICAgICB0
aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRoQ29tcG9uZW50LmNhbGwodGhp
cywgV0kuVUlTdHJpbmcoIlJlc3BvbnNlIiksIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LlJlc3BvbnNlSWNvblN0eWxlQ2xhc3NOYW1lLCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5SZXNwb25zZUlkZW50aWZpZXIpOwotICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZVBhdGhD
b21wb25lbnQgPSBjcmVhdGVQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgV0kuVUlTdHJpbmcoIkN1
c3RvbSIpLCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25TdHlsZUNs
YXNzTmFtZSwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ3VzdG9tUmVzcG9uc2VJZGVu
dGlmaWVyKTsKKyAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VQYXRoQ29tcG9uZW50ID0gY3Jl
YXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdJLlVJU3RyaW5nKCJDdXN0b20gUmVzcG9uc2Ui
KSwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJY29uU3R5bGVDbGFzc05h
bWUsIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlc3BvbnNlSWRlbnRpZmll
cik7CiAKICAgICAgICAgaWYgKHRoaXMuX2NhblNob3dSZXF1ZXN0Q29udGVudFZpZXcoKSkgewog
ICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQubmV4dFNpYmxpbmcgPSB0aGlz
Ll9yZXNwb25zZVBhdGhDb21wb25lbnQ7CiAgICAgICAgICAgICB0aGlzLl9yZXNwb25zZVBhdGhD
b21wb25lbnQucHJldmlvdXNTaWJsaW5nID0gdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQ7CisK
KyAgICAgICAgICAgIHRoaXMuX3RyeUVuYWJsZUN1c3RvbVJlcXVlc3RDb250ZW50VmlldygpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFNpbmNlIGEgY3VzdG9tIHJlc3BvbnNlIGNv
bnRlbnQgdmlldyBtYXkgb25seSBiZWNvbWUgYXZhaWxhYmxlIGFmdGVyIGEgcmVzcG9uc2UgaXMg
cmVjZWl2ZWQKICAgICAgICAgLy8gd2UgbmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIHJlc3Rv
cmUgLyBwcmVmZXIgdGhlIGN1c3RvbSBjb250ZW50IHZpZXcuIEZvciBleGFtcGxlIGlmIHVzZXJz
CiAgICAgICAgIC8vIGFsd2F5cyB3YW50IHRvIHByZWZlciB0aGUgSlNPTiB2aWV3IHRvIHRoZSBu
b3JtYWwgUmVzcG9uc2UgdGV4dCB2aWV3LgogCi0gICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50
Vmlld1NldHRpbmcgPSBuZXcgV0kuU2V0dGluZygicmVzb3VyY2UtY3VycmVudC12aWV3LSIgKyB0
aGlzLl9yZXNvdXJjZS51cmwuaGFzaCwgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVz
cG9uc2VJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGlu
ZyA9IG5ldyBXSS5TZXR0aW5nKCJyZXNvdXJjZS1jdXJyZW50LXZpZXctIiArIHRoaXMuX3Jlc291
cmNlLnVybC5oYXNoLCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXNwb25z
ZUlkZW50aWZpZXIpOwogCiAgICAgICAgIHRoaXMuX3RyeUVuYWJsZUN1c3RvbVJlc3BvbnNlQ29u
dGVudFZpZXcoKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCByZXNvdXJjZSgp
CisgICAgZ2V0IHJlc291cmNlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2U7IH0KKworICAgIGdl
dCByZXF1ZXN0Q29udGVudFZpZXcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291
cmNlOworICAgICAgICBpZiAoIXRoaXMuX2NhblNob3dSZXF1ZXN0Q29udGVudFZpZXcoKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Q29udGVu
dFZpZXcpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdENvbnRlbnRWaWV3OworCisg
ICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldyA9IG5ldyBXSS5UZXh0Q29udGVudFZpZXco
dGhpcy5fcmVzb3VyY2UucmVxdWVzdERhdGEgfHwgIiIsIHRoaXMuX3Jlc291cmNlLnJlcXVlc3RE
YXRhQ29udGVudFR5cGUpOworCisgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0Q29udGVudFZp
ZXc7CiAgICAgfQogCiAgICAgZ2V0IHJlc3BvbnNlQ29udGVudFZpZXcoKQpAQCAtOTQsMjcgKzEx
MSwyMSBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1
c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogICAgICAgICByZXR1cm4gdGhpcy5fcmVz
cG9uc2VDb250ZW50VmlldzsKICAgICB9CiAKLSAgICBnZXQgcmVxdWVzdENvbnRlbnRWaWV3KCkK
KyAgICBnZXQgY3VzdG9tUmVxdWVzdENvbnRlbnRWaWV3KCkKICAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fY2FuU2hvd1JlcXVlc3RDb250ZW50VmlldygpKQotICAgICAgICAgICAgcmV0dXJuIG51
bGw7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RDb250ZW50VmlldykKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLl9yZXF1ZXN0Q29udGVudFZpZXc7Ci0KLSAgICAgICAgdGhpcy5fcmVxdWVz
dENvbnRlbnRWaWV3ID0gbmV3IFdJLlRleHRDb250ZW50Vmlldyh0aGlzLl9yZXNvdXJjZS5yZXF1
ZXN0RGF0YSB8fCAiIiwgdGhpcy5fcmVzb3VyY2UucmVxdWVzdERhdGFDb250ZW50VHlwZSk7Ci0K
LSAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldzsKKyAgICAgICAgaWYgKCF0
aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXcgJiYgdGhpcy5fY3VzdG9tUmVxdWVzdENvbnRl
bnRWaWV3SW5pdGlhbGl6ZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbVJlcXVlc3RDb250
ZW50VmlldyA9IHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50Vmlld0luaXRpYWxpemVyKCk7Cisg
ICAgICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXdJbml0aWFsaXplciA9IG51
bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50
VmlldzsKICAgICB9CiAKICAgICBnZXQgY3VzdG9tUmVzcG9uc2VDb250ZW50VmlldygpCiAgICAg
ewotICAgICAgICBpZiAoIXRoaXMuX2NhblNob3dDdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3KCkp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbVJl
c3BvbnNlQ29udGVudFZpZXcpCi0gICAgICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRl
bnRWaWV3ID0gbmV3IHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdDb25zdHJ1Y3Rvcih0
aGlzLl9yZXNvdXJjZSk7Ci0KKyAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRl
bnRWaWV3ICYmIHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdJbml0aWFsaXplcikgewor
ICAgICAgICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50VmlldyA9IHRoaXMuX2N1c3Rv
bVJlc3BvbnNlQ29udGVudFZpZXdJbml0aWFsaXplcigpOworICAgICAgICAgICAgdGhpcy5fY3Vz
dG9tUmVzcG9uc2VDb250ZW50Vmlld0luaXRpYWxpemVyID0gbnVsbDsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50VmlldzsKICAgICB9CiAKQEAg
LTEyNCw3ICsxMzUsNyBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogICAgICAgICBpZiAoIWN1
cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybiBbXTsKIAotICAgICAgICBpZiAo
IXRoaXMuX2NhblNob3dSZXF1ZXN0Q29udGVudFZpZXcoKSAmJiAhdGhpcy5fY2FuU2hvd0N1c3Rv
bVJlc3BvbnNlQ29udGVudFZpZXcoKSkKKyAgICAgICAgaWYgKCF0aGlzLl9jYW5TaG93UmVxdWVz
dENvbnRlbnRWaWV3KCkgJiYgIXRoaXMuX2NhblNob3dDdXN0b21SZXF1ZXN0Q29udGVudFZpZXco
KSAmJiAhdGhpcy5fY2FuU2hvd0N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcoKSkKICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50Q29udGVudFZpZXcuc2VsZWN0aW9uUGF0aENvbXBvbmVudHM7CiAK
ICAgICAgICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50IHZpZXcncyBwYXRoIGNvbXBvbmVudHMgdG8g
dGhlIHBhdGggY29tcG9uZW50IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB2aWV3LgpAQCAtMTQ5
LDExICsxNjAsNiBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogICAgICAgICB0aGlzLl9zaG93
bkluaXRpYWxDb250ZW50ID0gZmFsc2U7CiAgICAgfQogCi0gICAgc2F2ZVRvQ29va2llKGNvb2tp
ZSkKLSAgICB7Ci0gICAgICAgIGNvb2tpZVtXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5D
b250ZW50Vmlld0lkZW50aWZpZXJDb29raWVLZXldID0gdGhpcy5fY3VycmVudENvbnRlbnRWaWV3
U2V0dGluZy52YWx1ZTsKLSAgICB9Ci0KICAgICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAg
ICAgewogICAgICAgICBsZXQgY29udGVudFZpZXcgPSB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJ
ZGVudGlmaWVyKGNvb2tpZVtXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmll
d0lkZW50aWZpZXJDb29raWVLZXldKTsKQEAgLTE2NSw3ICsxNzEsNyBAQCBXSS5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ2x1cwogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29udGVudCA9IHRy
dWU7CiAKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIo
V0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICByZXR1cm4gdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcihXSS5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgfQogCiAgICAg
c2hvd1Jlc3BvbnNlKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVu
Zm9ybWF0dGVkKQpAQCAtMTk4LDkgKzIwNCwxNCBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50
VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBfY2FuU2hvd0N1c3RvbVJlcXVlc3RD
b250ZW50VmlldygpCisgICAgeworICAgICAgICByZXR1cm4gISEodGhpcy5fY3VzdG9tUmVxdWVz
dENvbnRlbnRWaWV3IHx8IHRoaXMuX2N1c3RvbVJlcXVlc3RDb250ZW50Vmlld0luaXRpYWxpemVy
KTsKKyAgICB9CisKICAgICBfY2FuU2hvd0N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXcoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICEhdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50Vmlld0NvbnN0
cnVjdG9yOworICAgICAgICByZXR1cm4gISEodGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50Vmll
dyB8fCB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6ZXIpOwogICAgIH0K
IAogICAgIF9jb250ZW50Vmlld0ZvclJlc291cmNlVHlwZSh0eXBlKQpAQCAtMjEyLDcgKzIyMyw3
IEBAIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVy
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5DbHVzCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlRl
eHRSZXNvdXJjZUNvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlKTsKIAogICAgICAgICBjYXNlIFdJ
LlJlc291cmNlLlR5cGUuSW1hZ2U6Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UubWlt
ZVR5cGVDb21wb25lbnRzLnR5cGUgPT09ICJpbWFnZS9zdmcreG1sIikKKyAgICAgICAgICAgIGlm
IChXSS5maWxlRXh0ZW5zaW9uRm9yTUlNRVR5cGUodGhpcy5fcmVzb3VyY2UubWltZVR5cGUpID09
PSAic3ZnIikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlNWR0ltYWdlUmVzb3VyY2VD
bHVzdGVyQ29udGVudFZpZXcodGhpcy5fcmVzb3VyY2UpOwogICAgICAgICAgICAgcmV0dXJuIG5l
dyBXSS5JbWFnZVJlc291cmNlQ29udGVudFZpZXcodGhpcy5fcmVzb3VyY2UpOwogCkBAIC0yMzYs
NiArMjQ3LDggQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJj
ZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9yZXF1ZXN0UGF0aENvbXBvbmVudDsKICAgICAgICAgaWYgKGNvbnRlbnRWaWV3ID09PSB0
aGlzLl9yZXNwb25zZUNvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3Bv
bnNlUGF0aENvbXBvbmVudDsKKyAgICAgICAgaWYgKGNvbnRlbnRWaWV3ID09PSB0aGlzLl9jdXN0
b21SZXF1ZXN0Q29udGVudFZpZXcpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VzdG9tUmVx
dWVzdFBhdGhDb21wb25lbnQ7CiAgICAgICAgIGlmIChjb250ZW50VmlldyA9PT0gdGhpcy5fY3Vz
dG9tUmVzcG9uc2VDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21S
ZXNwb25zZVBhdGhDb21wb25lbnQ7CiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gY29u
dGVudFZpZXcuIik7CkBAIC0yNTEsNiArMjY0LDggQEAgV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbmRzIFdJLkNsdXMK
ICAgICAgICAgICAgIHJldHVybiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0
SWRlbnRpZmllcjsKICAgICAgICAgaWYgKGNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZXNwb25zZUNv
bnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LlJlc3BvbnNlSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKGNvbnRlbnRWaWV3ID09PSB0aGlz
Ll9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXcpCisgICAgICAgICAgICByZXR1cm4gV0kuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcuQ3VzdG9tUmVxdWVzdElkZW50aWZpZXI7CiAgICAgICAgIGlm
IChjb250ZW50VmlldyA9PT0gdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50VmlldykKICAgICAg
ICAgICAgIHJldHVybiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXNwb25z
ZUlkZW50aWZpZXI7CiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gY29udGVudFZpZXcu
Iik7CkBAIC0yNjEsMjEgKzI3NiwyOSBAQCBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9
IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ2x1cwogICAgIHsK
ICAgICAgICAgbGV0IGNvbnRlbnRWaWV3VG9TaG93ID0gbnVsbDsKIAorICAgICAgICAvLyBUaGlz
IGlzIGV4cGVjdGVkIHRvIGZhbGwgdGhyb3VnaCBhbGwgdGhlIHdheSB0byB0aGUgYGRlZmF1bHRg
LgogICAgICAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSBXSS5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50Vmlldy5DdXN0b21SZXF1ZXN0SWRlbnRpZmllcjoKKyAgICAgICAgICAg
IGNvbnRlbnRWaWV3VG9TaG93ID0gdGhpcy5jdXN0b21SZXF1ZXN0Q29udGVudFZpZXc7CisgICAg
ICAgICAgICBpZiAoY29udGVudFZpZXdUb1Nob3cpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAogICAgICAgICBjYXNlIFdJLlJlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlmaWVyOgogICAgICAgICAgICAgY29udGVudFZpZXdU
b1Nob3cgPSB0aGlzLnJlcXVlc3RDb250ZW50VmlldzsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmll
cjoKLSAgICAgICAgICAgIGNvbnRlbnRWaWV3VG9TaG93ID0gdGhpcy5yZXNwb25zZUNvbnRlbnRW
aWV3OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoY29udGVudFZpZXdUb1No
b3cpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAog
ICAgICAgICBjYXNlIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkN1c3RvbVJlc3BvbnNl
SWRlbnRpZmllcjoKICAgICAgICAgICAgIGNvbnRlbnRWaWV3VG9TaG93ID0gdGhpcy5jdXN0b21S
ZXNwb25zZUNvbnRlbnRWaWV3OworICAgICAgICAgICAgaWYgKGNvbnRlbnRWaWV3VG9TaG93KQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gZmFsbHRocm91Z2gKKyAgICAg
ICAgY2FzZSBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXI6
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZW50Vmlld1RvU2hvdyA9IHRoaXMu
cmVzcG9uc2VDb250ZW50VmlldzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFjb250ZW50Vmlld1RvU2hvdykKLSAgICAgICAgICAgIGNvbnRlbnRWaWV3VG9T
aG93ID0gdGhpcy5yZXNwb25zZUNvbnRlbnRWaWV3OwotCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGNvbnRlbnRWaWV3VG9TaG93KTsKIAogICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdT
ZXR0aW5nLnZhbHVlID0gdGhpcy5faWRlbnRpZmllckZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3
VG9TaG93KTsKQEAgLTMxNywzMiArMzQwLDQzIEBAIFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5DbHVzCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBfY2FuVXNlSlNPTkNvbnRlbnRWaWV3Rm9yQ29udGVudChj
b250ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnQuaXNKU09OKChqc29uKSA9PiBq
c29uICYmICh0eXBlb2YganNvbiA9PT0gIm9iamVjdCIgfHwgQXJyYXkuaXNBcnJheShqc29uKSkp
OworICAgIH0KKworICAgIF90cnlFbmFibGVDdXN0b21SZXF1ZXN0Q29udGVudFZpZXcoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9jYW5Vc2VKU09OQ29udGVudFZpZXdGb3JDb250ZW50KHRo
aXMuX3Jlc291cmNlLnJlcXVlc3REYXRhKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9jdXN0b21SZXF1ZXN0Q29udGVudFZpZXdJbml0aWFsaXplciA9ICgpID0+IG5ldyBX
SS5KU09OQ29udGVudFZpZXcodGhpcy5fcmVzb3VyY2UucmVxdWVzdERhdGEsIHRoaXMuX3Jlc291
cmNlKTsKKworICAgICAgICB0aGlzLl9jdXN0b21SZXF1ZXN0UGF0aENvbXBvbmVudC5kaXNwbGF5
TmFtZSA9IFdJLlVJU3RyaW5nKCJSZXF1ZXN0IChKU09OKSIpOworICAgICAgICB0aGlzLl9jdXN0
b21SZXF1ZXN0UGF0aENvbXBvbmVudC5wcmV2aW91c1NpYmxpbmcgPSB0aGlzLl9yZXF1ZXN0UGF0
aENvbXBvbmVudDsKKyAgICAgICAgdGhpcy5fY3VzdG9tUmVxdWVzdFBhdGhDb21wb25lbnQubmV4
dFNpYmxpbmcgPSB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQ7CisgICAgICAgIHRoaXMuX3Jl
cXVlc3RQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gdGhpcy5fY3VzdG9tUmVxdWVzdFBhdGhD
b21wb25lbnQ7CisgICAgICAgIHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudC5wcmV2aW91c1Np
YmxpbmcgPSB0aGlzLl9jdXN0b21SZXF1ZXN0UGF0aENvbXBvbmVudDsKKyAgICB9CisKICAgICBf
dHJ5RW5hYmxlQ3VzdG9tUmVzcG9uc2VDb250ZW50VmlldygpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3Jlc291cmNlLmhhc1Jlc3BvbnNlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgdGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50Vmlld0NvbnN0cnVjdG9yID0gdGhpcy5f
Y3VzdG9tQ29udGVudFZpZXdDb25zdHJ1Y3RvckZvclJlc291cmNlKHRoaXMuX3Jlc291cmNlKTsK
LSAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3Q29uc3RydWN0b3Ip
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3Jlc291cmNlLnJlcXVlc3RDb250
ZW50KCkKKyAgICAgICAgLnRoZW4oKHtlcnJvciwgY29udGVudH0pID0+IHsKKyAgICAgICAgICAg
IGlmIChlcnJvciB8fCAhY29udGVudCB8fCAhdGhpcy5fY2FuVXNlSlNPTkNvbnRlbnRWaWV3Rm9y
Q29udGVudChjb250ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fY3VzdG9tUmVzcG9uc2VDb250ZW50Vmlld0NvbnN0cnVjdG9yLmN1
c3RvbUNvbnRlbnRWaWV3RGlzcGxheU5hbWUsICJDdXN0b20gUmVzcG9uc2UgQ29udGVudFZpZXdz
IHNob3VsZCBoYXZlIGEgc3RhdGljIGN1c3RvbUNvbnRlbnRWaWV3RGlzcGxheU5hbWUgbWV0aG9k
LiIsIHRoaXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdDb25zdHJ1Y3Rvcik7CisgICAgICAg
ICAgICB0aGlzLl9jdXN0b21SZXNwb25zZUNvbnRlbnRWaWV3SW5pdGlhbGl6ZXIgPSAoKSA9PiBu
ZXcgV0kuSlNPTkNvbnRlbnRWaWV3KGNvbnRlbnQsIHRoaXMuX3Jlc291cmNlKTsKIAotICAgICAg
ICB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQubmV4dFNpYmxpbmcgPSB0aGlzLl9jdXN0b21S
ZXNwb25zZVBhdGhDb21wb25lbnQ7Ci0gICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlUGF0aENv
bXBvbmVudC5wcmV2aW91c1NpYmxpbmcgPSB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQ7Ci0g
ICAgICAgIHRoaXMuX2N1c3RvbVJlc3BvbnNlUGF0aENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IHRo
aXMuX2N1c3RvbVJlc3BvbnNlQ29udGVudFZpZXdDb25zdHJ1Y3Rvci5jdXN0b21Db250ZW50Vmll
d0Rpc3BsYXlOYW1lKCk7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZVBhdGhDb21w
b25lbnQuZGlzcGxheU5hbWUgPSBXSS5VSVN0cmluZygiUmVzcG9uc2UgKEpTT04pIik7CisgICAg
ICAgICAgICB0aGlzLl9jdXN0b21SZXNwb25zZVBhdGhDb21wb25lbnQucHJldmlvdXNTaWJsaW5n
ID0gdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OworICAgICAgICAgICAgdGhpcy5fcmVzcG9u
c2VQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gdGhpcy5fY3VzdG9tUmVzcG9uc2VQYXRoQ29t
cG9uZW50OwogCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRl
bnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9Ci0K
LSAgICBfY3VzdG9tQ29udGVudFZpZXdDb25zdHJ1Y3RvckZvclJlc291cmNlKHJlc291cmNlKQot
ICAgIHsKLSAgICAgICAgbGV0IG1pbWVUeXBlID0gdGhpcy5fcmVzb3VyY2UubWltZVR5cGU7Ci0g
ICAgICAgIGxldCBmaWxlRXh0ZW5zaW9uID0gV0kuZmlsZUV4dGVuc2lvbkZvck1JTUVUeXBlKG1p
bWVUeXBlKTsKLSAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24gPT09ICJqc29uIikKLSAgICAgICAg
ICAgIHJldHVybiBXSS5KU09OUmVzb3VyY2VDb250ZW50VmlldzsKLQotICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRl
bnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogfTsKIApAQCAtMzUyLDQgKzM4Niw1IEBAIFdJLlJlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3LlJlcXVlc3RJY29uU3R5bGVDbGFzc05hbWUgPSAicmVxdWVzdC1pY29uIjsKIFdJ
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWNvblN0eWxlQ2xhc3NOYW1lID0g
InJlc3BvbnNlLWljb24iOwogV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdElk
ZW50aWZpZXIgPSAicmVxdWVzdCI7CiBXSS5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNw
b25zZUlkZW50aWZpZXIgPSAicmVzcG9uc2UiOworV0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZp
ZXcuQ3VzdG9tUmVxdWVzdElkZW50aWZpZXIgPSAiY3VzdG9tLXJlcXVlc3QiOwogV0kuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcuQ3VzdG9tUmVzcG9uc2VJZGVudGlmaWVyID0gImN1c3RvbS1y
ZXNwb25zZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9XZWJTb2NrZXREYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9XZWJTb2NrZXREYXRhR3JpZE5vZGUuanMKaW5kZXggMWE0MDY2
ZWUyYWI2NGM5ZmFlNDM2OWVhNTdiZGU0M2E4ODNmOGQ2Mi4uMmY5MDRjNmQxODkyYTUyMDUwNDEx
ZWZiNjJkMWRlOTYyOGQ5NDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0RGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldERhdGFHcmlkTm9kZS5q
cwpAQCAtNjYsMTEgKzY2LDcgQEAgV0kuV2ViU29ja2V0RGF0YUdyaWROb2RlID0gY2xhc3MgV2Vi
U29ja2V0RGF0YUdyaWROb2RlIGV4dGVuZHMgV0kuRGF0YUdyaWROb2RlCiAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
ICAgICAvLyBUaGUgcmVzdWx0IG9mIHRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlIGp1c3QgbmVl
ZCB0aGUgc3RyaW5nIHRvIGV2YWx1YXRlLgotICAgICAgICAgICAgICAgIC8vIFdlIHN0aWxsIG5l
ZWQgdG8gZXhlY3V0ZSB0aGlzLCBob3dldmVyLCBpbiBvcmRlciB0byB0cnktY2F0Y2ggaWYgaXQg
ZmFpbHMuCi0gICAgICAgICAgICAgICAgSlNPTi5wYXJzZSh0aGlzLl9kYXRhLmRhdGEpOwotCisg
ICAgICAgICAgICBpZiAodGhpcy5fZGF0YS5kYXRhLmlzSlNPTigpKSB7CiAgICAgICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiTG9nIEZyYW1lIFZhbHVlIiks
ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdEdyb3VwOiBXSS5SdW50aW1lTWFuYWdlci5Db25zb2xlT2Jq
ZWN0R3JvdXAsCkBAIC04Miw3ICs3OCw3IEBAIFdJLldlYlNvY2tldERhdGFHcmlkTm9kZSA9IGNs
YXNzIFdlYlNvY2tldERhdGFHcmlkTm9kZSBleHRlbmRzIFdJLkRhdGFHcmlkTm9kZQogICAgICAg
ICAgICAgICAgICAgICBsZXQgZXhwcmVzc2lvbiA9ICIoIiArIHRoaXMuX2RhdGEuZGF0YSArICIp
IjsKICAgICAgICAgICAgICAgICAgICAgV0kucnVudGltZU1hbmFnZXIuZXZhbHVhdGVJbkluc3Bl
Y3RlZFdpbmRvdyhleHByZXNzaW9uLCBvcHRpb25zLCBsb2dSZXN1bHQpOwogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgfSBjYXRjaCB7IH0KKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>