<?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>203427</bug_id>
          
          <creation_ts>2019-10-25 11:35:02 -0700</creation_ts>
          <short_desc>Web Inspector: track WI.Script unique display name numbers per Page target</short_desc>
          <delta_ts>2019-10-30 15:50:16 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>202219</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>mattbaker</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583932</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-25 11:35:02 -0700</bug_when>
    <thetext>Since we start getting script events for provisional pages before the navigation commits the unique counters be bound to a page target which changes on navigation and will be created as soon as provisional load starts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583934</commentid>
    <comment_count>1</comment_count>
      <attachid>381949</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-25 11:43:35 -0700</bug_when>
    <thetext>Created attachment 381949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583940</commentid>
    <comment_count>2</comment_count>
      <attachid>381949</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-10-25 11:53:27 -0700</bug_when>
    <thetext>Comment on attachment 381949
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:724
&gt; +    globalObjectCleared(target)

Why are we passing in a target when:

1) We assume it will always be the main target
2) It is never used

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:947
&gt; +        console.assert(target === frame.mainResource.target);

Same as above. Why bother passing in the target when we are just asserting that it is always `frame.mainResource.target`?

&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:28
&gt; +    constructor(parentTarget, targetId, name, connection)

`parentTarget` should be the last parameter, since it is optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583946</commentid>
    <comment_count>3</comment_count>
      <attachid>381949</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-25 12:04:15 -0700</bug_when>
    <thetext>Comment on attachment 381949
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:724
&gt;&gt; +    globalObjectCleared(target)
&gt; 
&gt; Why are we passing in a target when:
&gt; 
&gt; 1) We assume it will always be the main target
&gt; 2) It is never used

This is preparation for the next step (see https://webkit.org/b/202219) where this method could be called for provisional target as well, that will change the assumption (1) to a condition. For now it&apos;s used in the assert to validate the assumptions but I can remove that if you feel like there is a problem.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:947
&gt;&gt; +        console.assert(target === frame.mainResource.target);
&gt; 
&gt; Same as above. Why bother passing in the target when we are just asserting that it is always `frame.mainResource.target`?

This will be used in the next changes which would enable agents on the provisional targets early. The target is going to be used to find correct map of frames. Basically NetworkManager will have a map target-&gt;{frameId-&gt;frame}. In general most manager methods should have target as a parameter to keep per target state.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:28
&gt;&gt; +    constructor(parentTarget, targetId, name, connection)
&gt; 
&gt; `parentTarget` should be the last parameter, since it is optional.

Well, it is nullable but not optional, I&apos;d like all callers to pass it explicitly, so that relations between the targets are clear from the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584008</commentid>
    <comment_count>4</comment_count>
      <attachid>381949</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-25 14:24:31 -0700</bug_when>
    <thetext>Comment on attachment 381949
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:724
&gt;&gt;&gt; +    globalObjectCleared(target)
&gt;&gt; 
&gt;&gt; Why are we passing in a target when:
&gt;&gt; 
&gt;&gt; 1) We assume it will always be the main target
&gt;&gt; 2) It is never used
&gt; 
&gt; This is preparation for the next step (see https://webkit.org/b/202219) where this method could be called for provisional target as well, that will change the assumption (1) to a condition. For now it&apos;s used in the assert to validate the assumptions but I can remove that if you feel like there is a problem.

If this isn&apos;t directly needed for this patch, please do not include it in this patch.  That makes it harder to bisect/rollout regressions, and we generally don&apos;t like doing that.

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:947
&gt;&gt;&gt; +        console.assert(target === frame.mainResource.target);
&gt;&gt; 
&gt;&gt; Same as above. Why bother passing in the target when we are just asserting that it is always `frame.mainResource.target`?
&gt; 
&gt; This will be used in the next changes which would enable agents on the provisional targets early. The target is going to be used to find correct map of frames. Basically NetworkManager will have a map target-&gt;{frameId-&gt;frame}. In general most manager methods should have target as a parameter to keep per target state.

If this isn&apos;t directly needed for this patch, please do not include it in this patch.  That makes it harder to bisect/rollout regressions, and we generally don&apos;t like doing that.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:149
&gt; +    _connectToTarget(parentTarget, targetInfo)

This function should be moved to the &quot;Private&quot; section below.  I believe I asked you to do this in the last patch/review as well.

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:254
&gt; +    _uniqueNumbersForTarget()

NIT: I&apos;d rename this to be more explicit, like `_uniqueDisplayNameNumbersForRootTarget()`.

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:256
&gt; +        if (!WI.Script._rootTargetToUniqueNumbers)

NIT: I&apos;d rename this to something more straightforward, like `_uniqueDisplayNameNumbersForRootTargetMap`.

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:259
&gt; +        let rootTarget = this._target.rootTarget;

It is possible for a `WI.Script` to not have a `_target`, so we should either assert that we can&apos;t reach this code or use a special key if `this instanceof WI.LocalScript`.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:-287
&gt; -    constructor(parentTarget, workerId)

Please update any construction sites to not pass any arguments.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:-310
&gt; -    constructor(parentTarget, targetId)

Please update any construction sites to not pass any arguments.

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:35
&gt; +        super(null, &quot;multi&quot;, WI.UIString(&quot;Web Page&quot;), WI.TargetType.WebPage, InspectorBackend.backendConnection);

Style: we prefer creating constants for things like this so we can know at the callsite what the primitive is expected to be used for (assuming that it isn&apos;d derivable from the value itself):
```
    const parentTarget = null;
    const targetId = &quot;multi&quot;
    super(parentTarget, targetId, WI.UIString(&quot;Web Page&quot;), WI.TargetType.WebPage, InspectorBackend.backendConnection);
```

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:32
&gt; +        this._parentTarget = parentTarget;

Please add a `console.assert(parentTarget === null || parentTarget instanceof WI.Target);` if you want to enforce &quot;nullable, not optional&quot;.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:157
&gt; +        if (this._type === InspectorBackend.Enum.Target.TargetInfoType.Page)

This should use `WI.TargetType.Page`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584064</commentid>
    <comment_count>5</comment_count>
      <attachid>381949</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-25 16:03:51 -0700</bug_when>
    <thetext>Comment on attachment 381949
Patch

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

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:724
&gt;&gt;&gt;&gt; +    globalObjectCleared(target)
&gt;&gt;&gt; 
&gt;&gt;&gt; Why are we passing in a target when:
&gt;&gt;&gt; 
&gt;&gt;&gt; 1) We assume it will always be the main target
&gt;&gt;&gt; 2) It is never used
&gt;&gt; 
&gt;&gt; This is preparation for the next step (see https://webkit.org/b/202219) where this method could be called for provisional target as well, that will change the assumption (1) to a condition. For now it&apos;s used in the assert to validate the assumptions but I can remove that if you feel like there is a problem.
&gt; 
&gt; If this isn&apos;t directly needed for this patch, please do not include it in this patch.  That makes it harder to bisect/rollout regressions, and we generally don&apos;t like doing that.

Removed.

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:947
&gt;&gt;&gt;&gt; +        console.assert(target === frame.mainResource.target);
&gt;&gt;&gt; 
&gt;&gt;&gt; Same as above. Why bother passing in the target when we are just asserting that it is always `frame.mainResource.target`?
&gt;&gt; 
&gt;&gt; This will be used in the next changes which would enable agents on the provisional targets early. The target is going to be used to find correct map of frames. Basically NetworkManager will have a map target-&gt;{frameId-&gt;frame}. In general most manager methods should have target as a parameter to keep per target state.
&gt; 
&gt; If this isn&apos;t directly needed for this patch, please do not include it in this patch.  That makes it harder to bisect/rollout regressions, and we generally don&apos;t like doing that.

Removed.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:149
&gt;&gt; +    _connectToTarget(parentTarget, targetInfo)
&gt; 
&gt; This function should be moved to the &quot;Private&quot; section below.  I believe I asked you to do this in the last patch/review as well.

Done. I realized that I didn&apos;t include it to the original change which is why I&apos;m updating it here :-)

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:254
&gt;&gt; +    _uniqueNumbersForTarget()
&gt; 
&gt; NIT: I&apos;d rename this to be more explicit, like `_uniqueDisplayNameNumbersForRootTarget()`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:256
&gt;&gt; +        if (!WI.Script._rootTargetToUniqueNumbers)
&gt; 
&gt; NIT: I&apos;d rename this to something more straightforward, like `_uniqueDisplayNameNumbersForRootTargetMap`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:259
&gt;&gt; +        let rootTarget = this._target.rootTarget;
&gt; 
&gt; It is possible for a `WI.Script` to not have a `_target`, so we should either assert that we can&apos;t reach this code or use a special key if `this instanceof WI.LocalScript`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:-287
&gt;&gt; -    constructor(parentTarget, workerId)
&gt; 
&gt; Please update any construction sites to not pass any arguments.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:-310
&gt;&gt; -    constructor(parentTarget, targetId)
&gt; 
&gt; Please update any construction sites to not pass any arguments.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:35
&gt;&gt; +        super(null, &quot;multi&quot;, WI.UIString(&quot;Web Page&quot;), WI.TargetType.WebPage, InspectorBackend.backendConnection);
&gt; 
&gt; Style: we prefer creating constants for things like this so we can know at the callsite what the primitive is expected to be used for (assuming that it isn&apos;d derivable from the value itself):
&gt; ```
&gt;     const parentTarget = null;
&gt;     const targetId = &quot;multi&quot;
&gt;     super(parentTarget, targetId, WI.UIString(&quot;Web Page&quot;), WI.TargetType.WebPage, InspectorBackend.backendConnection);
&gt; ```

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:32
&gt;&gt; +        this._parentTarget = parentTarget;
&gt; 
&gt; Please add a `console.assert(parentTarget === null || parentTarget instanceof WI.Target);` if you want to enforce &quot;nullable, not optional&quot;.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:157
&gt;&gt; +        if (this._type === InspectorBackend.Enum.Target.TargetInfoType.Page)
&gt; 
&gt; This should use `WI.TargetType.Page`.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584065</commentid>
    <comment_count>6</comment_count>
      <attachid>381976</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-25 16:04:11 -0700</bug_when>
    <thetext>Created attachment 381976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584075</commentid>
    <comment_count>7</comment_count>
      <attachid>381976</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-25 16:16:38 -0700</bug_when>
    <thetext>Comment on attachment 381976
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:-728
&gt; -        WI.Script.resetUniqueDisplayNameNumbers();

We actually still probably want to do something like this (but specific to the current `WI.Target`), such as if the developer refreshes the page, which would create a new global object but would _not_ create a new `WI.Target`.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:175
&gt; +        let connection = new InspectorBackend.TargetConnection();

Style: we don&apos;t add `()` if there are no arguments for a constructor

&gt; Source/WebInspectorUI/UserInterface/Controllers/WorkerManager.js:48
&gt; +        let connection = new InspectorBackend.WorkerConnection();

Style: we don&apos;t add `()` if there are no arguments for a constructor

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:260
&gt; +        console.assert(this._target);

Do we expect this to ever be called by a `WI.Script` that does _not_ have a `_target`?  AFAIK, the only situation of this happening is for the bootstrap script (see `WI.NetworkManager.prototype.async createBootstrapScript`), which shouldn&apos;t ever make it to this function anyways.  Typically, we either have an assertion or a fallback path, not both (the only exception to this is for early-returns, or cases where the lack of the value would cause an exception).

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:261
&gt; +        if (this._target) {

Style: we don&apos;t add `{` and `}` if the body of the `if` is only one line

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:265
&gt; +                WI.Script._keyForNoTarget = &quot;no-target&quot;;

`WeakMap`s require that the key be an object, so you can&apos;t just use a string.  In the past, I&apos;ve used something like `{noTarget: true}` as the key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584192</commentid>
    <comment_count>8</comment_count>
      <attachid>381976</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-25 23:38:33 -0700</bug_when>
    <thetext>Comment on attachment 381976
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:-728
&gt;&gt; -        WI.Script.resetUniqueDisplayNameNumbers();
&gt; 
&gt; We actually still probably want to do something like this (but specific to the current `WI.Target`), such as if the developer refreshes the page, which would create a new global object but would _not_ create a new `WI.Target`.

Good point. Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:175
&gt;&gt; +        let connection = new InspectorBackend.TargetConnection();
&gt; 
&gt; Style: we don&apos;t add `()` if there are no arguments for a constructor

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WorkerManager.js:48
&gt;&gt; +        let connection = new InspectorBackend.WorkerConnection();
&gt; 
&gt; Style: we don&apos;t add `()` if there are no arguments for a constructor

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:260
&gt;&gt; +        console.assert(this._target);
&gt; 
&gt; Do we expect this to ever be called by a `WI.Script` that does _not_ have a `_target`?  AFAIK, the only situation of this happening is for the bootstrap script (see `WI.NetworkManager.prototype.async createBootstrapScript`), which shouldn&apos;t ever make it to this function anyways.  Typically, we either have an assertion or a fallback path, not both (the only exception to this is for early-returns, or cases where the lack of the value would cause an exception).

I wasn&apos;t sure if scripts with no target could make it to here. Left only the assertion and check that target is present before calling rootTarget to avoid an exception. &apos;undedined&apos; key should give a reasonable fallback should the assertion ever fail.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:261
&gt;&gt; +        if (this._target) {
&gt; 
&gt; Style: we don&apos;t add `{` and `}` if the body of the `if` is only one line

Done. I added them here for consistency with the other branch, which is actually a requirement in many style guides (no {} around single line statements unless another branch has {}).

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:265
&gt;&gt; +                WI.Script._keyForNoTarget = &quot;no-target&quot;;
&gt; 
&gt; `WeakMap`s require that the key be an object, so you can&apos;t just use a string.  In the past, I&apos;ve used something like `{noTarget: true}` as the key.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584193</commentid>
    <comment_count>9</comment_count>
      <attachid>382002</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-25 23:38:51 -0700</bug_when>
    <thetext>Created attachment 382002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585498</commentid>
    <comment_count>10</comment_count>
      <attachid>382002</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-30 14:06:52 -0700</bug_when>
    <thetext>Comment on attachment 382002
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:174
&gt; +        console.assert(parentTarget.hasCommand(&quot;Target.sendMessageToTarget&quot;));

NIT: it would probably be better to keep this inside the constructor of `InspectorBackend.TargetConnection` (even if the constructor is empty otherwise, we do this in a few places in Web Inspector code), but I&apos;m fine with this either way since we only create it here.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WorkerManager.js:47
&gt; +        console.assert(target.hasCommand(&quot;Worker.sendMessageToWorker&quot;));

Ditto (TargetManager.js:174)

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:63
&gt; +            this._uniqueDisplayNameNumber = this.constructor._nextUniqueConsoleDisplayNameNumber();

Shouldn&apos;t this be `this._nextUniqueConsoleDisplayNameNumber()`?

&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:269
&gt; +        if (this._target)

If you&apos;re asserting that it exists on the line above, you don&apos;t need to add an `if` for it.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:289
&gt; +        let workerId = this.target.identifier;

I&apos;d either inline this (to match `InspectorBackend.TargetConnection.prototype.sendMessageToBackend`) or change `InspectorBackend.TargetConnection.prototype.sendMessageToBackend` to also have a variable (for consistency).

&gt; Source/WebInspectorUI/UserInterface/Protocol/DirectBackendTarget.js:35
&gt; +        const parentTarget = null;
&gt; +        const targetId = &quot;direct&quot;;

Style: we try to match the order of variable declarations with the order in which they&apos;re used as arguments. so please move these above the `let`.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:32
&gt; +        console.assert(parentTarget === null || parentTarget instanceof WI.Target);

Style: we usually put assertions before the `super()` call, so that we can check the type/value before anything has had a chance to modify it.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:158
&gt; +        if (this._type === WI.TargetType.Page)

Do we ever have a situation where a page target has a parent target?  If so, isn&apos;t that a bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585528</commentid>
    <comment_count>11</comment_count>
      <attachid>382002</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-30 14:44:02 -0700</bug_when>
    <thetext>Comment on attachment 382002
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:174
&gt;&gt; +        console.assert(parentTarget.hasCommand(&quot;Target.sendMessageToTarget&quot;));
&gt; 
&gt; NIT: it would probably be better to keep this inside the constructor of `InspectorBackend.TargetConnection` (even if the constructor is empty otherwise, we do this in a few places in Web Inspector code), but I&apos;m fine with this either way since we only create it here.

I&apos;d love to keep it inside the constructor, the problem is parentTarget is not known there yet because TargetConnection.target is not set yet. This is a chicken and egg problem as Target and TargetConnection reference each other and we cannot pass Target to the TargetConnection constructor.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WorkerManager.js:47
&gt;&gt; +        console.assert(target.hasCommand(&quot;Worker.sendMessageToWorker&quot;));
&gt; 
&gt; Ditto (TargetManager.js:174)

See above.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:63
&gt;&gt; +            this._uniqueDisplayNameNumber = this.constructor._nextUniqueConsoleDisplayNameNumber();
&gt; 
&gt; Shouldn&apos;t this be `this._nextUniqueConsoleDisplayNameNumber()`?

That&apos;s what it is currently, did you mean _nextUniqueDisplayNameNumber() ?

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:269
&gt;&gt; +        if (this._target)
&gt; 
&gt; If you&apos;re asserting that it exists on the line above, you don&apos;t need to add an `if` for it.

Done. I was worried about possible exceptions here in case we hit this assert.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:289
&gt;&gt; +        let workerId = this.target.identifier;
&gt; 
&gt; I&apos;d either inline this (to match `InspectorBackend.TargetConnection.prototype.sendMessageToBackend`) or change `InspectorBackend.TargetConnection.prototype.sendMessageToBackend` to also have a variable (for consistency).

Updated the other place as well, though it makes less sense there. I extracted it in a var here for documentation purposes to make it clear that target id is worker id in this case.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/DirectBackendTarget.js:35
&gt;&gt; +        const targetId = &quot;direct&quot;;
&gt; 
&gt; Style: we try to match the order of variable declarations with the order in which they&apos;re used as arguments. so please move these above the `let`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:32
&gt;&gt; +        console.assert(parentTarget === null || parentTarget instanceof WI.Target);
&gt; 
&gt; Style: we usually put assertions before the `super()` call, so that we can check the type/value before anything has had a chance to modify it.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:158
&gt;&gt; +        if (this._type === WI.TargetType.Page)
&gt; 
&gt; Do we ever have a situation where a page target has a parent target?  If so, isn&apos;t that a bug?

It always has MultiplexingBackendTarget as its parent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585530</commentid>
    <comment_count>12</comment_count>
      <attachid>382002</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-30 14:45:24 -0700</bug_when>
    <thetext>Comment on attachment 382002
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Script.js:63
&gt;&gt;&gt; +            this._uniqueDisplayNameNumber = this.constructor._nextUniqueConsoleDisplayNameNumber();
&gt;&gt; 
&gt;&gt; Shouldn&apos;t this be `this._nextUniqueConsoleDisplayNameNumber()`?
&gt; 
&gt; That&apos;s what it is currently, did you mean _nextUniqueDisplayNameNumber() ?

I see what you meant. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585531</commentid>
    <comment_count>13</comment_count>
      <attachid>382360</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-10-30 14:47:46 -0700</bug_when>
    <thetext>Created attachment 382360
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585601</commentid>
    <comment_count>14</comment_count>
      <attachid>382360</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 15:49:18 -0700</bug_when>
    <thetext>Comment on attachment 382360
Patch for landing

Clearing flags on attachment: 382360

Committed r251816: &lt;https://trac.webkit.org/changeset/251816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585602</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 15:49:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585603</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-30 15:50:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/56761709&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381949</attachid>
            <date>2019-10-25 11:43:35 -0700</date>
            <delta_ts>2019-10-25 16:04:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203427-20191025114334.patch</filename>
            <type>text/plain</type>
            <size>20957</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MzhmYTc5ZTJmNDJhYWM1MTNkYmIzOTRmOTY1MTA1MjBmYjM2NzY5Li5lYjUyYTRlZWE4N2NlNGIy
ZTQwNjAzNmE1NmIwYjVmNTQ5YjNiMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxOS0xMC0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0cmFjayBXSS5TY3JpcHQgdW5pcXVlIGRp
c3BsYXkgbmFtZSBudW1iZXJzIHBlciBQYWdlIHRhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0kuU2NyaXB0IG5vdyBrZWVwcyB0cmFjayBvZiBs
YXN0IHVuaXF1ZSBudW1iZXJzIHZpYSBhIHN0YXRpYyB3ZWFrIG1hcCBrZXllZCBieQorICAgICAg
ICB0aGUgU2NyaXB0J3Mgcm9vdCB0YXJnZXQuIFNvIHdoZW5ldmVyIG5ldyBQYWdlIHRhcmdldCBp
cyBjcmVhdGVkIGFsbCBpdHMgc2NyaXB0cworICAgICAgICB3aWxsIGdldCB1bmlxdWUgZGlzcGxh
eSBudW1iZXJzIGZyb20gYSBuZXcgbmFtZXNwYWNlLgorCisgICAgICAgIFBhcmVudCB0YXJnZXQg
aXMgbm93IHBhc3NlZCB0byBlYWNoIHRhcmdldCBjb25zdHJ1Y3RvciBhbmQgYWxsb3cgdG8gZmlu
ZCBob3N0CisgICAgICAgIHBhZ2UgdGFyZ2V0IGZvciBuZXN0ZWQgdGFyZ2V0cy4gQW1vbmcgb3Ro
ZXIgdGhpbmdzIFdvcmtlckNvbm5lY3Rpb24gYW5kCisgICAgICAgIFRhcmdldENvbm5lY3Rpb24g
dXNlIHBhcmVudFRhcmdldCBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGluc3RlYWQgb2YgY3JlYXRp
bmcKKyAgICAgICAgZXh0cmEgY29weSBvZiB0aGUgc2FtZSBkYXRhIHRoYXQgaXMgYWxyZWFkeSBz
dG9yZWQgaW4gVGFyZ2V0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
ZWJ1Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
Lmdsb2JhbE9iamVjdENsZWFyZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvTmV0d29ya01hbmFnZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5
cGUuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJv
dG90eXBlLnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5
cGUuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdl
ci5wcm90b3R5cGUuX2Nvbm5lY3RUb1RhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2Vy
LnByb3RvdHlwZS5fY3JlYXRlVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1dvcmtlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5Xb3JrZXJNYW5hZ2VyLnByb3Rv
dHlwZS53b3JrZXJDcmVhdGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3Jp
cHQuanM6CisgICAgICAgIChXSS5TY3JpcHQpOgorICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlw
ZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlwZS5fbmV4dFVu
aXF1ZURpc3BsYXlOYW1lTnVtYmVyKToKKyAgICAgICAgKFdJLlNjcmlwdC5wcm90b3R5cGUuX25l
eHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIpOgorICAgICAgICAoV0kuU2NyaXB0LnBy
b3RvdHlwZS5fdW5pcXVlTnVtYmVyc0ZvclRhcmdldCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Xb3Jr
ZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgIChJ
bnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yQmFj
a2VuZC5UYXJnZXRDb25uZWN0aW9uLnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLlRhcmdldENvbm5lY3Rpb24pOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLkRl
YnVnZ2VyT2JzZXJ2ZXIucHJvdG90eXBlLmdsb2JhbE9iamVjdENsZWFyZWQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5qczoKKyAgICAgICAg
KFdJLkRpcmVjdEJhY2tlbmRUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJLk11bHRpcGxleGlu
Z0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRh
cmdldC5qczoKKyAgICAgICAgKFdJLlBhZ2VUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzOgorICAgICAgICAoV0kuUnVudGltZU9ic2Vy
dmVyLnByb3RvdHlwZS5leGVjdXRpb25Db250ZXh0Q3JlYXRlZCk6CisgICAgICAgIChXSS5SdW50
aW1lT2JzZXJ2ZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0Lmpz
OgorICAgICAgICAoV0kuVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5cGUuZ2V0
IHBhcmVudFRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLmdldCByb290VGFy
Z2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qczoK
KyAgICAgICAgKFdJLldvcmtlclRhcmdldCk6CisKIDIwMTktMTAtMjQgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYXNzZXJ0
aW9uIGZhaWx1cmUgYXQgR2VuZXJhbFN0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qczozNDoyMwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IDM5NzdlMjI4M2UyNTEwYjVi
N2U0MmNkOWE1NTcyMDFkZTljZThlMDQuLjFmZTJlNWE2YjU2ZTNkZTE4Mzc4MDUwZDU0MGVmMjhi
ZGE3YzQ4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTcyMSwx
MiArNzIxLDExIEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBicmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKICAg
ICB9CiAKLSAgICBnbG9iYWxPYmplY3RDbGVhcmVkKCkKKyAgICBnbG9iYWxPYmplY3RDbGVhcmVk
KHRhcmdldCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCA9PT0gV0kubWFp
blRhcmdldCk7CiAgICAgICAgIGxldCB3YXNQYXVzZWQgPSB0aGlzLnBhdXNlZDsKIAotICAgICAg
ICBXSS5TY3JpcHQucmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJlcnMoKTsKLQogICAgICAgICB0
aGlzLl9pbnRlcm5hbFdlYktpdFNjcmlwdHMgPSBbXTsKICAgICAgICAgdGhpcy5fdGFyZ2V0RGVi
dWdnZXJEYXRhTWFwLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMK
aW5kZXggODU0MGJkMmQwZjlkZjZkNzY5MTg5ZTg4YjgyNTZkMDJiZWY0MDM4MS4uMDc0OTI3NmY1
ZDUwZGFkYTRiYjZiNTdiODI4N2E3NTYzNWM5MTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29y
a01hbmFnZXIuanMKQEAgLTkzNiw3ICs5MzYsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNz
IE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBSdW50aW1lT2JzZXJ2
ZXIKIAotICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQYXlsb2FkKQorICAgIGV4
ZWN1dGlvbkNvbnRleHRDcmVhdGVkKHRhcmdldCwgY29udGV4dFBheWxvYWQpCiAgICAgewogICAg
ICAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lRm9ySWRlbnRpZmllcihjb250ZXh0UGF5bG9hZC5m
cmFtZUlkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWUpOwpAQCAtOTQ0LDcgKzk0NCw3
IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgZGlzcGxheU5hbWUgPSBj
b250ZXh0UGF5bG9hZC5uYW1lIHx8IGZyYW1lLm1haW5SZXNvdXJjZS5kaXNwbGF5TmFtZTsKLSAg
ICAgICAgbGV0IHRhcmdldCA9IGZyYW1lLm1haW5SZXNvdXJjZS50YXJnZXQ7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRhcmdldCA9PT0gZnJhbWUubWFpblJlc291cmNlLnRhcmdldCk7CiAgICAg
ICAgIGxldCBleGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGFyZ2V0
LCBjb250ZXh0UGF5bG9hZC5pZCwgZGlzcGxheU5hbWUsIGNvbnRleHRQYXlsb2FkLmlzUGFnZUNv
bnRleHQsIGZyYW1lKTsKICAgICAgICAgZnJhbWUuYWRkRXhlY3V0aW9uQ29udGV4dChleGVjdXRp
b25Db250ZXh0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwppbmRleCBi
ZDcyOTc5ZTBjZWI5MGUxZjU3ZGRkYzliYjIwMWM5YTdlNDllMGFkLi40YjdkNTVjM2JhYWM5NGIz
YjA1YzhhZjUyYTY2OGEyMzI5MDY0NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIu
anMKQEAgLTEyMCw3ICsxMjAsNyBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgdGFyZ2V0Q3JlYXRlZChwYXJlbnRUYXJnZXQs
IHRhcmdldEluZm8pCiAgICAgewotICAgICAgICB0aGlzLl90YXJnZXRDcmVhdGVkKHBhcmVudFRh
cmdldCwgdGFyZ2V0SW5mbyk7CisgICAgICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRU
YXJnZXQsIHRhcmdldEluZm8pOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0Q3JlYXRlZCwge3RhcmdldEluZm99KTsK
ICAgICB9CkBAIC0xMzIsNyArMTMyLDcgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdl
dE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0
SW5mbyk7CiAgICAgICAgIHRhcmdldEluZm8uaXNQcm92aXNpb25hbCA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmRlbGV0ZShuZXdUYXJnZXRJZCk7Ci0gICAg
ICAgIHRoaXMuX3RhcmdldENyZWF0ZWQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKTsKKyAgICAg
ICAgdGhpcy5fY29ubmVjdFRvVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbyk7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzLmhhcyhwcmV2aW91c1Rh
cmdldElkKSk7CiAgICAgICAgIHRoaXMuX3N3YXBwZWRUYXJnZXRJZHMuYWRkKHByZXZpb3VzVGFy
Z2V0SWQpOwogCkBAIC0xNDYsNyArMTQ2LDcgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRh
cmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXREZXN0cm95ZWQsIHt0YXJn
ZXRJZH0pOwogICAgIH0KIAotICAgIF90YXJnZXRDcmVhdGVkKHBhcmVudFRhcmdldCwgdGFyZ2V0
SW5mbykKKyAgICBfY29ubmVjdFRvVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbykKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9z
Lmhhcyh0YXJnZXRJbmZvLnRhcmdldElkKSk7CiAKQEAgLTE1Niw4ICsxNTYsOSBAQCBXSS5UYXJn
ZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50
VGFyZ2V0Lmhhc0NvbW1hbmQoIlRhcmdldC5zZW5kTWVzc2FnZVRvVGFyZ2V0IikpOwogICAgICAg
ICBsZXQgY29ubmVjdGlvbiA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLlRhcmdldENvbm5lY3Rpb24o
cGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLnRhcmdldElkKTsKLSAgICAgICAgbGV0IHN1YlRhcmdl
dCA9IHRoaXMuX2NyZWF0ZVRhcmdldCh0YXJnZXRJbmZvLCBjb25uZWN0aW9uKTsKKyAgICAgICAg
bGV0IHN1YlRhcmdldCA9IHRoaXMuX2NyZWF0ZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElu
Zm8sIGNvbm5lY3Rpb24pOwogICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRU
cmFuc2l0aW9uKHN1YlRhcmdldCk7CiAgICAgICAgIHN1YlRhcmdldC5pbml0aWFsaXplKCk7CiAK
QEAgLTE5MiwxOCArMTkzLDE4IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY3JlYXRlVGFy
Z2V0KHRhcmdldEluZm8sIGNvbm5lY3Rpb24pCisgICAgX2NyZWF0ZVRhcmdldChwYXJlbnRUYXJn
ZXQsIHRhcmdldEluZm8sIGNvbm5lY3Rpb24pCiAgICAgewogICAgICAgICBsZXQge3RhcmdldElk
LCB0eXBlfSA9IHRhcmdldEluZm87CiAKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAg
IGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlwZS5QYWdlOgot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5QYWdlVGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmlu
ZygiUGFnZSIpLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuUGFnZVRh
cmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiUGFnZSIpLCBjb25uZWN0
aW9uKTsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdldElu
Zm9UeXBlLldvcmtlcjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgV0kuV29ya2VyVGFyZ2V0KHRh
cmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAg
cmV0dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlT
dHJpbmcoIldvcmtlciIpLCBjb25uZWN0aW9uKTsKICAgICAgICAgY2FzZSAic2VydmljZXdvcmtl
ciI6IC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6ICJzZXJ2aWNld29ya2VyIiB3YXMgcmVuYW1l
ZCB0byAic2VydmljZS13b3JrZXIiLgogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51
bS5UYXJnZXQuVGFyZ2V0SW5mb1R5cGUuU2VydmljZVdvcmtlcjoKLSAgICAgICAgICAgIHJldHVy
biBuZXcgV0kuV29ya2VyVGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiU2VydmljZVdvcmtl
ciIpLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuV29ya2VyVGFyZ2V0
KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJTZXJ2aWNlV29ya2VyIiksIGNv
bm5lY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAgdGhyb3cgIlVua25vd24gVGFyZ2V0IHR5
cGU6ICIgKyB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanMKaW5kZXggMjc3MmQz
MDk3MTU4ODI2NDdkYjRlZDM4OWRjOWFkMmExZWExNjI2ZC4uOTc3M2VhNzJjYWM1NThlODc1YjBm
ZWQ4ZTAwYWI0ZTgyNDRjYmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5hZ2VyLmpzCkBA
IC00NCw4ICs0NCw5IEBAIFdJLldvcmtlck1hbmFnZXIgPSBjbGFzcyBXb3JrZXJNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAKICAgICB3b3JrZXJDcmVhdGVkKHRhcmdldCwgd29ya2VySWQsIHVy
bCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC5oYXNDb21tYW5kKCJXb3Jr
ZXIuc2VuZE1lc3NhZ2VUb1dvcmtlciIpKTsKICAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcg
SW5zcGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uKHRhcmdldCwgd29ya2VySWQpOwotICAg
ICAgICBsZXQgd29ya2VyVGFyZ2V0ID0gbmV3IFdJLldvcmtlclRhcmdldCh3b3JrZXJJZCwgdXJs
LCBjb25uZWN0aW9uKTsKKyAgICAgICAgbGV0IHdvcmtlclRhcmdldCA9IG5ldyBXSS5Xb3JrZXJU
YXJnZXQodGFyZ2V0LCB3b3JrZXJJZCwgdXJsLCBjb25uZWN0aW9uKTsKICAgICAgICAgd29ya2Vy
VGFyZ2V0LmluaXRpYWxpemUoKTsKIAogICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZFRhcmdl
dCh3b3JrZXJUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKaW5kZXggOTNhNDE3MDZkNzNiYTg2NzNjY2UwOGNjMjA4
ZGU1MGQ3NWY4YzhlMS4uODQ5YmE5ODJkYTg3ODljMzg4MjBiMmFmOTgzMTliNzMyMmJhNmVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nj
cmlwdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U2NyaXB0LmpzCkBAIC02MCwyMSArNjAsMTMgQEAgV0kuU2NyaXB0ID0gY2xhc3MgU2NyaXB0IGV4
dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAgICAgIGlmIChpc1dlYkluc3BlY3RvckNvbnNvbGVF
dmFsdWF0aW9uU2NyaXB0KHRoaXMuX3NvdXJjZVVSTCkpIHsKICAgICAgICAgICAgIC8vIEFzc2ln
biBhIHVuaXF1ZSBudW1iZXIgdG8gdGhlIHNjcmlwdCBvYmplY3Qgc28gaXQgd2lsbCBzdGF5IHRo
ZSBzYW1lLgotICAgICAgICAgICAgdGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSB0aGlz
LmNvbnN0cnVjdG9yLl9uZXh0VW5pcXVlQ29uc29sZURpc3BsYXlOYW1lTnVtYmVyKys7CisgICAg
ICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IHRoaXMuY29uc3RydWN0b3Iu
X25leHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIoKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICh0aGlzLl9zb3VyY2VNYXBwaW5nVVJMKQogICAgICAgICAgICAgV0kubmV0d29ya01h
bmFnZXIuZG93bmxvYWRTb3VyY2VNYXAodGhpcy5fc291cmNlTWFwcGluZ1VSTCwgdGhpcy5fdXJs
LCB0aGlzKTsKICAgICB9CiAKLSAgICAvLyBTdGF0aWMKLQotICAgIHN0YXRpYyByZXNldFVuaXF1
ZURpc3BsYXlOYW1lTnVtYmVycygpCi0gICAgewotICAgICAgICBXSS5TY3JpcHQuX25leHRVbmlx
dWVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci0gICAgICAgIFdJLlNjcmlwdC5fbmV4dFVuaXF1ZUNv
bnNvbGVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci0gICAgfQotCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgdGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fdGFyZ2V0OyB9CkBAIC0xNTEsNyArMTQzLDcg
QEAgV0kuU2NyaXB0ID0gY2xhc3MgU2NyaXB0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAg
ICAgIC8vIEFzc2lnbiBhIHVuaXF1ZSBudW1iZXIgdG8gdGhlIHNjcmlwdCBvYmplY3Qgc28gaXQg
d2lsbCBzdGF5IHRoZSBzYW1lLgogICAgICAgICBpZiAoIXRoaXMuX3VuaXF1ZURpc3BsYXlOYW1l
TnVtYmVyKQotICAgICAgICAgICAgdGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSB0aGlz
LmNvbnN0cnVjdG9yLl9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIrKzsKKyAgICAgICAgICAg
IHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gdGhpcy5fbmV4dFVuaXF1ZURpc3BsYXlO
YW1lTnVtYmVyKCk7CiAKICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJBbm9ueW1vdXMgU2Ny
aXB0ICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKTsKICAgICB9CkBA
IC0yNDcsNiArMjM5LDM1IEBAIFdJLlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdJLlNv
dXJjZUNvZGUKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9uZXh0VW5pcXVlRGlzcGxheU5hbWVO
dW1iZXIoKQorICAgIHsKKyAgICAgICAgbGV0IG51bWJlcnMgPSB0aGlzLl91bmlxdWVOdW1iZXJz
Rm9yVGFyZ2V0KCk7CisgICAgICAgIHJldHVybiArK251bWJlcnMubGFzdFVuaXF1ZURpc3BsYXlO
YW1lTnVtYmVyOworICAgIH0KKworICAgIF9uZXh0VW5pcXVlQ29uc29sZURpc3BsYXlOYW1lTnVt
YmVyKCkKKyAgICB7CisgICAgICAgIGxldCBudW1iZXJzID0gdGhpcy5fdW5pcXVlTnVtYmVyc0Zv
clRhcmdldCgpOworICAgICAgICByZXR1cm4gKytudW1iZXJzLmxhc3RVbmlxdWVDb25zb2xlRGlz
cGxheU5hbWVOdW1iZXI7CisgICAgfQorCisgICAgX3VuaXF1ZU51bWJlcnNGb3JUYXJnZXQoKQor
ICAgIHsKKyAgICAgICAgaWYgKCFXSS5TY3JpcHQuX3Jvb3RUYXJnZXRUb1VuaXF1ZU51bWJlcnMp
CisgICAgICAgICAgICBXSS5TY3JpcHQuX3Jvb3RUYXJnZXRUb1VuaXF1ZU51bWJlcnMgPSBuZXcg
V2Vha01hcCgpOworCisgICAgICAgIGxldCByb290VGFyZ2V0ID0gdGhpcy5fdGFyZ2V0LnJvb3RU
YXJnZXQ7CisgICAgICAgIGxldCBudW1iZXJzID0gV0kuU2NyaXB0Ll9yb290VGFyZ2V0VG9Vbmlx
dWVOdW1iZXJzLmdldChyb290VGFyZ2V0KTsKKyAgICAgICAgaWYgKCFudW1iZXJzKSB7CisgICAg
ICAgICAgICBudW1iZXJzID0geworICAgICAgICAgICAgICAgIGxhc3RVbmlxdWVEaXNwbGF5TmFt
ZU51bWJlcjogMCwKKyAgICAgICAgICAgICAgICBsYXN0VW5pcXVlQ29uc29sZURpc3BsYXlOYW1l
TnVtYmVyOiAwCisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kuU2NyaXB0Ll9yb290VGFy
Z2V0VG9VbmlxdWVOdW1iZXJzLnNldChyb290VGFyZ2V0LCBudW1iZXJzKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gbnVtYmVyczsKKyAgICB9CisKICAgICBfcmVzb2x2ZVJlc291cmNlKCkK
ICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBhc3NvY2lhdGUg
YSBTY3JpcHQgd2l0aCBhIFJlc291cmNlIHRocm91Z2ggaWRlbnRpZmllcnMsCkBAIC0zMjAsNiAr
MzQxLDMgQEAgV0kuU2NyaXB0LlNvdXJjZVR5cGUgPSB7CiBXSS5TY3JpcHQuVHlwZUlkZW50aWZp
ZXIgPSAic2NyaXB0IjsKIFdJLlNjcmlwdC5VUkxDb29raWVLZXkgPSAic2NyaXB0LXVybCI7CiBX
SS5TY3JpcHQuRGlzcGxheU5hbWVDb29raWVLZXkgPSAic2NyaXB0LWRpc3BsYXktbmFtZSI7Ci0K
LVdJLlNjcmlwdC5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gMTsKLVdJLlNjcmlwdC5f
bmV4dFVuaXF1ZUNvbnNvbGVEaXNwbGF5TmFtZU51bWJlciA9IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5q
cwppbmRleCBmMjU4YzU3OWEwMjlkY2ZhMjY3NThhZTgxODA4ZGRlMTJkNDAwOTQ3Li4yYTY2M2M3
ODIwODRjYWE0MDNlZmUwODkxZTJlMzVjNmYyMWU5ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMK
QEAgLTI4NCwxOSArMjg0LDEwIEBAIEluc3BlY3RvckJhY2tlbmQuQmFja2VuZENvbm5lY3Rpb24g
PSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQmFja2VuZENvbm5lY3Rpb24gZXh0CiAKIEluc3BlY3Rv
ckJhY2tlbmQuV29ya2VyQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRXb3JrZXJD
b25uZWN0aW9uIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uCiB7Ci0gICAgY29u
c3RydWN0b3IocGFyZW50VGFyZ2V0LCB3b3JrZXJJZCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKCk7
Ci0KLSAgICAgICAgdGhpcy5fcGFyZW50VGFyZ2V0ID0gcGFyZW50VGFyZ2V0OwotICAgICAgICB0
aGlzLl93b3JrZXJJZCA9IHdvcmtlcklkOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3BhcmVudFRhcmdldC5oYXNDb21tYW5kKCJXb3JrZXIuc2VuZE1lc3NhZ2VUb1dvcmtlciIpKTsK
LSAgICB9Ci0KICAgICBzZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKQogICAgIHsKLSAgICAg
ICAgdGhpcy5fcGFyZW50VGFyZ2V0LldvcmtlckFnZW50LnNlbmRNZXNzYWdlVG9Xb3JrZXIodGhp
cy5fd29ya2VySWQsIG1lc3NhZ2UpLmNhdGNoKChlcnJvcikgPT4geworICAgICAgICBsZXQgd29y
a2VySWQgPSB0aGlzLnRhcmdldC5pZGVudGlmaWVyOworICAgICAgICB0aGlzLnRhcmdldC5wYXJl
bnRUYXJnZXQuV29ya2VyQWdlbnQuc2VuZE1lc3NhZ2VUb1dvcmtlcih3b3JrZXJJZCwgbWVzc2Fn
ZSkuY2F0Y2goKGVycm9yKSA9PiB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgZXJyb3JzIGlmIGEg
d29ya2VyIHdlbnQgYXdheSBxdWlja2x5LgogICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0Lmlz
RGVzdHJveWVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwNywxOSArMjk4LDkgQEAg
SW5zcGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2Vu
ZFdvcmtlckNvbm5lY3Rpb24gZXh0ZW4KIAogSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0
aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZFRhcmdldENvbm5lY3Rpb24gZXh0ZW5kcyBJbnNw
ZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24KIHsKLSAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQs
IHRhcmdldElkKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0aGlzLl9wYXJl
bnRUYXJnZXQgPSBwYXJlbnRUYXJnZXQ7Ci0gICAgICAgIHRoaXMuX3RhcmdldElkID0gdGFyZ2V0
SWQ7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcGFyZW50VGFyZ2V0Lmhhc0NvbW1h
bmQoIlRhcmdldC5zZW5kTWVzc2FnZVRvVGFyZ2V0IikpOwotICAgIH0KLQogICAgIHNlbmRNZXNz
YWdlVG9CYWNrZW5kKG1lc3NhZ2UpCiAgICAgewotICAgICAgICB0aGlzLl9wYXJlbnRUYXJnZXQu
VGFyZ2V0QWdlbnQuc2VuZE1lc3NhZ2VUb1RhcmdldCh0aGlzLl90YXJnZXRJZCwgbWVzc2FnZSku
Y2F0Y2goKGVycm9yKSA9PiB7CisgICAgICAgIHRoaXMudGFyZ2V0LnBhcmVudFRhcmdldC5UYXJn
ZXRBZ2VudC5zZW5kTWVzc2FnZVRvVGFyZ2V0KHRoaXMudGFyZ2V0LmlkZW50aWZpZXIsIG1lc3Nh
Z2UpLmNhdGNoKChlcnJvcikgPT4gewogICAgICAgICAgICAgLy8gSWdub3JlIGVycm9ycyBpZiB0
aGUgdGFyZ2V0IHdhcyBkZXN0cm95ZWQgYWZ0ZXIgdGhlIGNvbW1hbmQgd2FzIGRpc3BhdGNoZWQu
CiAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQuaXNEZXN0cm95ZWQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKaW5kZXggMGFmMzJiMWM5
NWM5OTA2YjExOGVlOTk5ZjVhODNmMzkyYjgwMDliMy4uYzAxMmVmNTcwNDM2OTMzNjA3NGQ5Zjk3
NDkxOWM0NTRhYmEwODJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCkBAIC0z
Niw3ICszNiw3IEBAIFdJLkRlYnVnZ2VyT2JzZXJ2ZXIgPSBjbGFzcyBEZWJ1Z2dlck9ic2VydmVy
IGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAKICAgICBnbG9iYWxPYmplY3RD
bGVhcmVkKCkKICAgICB7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5nbG9iYWxPYmplY3RD
bGVhcmVkKCk7CisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5nbG9iYWxPYmplY3RDbGVhcmVk
KHRoaXMuX3RhcmdldCk7CiAgICAgfQogCiAgICAgc2NyaXB0UGFyc2VkKHNjcmlwdElkLCB1cmws
IHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2Ny
aXB0LCBzb3VyY2VVUkwsIHNvdXJjZU1hcFVSTCwgaXNNb2R1bGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EaXJlY3RCYWNrZW5kVGFy
Z2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGly
ZWN0QmFja2VuZFRhcmdldC5qcwppbmRleCA4YmEzZjliOTM2Njk3OWU3MWRlZDE5ZGZhOWQwMDI3
NzMyMjE1OTY1Li40ZjAzNzRmMTE3NGU1OTVjN2UxNzA5Mjg4ZmNhZjgwMWVhZmU0ZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EaXJl
Y3RCYWNrZW5kVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanMKQEAgLTMyLDcgKzMyLDcgQEAgV0ku
RGlyZWN0QmFja2VuZFRhcmdldCA9IGNsYXNzIERpcmVjdEJhY2tlbmRUYXJnZXQgZXh0ZW5kcyBX
SS5UYXJnZXQKICAgICB7CiAgICAgICAgIGxldCB7dHlwZSwgZGlzcGxheU5hbWV9ID0gRGlyZWN0
QmFja2VuZFRhcmdldC5jb25uZWN0aW9uSW5mb0ZvckRlYnVnZ2FibGUoKTsKIAotICAgICAgICBz
dXBlcigiZGlyZWN0IiwgZGlzcGxheU5hbWUsIHR5cGUsIEluc3BlY3RvckJhY2tlbmQuYmFja2Vu
ZENvbm5lY3Rpb24pOworICAgICAgICBzdXBlcihudWxsLCAiZGlyZWN0IiwgZGlzcGxheU5hbWUs
IHR5cGUsIEluc3BlY3RvckJhY2tlbmQuYmFja2VuZENvbm5lY3Rpb24pOwogCiAgICAgICAgIHRo
aXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBXSS5S
dW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCBkaXNwbGF5
TmFtZSwgdHJ1ZSwgbnVsbCk7CiAgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZSA9IG51bGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9N
dWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcwppbmRleCBkODMx
NThhOGE2ZmRiMWFhNGYwZmIwMTM2NjY2ODM2NDdhNGU0NDM3Li5iOGJlOGNkMGY2OGY1MDc4YmE0
Njg0NzU0ZjBkOTc0YWM2NGVjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGlu
Z0JhY2tlbmRUYXJnZXQuanMKQEAgLTMyLDcgKzMyLDcgQEAgV0kuTXVsdGlwbGV4aW5nQmFja2Vu
ZFRhcmdldCA9IGNsYXNzIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJn
ZXQKIHsKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewotICAgICAgICBzdXBlcigibXVsdGkiLCBX
SS5VSVN0cmluZygiV2ViIFBhZ2UiKSwgV0kuVGFyZ2V0VHlwZS5XZWJQYWdlLCBJbnNwZWN0b3JC
YWNrZW5kLmJhY2tlbmRDb25uZWN0aW9uKTsKKyAgICAgICAgc3VwZXIobnVsbCwgIm11bHRpIiwg
V0kuVUlTdHJpbmcoIldlYiBQYWdlIiksIFdJLlRhcmdldFR5cGUuV2ViUGFnZSwgSW5zcGVjdG9y
QmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoQXJy
YXkuc2hhbGxvd0VxdWFsKE9iamVjdC5rZXlzKHRoaXMuX2FnZW50cyksIFsiVGFyZ2V0Il0pLCAi
QSBXZWJQYWdlIHRhcmdldCBzaG91bGQgb25seSBoYXZlIGEgc2luZ2xlIGFnZW50LiIpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1BhZ2VUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9QYWdlVGFyZ2V0LmpzCmluZGV4IDJiMTk5NmFmYmE0NmM5ZjhmYzFkOTQ5ZWNkZDIx
YWIzYmRiZjYxN2QuLmYzMzRjMDgwODRjMDcwNjUyYWEwZGVjNDIxMGE3Y2ExYTU3YTgzNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1Bh
Z2VUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvUGFnZVRhcmdldC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXSS5QYWdlVGFyZ2V0ID0g
Y2xhc3MgUGFnZVRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogewotICAgIGNvbnN0cnVjdG9yKHRh
cmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwg
dGFyZ2V0SWQsIG5hbWUsIGNvbm5lY3Rpb24pCiAgICAgewotICAgICAgICBzdXBlcih0YXJnZXRJ
ZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5QYWdlLCBjb25uZWN0aW9uKTsKKyAgICAgICAgc3VwZXIo
cGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5QYWdlLCBjb25uZWN0
aW9uKTsKIAogICAgICAgICBjb25zdCBpc1BhZ2VDb250ZXh0ID0gdHJ1ZTsKICAgICAgICAgdGhp
cy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1
bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIHRoaXMuZGlz
cGxheU5hbWUsIGlzUGFnZUNvbnRleHQsIG51bGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVy
LmpzCmluZGV4IDIzOTlhYjllNWYzMWJjYjc1NTg5ZDkzNjZiOGJlYjMwYTU5NjE3NjcuLmJkNDkw
YWE5MDA0YWY0MTdiZDdkM2RlZmQ1NjE1MTdiNjQzZGY1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1l
T2JzZXJ2ZXIuanMKQEAgLTI5LDYgKzI5LDYgQEAgV0kuUnVudGltZU9ic2VydmVyID0gY2xhc3Mg
UnVudGltZU9ic2VydmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAKICAg
ICBleGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCkKICAgICB7Ci0gICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQYXlsb2Fk
KTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQodGhp
cy5fdGFyZ2V0LCBjb250ZXh0UGF5bG9hZCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRleCBi
NWZjNDFiYTA5ZWJlZWNkZDI2NWEwM2IyYjQwMWFkNThjOGViODc5Li45YTNkYzgyNTk0MWFiZDA1
Y2ZhZjdjNTYwM2JhNTIzNjlmZmZmOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0yNSwxMCArMjUsMTEg
QEAKIAogV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0gICAg
Y29uc3RydWN0b3IoaWRlbnRpZmllciwgbmFtZSwgdHlwZSwgY29ubmVjdGlvbikKKyAgICBjb25z
dHJ1Y3RvcihwYXJlbnRUYXJnZXQsIGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5lY3Rpb24p
CiAgICAgewogICAgICAgICBzdXBlcigpOwogCisgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9
IHBhcmVudFRhcmdldDsKICAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAg
ICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKQEAg
LTE0OSw2ICsxNTAsMTcgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICAvLyBQdWJsaWMKIAorICAgIGdldCBwYXJlbnRUYXJnZXQoKSB7IHJldHVybiB0
aGlzLl9wYXJlbnRUYXJnZXQ7IH0KKworICAgIGdldCByb290VGFyZ2V0KCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl90eXBlID09PSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdl
dEluZm9UeXBlLlBhZ2UpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgaWYgKHRo
aXMuX3BhcmVudFRhcmdldCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRUYXJnZXQu
cm9vdFRhcmdldDsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCiAgICAgZ2V0IGlkZW50
aWZpZXIoKSB7IHJldHVybiB0aGlzLl9pZGVudGlmaWVyOyB9CiAgICAgc2V0IGlkZW50aWZpZXIo
aWRlbnRpZmllcikgeyB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJU
YXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9X
b3JrZXJUYXJnZXQuanMKaW5kZXggYTM0ZWU5MWYzNzg2M2MwZjA1NDQ5MGE1M2I0NjdhMGNkYjY1
MDljYy4uODNjNzA5MmE1ODcyOGYyYTczZDhhOWQ0Y2U1MmExYTFhZDdiMjg1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFy
Z2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1dvcmtlclRhcmdldC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXSS5Xb3JrZXJUYXJnZXQgPSBj
bGFzcyBXb3JrZXJUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25zdHJ1Y3Rvcih3
b3JrZXJJZCwgbmFtZSwgY29ubmVjdGlvbikKKyAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQs
IHdvcmtlcklkLCBuYW1lLCBjb25uZWN0aW9uKQogICAgIHsKLSAgICAgICAgc3VwZXIod29ya2Vy
SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuV29ya2VyLCBjb25uZWN0aW9uKTsKKyAgICAgICAgc3Vw
ZXIocGFyZW50VGFyZ2V0LCB3b3JrZXJJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5Xb3JrZXIsIGNv
bm5lY3Rpb24pOwogCiAgICAgICAgIGNvbnN0IGlzUGFnZUNvbnRleHQgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMs
IFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIHRo
aXMuZGlzcGxheU5hbWUsIGlzUGFnZUNvbnRleHQsIG51bGwpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381976</attachid>
            <date>2019-10-25 16:04:11 -0700</date>
            <delta_ts>2019-10-25 23:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203427-20191025160410.patch</filename>
            <type>text/plain</type>
            <size>19818</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MzhmYTc5ZTJmNDJhYWM1MTNkYmIzOTRmOTY1MTA1MjBmYjM2NzY5Li5lZGViNTcyZmM5NzFiNjc4
NmMwZmY5NGU0ODU1MGViM2E4Zjk1YzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0xMC0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0cmFjayBXSS5TY3JpcHQgdW5pcXVlIGRp
c3BsYXkgbmFtZSBudW1iZXJzIHBlciBQYWdlIHRhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0kuU2NyaXB0IG5vdyBrZWVwcyB0cmFjayBvZiBs
YXN0IHVuaXF1ZSBudW1iZXJzIHZpYSBhIHN0YXRpYyB3ZWFrIG1hcCBrZXllZCBieQorICAgICAg
ICB0aGUgU2NyaXB0J3Mgcm9vdCB0YXJnZXQuIFNvIHdoZW5ldmVyIG5ldyBQYWdlIHRhcmdldCBp
cyBjcmVhdGVkIGFsbCBpdHMgc2NyaXB0cworICAgICAgICB3aWxsIGdldCB1bmlxdWUgZGlzcGxh
eSBudW1iZXJzIGZyb20gYSBuZXcgbmFtZXNwYWNlLgorCisgICAgICAgIFBhcmVudCB0YXJnZXQg
aXMgbm93IHBhc3NlZCB0byBlYWNoIHRhcmdldCBjb25zdHJ1Y3RvciBhbmQgYWxsb3cgdG8gZmlu
ZCBob3N0CisgICAgICAgIHBhZ2UgdGFyZ2V0IGZvciBuZXN0ZWQgdGFyZ2V0cy4gQW1vbmcgb3Ro
ZXIgdGhpbmdzIFdvcmtlckNvbm5lY3Rpb24gYW5kCisgICAgICAgIFRhcmdldENvbm5lY3Rpb24g
dXNlIHBhcmVudFRhcmdldCBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGluc3RlYWQgb2YgY3JlYXRp
bmcKKyAgICAgICAgZXh0cmEgY29weSBvZiB0aGUgc2FtZSBkYXRhIHRoYXQgaXMgYWxyZWFkeSBz
dG9yZWQgaW4gVGFyZ2V0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
ZWJ1Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
Lmdsb2JhbE9iamVjdENsZWFyZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvVGFyZ2V0TWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBl
LnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZGlk
Q29tbWl0UHJvdmlzaW9uYWxUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90
b3R5cGUudGFyZ2V0RGVzdHJveWVkKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90
eXBlLmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdl
ci5wcm90b3R5cGUuX2Nvbm5lY3RUb1RhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2Vy
LnByb3RvdHlwZS5fY3JlYXRlVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1dvcmtlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5Xb3JrZXJNYW5hZ2VyLnByb3Rv
dHlwZS53b3JrZXJDcmVhdGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3Jp
cHQuanM6CisgICAgICAgIChXSS5TY3JpcHQpOgorICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlw
ZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlwZS5fbmV4dFVu
aXF1ZURpc3BsYXlOYW1lTnVtYmVyKToKKyAgICAgICAgKFdJLlNjcmlwdC5wcm90b3R5cGUuX25l
eHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIpOgorICAgICAgICAoV0kuU2NyaXB0LnBy
b3RvdHlwZS5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzRm9yUm9vdFRhcmdldCk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzOgorICAgICAgICAoSW5zcGVj
dG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFja2Vu
ZCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uLnByb3RvdHlwZS5zZW5kTWVzc2Fn
ZVRvQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLlRhcmdldENvbm5lY3Rpb24p
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5q
czoKKyAgICAgICAgKFdJLkRpcmVjdEJhY2tlbmRUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJ
Lk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvUGFnZVRhcmdldC5qczoKKyAgICAgICAgKFdJLlBhZ2VUYXJnZXQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzOgorICAgICAgICAoV0kuVGFyZ2V0KToK
KyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5cGUuZ2V0IHBhcmVudFRhcmdldCk6CisgICAgICAg
IChXSS5UYXJnZXQucHJvdG90eXBlLmdldCByb290VGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qczoKKyAgICAgICAgKFdJLldvcmtlclRhcmdl
dCk6CisKIDIwMTktMTAtMjQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYXNzZXJ0aW9uIGZhaWx1cmUgYXQgR2VuZXJhbFN0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qczozNDoyMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJN
YW5hZ2VyLmpzCmluZGV4IDM5NzdlMjI4M2UyNTEwYjViN2U0MmNkOWE1NTcyMDFkZTljZThlMDQu
LjcwZjhmOGQ5ZTU1NmJjNzUyMTJlNGIxMzc2NWEwNjUzOTdmMDQ2N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFu
YWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTcyNSw4ICs3MjUsNiBAQCBXSS5EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAg
ICAgICAgIGxldCB3YXNQYXVzZWQgPSB0aGlzLnBhdXNlZDsKIAotICAgICAgICBXSS5TY3JpcHQu
cmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJlcnMoKTsKLQogICAgICAgICB0aGlzLl9pbnRlcm5h
bFdlYktpdFNjcmlwdHMgPSBbXTsKICAgICAgICAgdGhpcy5fdGFyZ2V0RGVidWdnZXJEYXRhTWFw
LmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCmluZGV4IGJkNzI5Nzll
MGNlYjkwZTFmNTdkZGRjOWJiMjAxYzlhN2U0OWUwYWQuLjkxZjBmNmUwYzAxNzgwMjE1N2I3YjJl
Y2Q5NjVmZjQ3OGNmNjRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwpAQCAt
MTIwLDE5ICsxMjAsMTkgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHRhcmdldENyZWF0ZWQocGFyZW50VGFyZ2V0LCB0YXJn
ZXRJbmZvKQogICAgIHsKLSAgICAgICAgdGhpcy5fdGFyZ2V0Q3JlYXRlZChwYXJlbnRUYXJnZXQs
IHRhcmdldEluZm8pOworICAgICAgICB0aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0
LCB0YXJnZXRJbmZvKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldENyZWF0ZWQsIHt0YXJnZXRJbmZvfSk7CiAgICAg
fQogCiAgICAgZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQocGFyZW50VGFyZ2V0LCBwcmV2aW91
c1RhcmdldElkLCBuZXdUYXJnZXRJZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RhcmdldERlc3Ry
b3llZChwcmV2aW91c1RhcmdldElkKTsKKyAgICAgICAgdGhpcy5fZGVzdHJveVRhcmdldChwcmV2
aW91c1RhcmdldElkKTsKICAgICAgICAgbGV0IHRhcmdldEluZm8gPSB0aGlzLl9wcm92aXNpb25h
bFRhcmdldEluZm9zLmdldChuZXdUYXJnZXRJZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRh
cmdldEluZm8pOwogICAgICAgICB0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwgPSBmYWxzZTsKICAg
ICAgICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5kZWxldGUobmV3VGFyZ2V0SWQpOwot
ICAgICAgICB0aGlzLl90YXJnZXRDcmVhdGVkKHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbyk7Cisg
ICAgICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pOwog
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3dhcHBlZFRhcmdldElkcy5oYXMocHJldmlv
dXNUYXJnZXRJZCkpOwogICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzLmFkZChwcmV2aW91
c1RhcmdldElkKTsKIApAQCAtMTQxLDEyICsxNDEsMjcgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNs
YXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHRhcmdldERlc3Ryb3ll
ZCh0YXJnZXRJZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RhcmdldERlc3Ryb3llZCh0YXJnZXRJ
ZCk7CisgICAgICAgIHRoaXMuX2Rlc3Ryb3lUYXJnZXQodGFyZ2V0SWQpOwogCiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0
RGVzdHJveWVkLCB7dGFyZ2V0SWR9KTsKICAgICB9CiAKLSAgICBfdGFyZ2V0Q3JlYXRlZChwYXJl
bnRUYXJnZXQsIHRhcmdldEluZm8pCisgICAgZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCh0YXJn
ZXRJZCwgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9wcm92aXNpb25hbFRhcmdl
dEluZm9zLmhhcyh0YXJnZXRJZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0
IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGFyZ2V0KTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgfQor
CisgICAgLy8gUHJpdmF0ZQorCisgICAgX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRh
cmdldEluZm8pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcHJvdmlzaW9u
YWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SW5mby50YXJnZXRJZCkpOwogCkBAIC0xNTYsMTUgKzE3
MSwxNiBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IGNv
bm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKHBhcmVudFRh
cmdldCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7Ci0gICAgICAgIGxldCBzdWJUYXJnZXQgPSB0aGlz
Ll9jcmVhdGVUYXJnZXQodGFyZ2V0SW5mbywgY29ubmVjdGlvbik7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHBhcmVudFRhcmdldC5oYXNDb21tYW5kKCJUYXJnZXQuc2VuZE1lc3NhZ2VUb1Rhcmdl
dCIpKTsKKyAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJn
ZXRDb25uZWN0aW9uKCk7CisgICAgICAgIGxldCBzdWJUYXJnZXQgPSB0aGlzLl9jcmVhdGVUYXJn
ZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBjb25uZWN0aW9uKTsKICAgICAgICAgdGhpcy5f
Y2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbihzdWJUYXJnZXQpOwogICAgICAgICBz
dWJUYXJnZXQuaW5pdGlhbGl6ZSgpOwogCiAgICAgICAgIHRoaXMuYWRkVGFyZ2V0KHN1YlRhcmdl
dCk7CiAgICAgfQogCi0gICAgX3RhcmdldERlc3Ryb3llZCh0YXJnZXRJZCkKKyAgICBfZGVzdHJv
eVRhcmdldCh0YXJnZXRJZCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wcm92aXNpb25hbFRh
cmdldEluZm9zLmRlbGV0ZSh0YXJnZXRJZCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzcs
MzMgKzE5MywxOCBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLnJlbW92ZVRhcmdldCh0YXJnZXQpOwogICAgIH0K
IAotICAgIGRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SWQp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJn
ZXRzLmdldCh0YXJnZXRJZCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7Ci0gICAg
ICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRhcmdldC5j
b25uZWN0aW9uLmRpc3BhdGNoKG1lc3NhZ2UpOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQot
ICAgIF9jcmVhdGVUYXJnZXQodGFyZ2V0SW5mbywgY29ubmVjdGlvbikKKyAgICBfY3JlYXRlVGFy
Z2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29ubmVjdGlvbikKICAgICB7CiAgICAgICAg
IGxldCB7dGFyZ2V0SWQsIHR5cGV9ID0gdGFyZ2V0SW5mbzsKIAogICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdldElu
Zm9UeXBlLlBhZ2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdJLlBhZ2VUYXJnZXQodGFyZ2V0
SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBXSS5QYWdlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJQ
YWdlIiksIGNvbm5lY3Rpb24pOwogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5U
YXJnZXQuVGFyZ2V0SW5mb1R5cGUuV29ya2VyOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5X
b3JrZXJUYXJnZXQodGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJXb3JrZXIiKSwgY29ubmVjdGlvbik7
CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRh
cmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rpb24pOwogICAgICAgICBjYXNl
ICJzZXJ2aWNld29ya2VyIjogLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTogInNlcnZpY2V3b3Jr
ZXIiIHdhcyByZW5hbWVkIHRvICJzZXJ2aWNlLXdvcmtlciIuCiAgICAgICAgIGNhc2UgSW5zcGVj
dG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlwZS5TZXJ2aWNlV29ya2VyOgotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQodGFyZ2V0SWQsIFdJLlVJU3RyaW5n
KCJTZXJ2aWNlV29ya2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG5ldyBX
SS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlNlcnZp
Y2VXb3JrZXIiKSwgY29ubmVjdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICB0aHJvdyAiVW5r
bm93biBUYXJnZXQgdHlwZTogIiArIHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5hZ2VyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5q
cwppbmRleCAyNzcyZDMwOTcxNTg4MjY0N2RiNGVkMzg5ZGM5YWQyYTFlYTE2MjZkLi4xMTZiYjE5
OThiYzk5ZGJhOThjNmI3MjA0YjFhYjllYTNhYmFmMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtl
ck1hbmFnZXIuanMKQEAgLTQ0LDggKzQ0LDkgQEAgV0kuV29ya2VyTWFuYWdlciA9IGNsYXNzIFdv
cmtlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHdvcmtlckNyZWF0ZWQodGFyZ2V0
LCB3b3JrZXJJZCwgdXJsKQogICAgIHsKLSAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5z
cGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uKHRhcmdldCwgd29ya2VySWQpOwotICAgICAg
ICBsZXQgd29ya2VyVGFyZ2V0ID0gbmV3IFdJLldvcmtlclRhcmdldCh3b3JrZXJJZCwgdXJsLCBj
b25uZWN0aW9uKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0Lmhhc0NvbW1hbmQoIldv
cmtlci5zZW5kTWVzc2FnZVRvV29ya2VyIikpOworICAgICAgICBsZXQgY29ubmVjdGlvbiA9IG5l
dyBJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24oKTsKKyAgICAgICAgbGV0IHdvcmtl
clRhcmdldCA9IG5ldyBXSS5Xb3JrZXJUYXJnZXQodGFyZ2V0LCB3b3JrZXJJZCwgdXJsLCBjb25u
ZWN0aW9uKTsKICAgICAgICAgd29ya2VyVGFyZ2V0LmluaXRpYWxpemUoKTsKIAogICAgICAgICBX
SS50YXJnZXRNYW5hZ2VyLmFkZFRhcmdldCh3b3JrZXJUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKaW5kZXggOTNh
NDE3MDZkNzNiYTg2NzNjY2UwOGNjMjA4ZGU1MGQ3NWY4YzhlMS4uMzgyZjBjYzM2ZTg0N2U3MzM5
MGZiYTYyODdhOTBlMmRlNjZhODYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzCkBAIC02MCwyMSArNjAsMTMgQEAgV0ku
U2NyaXB0ID0gY2xhc3MgU2NyaXB0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAgICAgIGlm
IChpc1dlYkluc3BlY3RvckNvbnNvbGVFdmFsdWF0aW9uU2NyaXB0KHRoaXMuX3NvdXJjZVVSTCkp
IHsKICAgICAgICAgICAgIC8vIEFzc2lnbiBhIHVuaXF1ZSBudW1iZXIgdG8gdGhlIHNjcmlwdCBv
YmplY3Qgc28gaXQgd2lsbCBzdGF5IHRoZSBzYW1lLgotICAgICAgICAgICAgdGhpcy5fdW5pcXVl
RGlzcGxheU5hbWVOdW1iZXIgPSB0aGlzLmNvbnN0cnVjdG9yLl9uZXh0VW5pcXVlQ29uc29sZURp
c3BsYXlOYW1lTnVtYmVyKys7CisgICAgICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51
bWJlciA9IHRoaXMuY29uc3RydWN0b3IuX25leHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1i
ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VNYXBwaW5nVVJMKQog
ICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAodGhpcy5fc291
cmNlTWFwcGluZ1VSTCwgdGhpcy5fdXJsLCB0aGlzKTsKICAgICB9CiAKLSAgICAvLyBTdGF0aWMK
LQotICAgIHN0YXRpYyByZXNldFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVycygpCi0gICAgewotICAg
ICAgICBXSS5TY3JpcHQuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci0gICAgICAg
IFdJLlNjcmlwdC5fbmV4dFVuaXF1ZUNvbnNvbGVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci0gICAg
fQotCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fdGFy
Z2V0OyB9CkBAIC0xNTEsNyArMTQzLDcgQEAgV0kuU2NyaXB0ID0gY2xhc3MgU2NyaXB0IGV4dGVu
ZHMgV0kuU291cmNlQ29kZQogCiAgICAgICAgIC8vIEFzc2lnbiBhIHVuaXF1ZSBudW1iZXIgdG8g
dGhlIHNjcmlwdCBvYmplY3Qgc28gaXQgd2lsbCBzdGF5IHRoZSBzYW1lLgogICAgICAgICBpZiAo
IXRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKQotICAgICAgICAgICAgdGhpcy5fdW5pcXVl
RGlzcGxheU5hbWVOdW1iZXIgPSB0aGlzLmNvbnN0cnVjdG9yLl9uZXh0VW5pcXVlRGlzcGxheU5h
bWVOdW1iZXIrKzsKKyAgICAgICAgICAgIHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0g
dGhpcy5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKCk7CiAKICAgICAgICAgcmV0dXJuIFdJ
LlVJU3RyaW5nKCJBbm9ueW1vdXMgU2NyaXB0ICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3Bs
YXlOYW1lTnVtYmVyKTsKICAgICB9CkBAIC0yNDcsNiArMjM5LDQ0IEBAIFdJLlNjcmlwdCA9IGNs
YXNzIFNjcmlwdCBleHRlbmRzIFdJLlNvdXJjZUNvZGUKIAogICAgIC8vIFByaXZhdGUKIAorICAg
IF9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIoKQorICAgIHsKKyAgICAgICAgbGV0IG51bWJl
cnMgPSB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlcnNGb3JSb290VGFyZ2V0KCk7CisgICAg
ICAgIHJldHVybiArK251bWJlcnMubGFzdFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyOworICAgIH0K
KworICAgIF9uZXh0VW5pcXVlQ29uc29sZURpc3BsYXlOYW1lTnVtYmVyKCkKKyAgICB7CisgICAg
ICAgIGxldCBudW1iZXJzID0gdGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzRm9yUm9vdFRh
cmdldCgpOworICAgICAgICByZXR1cm4gKytudW1iZXJzLmxhc3RVbmlxdWVDb25zb2xlRGlzcGxh
eU5hbWVOdW1iZXI7CisgICAgfQorCisgICAgX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJv
b3RUYXJnZXQoKQorICAgIHsKKyAgICAgICAgaWYgKCFXSS5TY3JpcHQuX3VuaXF1ZURpc3BsYXlO
YW1lTnVtYmVyc0ZvclJvb3RUYXJnZXRNYXApCisgICAgICAgICAgICBXSS5TY3JpcHQuX3VuaXF1
ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXRNYXAgPSBuZXcgV2Vha01hcCgpOworCisg
ICAgICAgIGxldCBrZXk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RhcmdldCk7Cisg
ICAgICAgIGlmICh0aGlzLl90YXJnZXQpIHsKKyAgICAgICAgICAgIGtleSA9IHRoaXMuX3Rhcmdl
dC5yb290VGFyZ2V0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFXSS5TY3Jp
cHQuX2tleUZvck5vVGFyZ2V0KQorICAgICAgICAgICAgICAgIFdJLlNjcmlwdC5fa2V5Rm9yTm9U
YXJnZXQgPSAibm8tdGFyZ2V0IjsKKyAgICAgICAgICAgIGtleSA9IFdJLlNjcmlwdC5fa2V5Rm9y
Tm9UYXJnZXQKKyAgICAgICAgfQorCisgICAgICAgIGxldCBudW1iZXJzID0gV0kuU2NyaXB0Ll91
bmlxdWVEaXNwbGF5TmFtZU51bWJlcnNGb3JSb290VGFyZ2V0TWFwLmdldChrZXkpOworICAgICAg
ICBpZiAoIW51bWJlcnMpIHsKKyAgICAgICAgICAgIG51bWJlcnMgPSB7CisgICAgICAgICAgICAg
ICAgbGFzdFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyOiAwLAorICAgICAgICAgICAgICAgIGxhc3RV
bmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXI6IDAKKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBXSS5TY3JpcHQuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXRNYXAu
c2V0KGtleSwgbnVtYmVycyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bWJlcnM7Cisg
ICAgfQorCiAgICAgX3Jlc29sdmVSZXNvdXJjZSgpCiAgICAgewogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGJlIGFibGUgdG8gYXNzb2NpYXRlIGEgU2NyaXB0IHdpdGggYSBSZXNvdXJjZSB0
aHJvdWdoIGlkZW50aWZpZXJzLApAQCAtMzIwLDYgKzM1MCwzIEBAIFdJLlNjcmlwdC5Tb3VyY2VU
eXBlID0gewogV0kuU2NyaXB0LlR5cGVJZGVudGlmaWVyID0gInNjcmlwdCI7CiBXSS5TY3JpcHQu
VVJMQ29va2llS2V5ID0gInNjcmlwdC11cmwiOwogV0kuU2NyaXB0LkRpc3BsYXlOYW1lQ29va2ll
S2V5ID0gInNjcmlwdC1kaXNwbGF5LW5hbWUiOwotCi1XSS5TY3JpcHQuX25leHRVbmlxdWVEaXNw
bGF5TmFtZU51bWJlciA9IDE7Ci1XSS5TY3JpcHQuX25leHRVbmlxdWVDb25zb2xlRGlzcGxheU5h
bWVOdW1iZXIgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMKaW5kZXggZjI1OGM1NzlhMDI5ZGNmYTI2
NzU4YWU4MTgwOGRkZTEyZDQwMDk0Ny4uMmE2NjNjNzgyMDg0Y2FhNDAzZWZlMDg5MWUyZTM1YzZm
MjFlOWRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvQ29ubmVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCkBAIC0yODQsMTkgKzI4NCwxMCBAQCBJbnNw
ZWN0b3JCYWNrZW5kLkJhY2tlbmRDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZEJh
Y2tlbmRDb25uZWN0aW9uIGV4dAogCiBJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24g
PSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kV29ya2VyQ29ubmVjdGlvbiBleHRlbmRzIEluc3BlY3Rv
ckJhY2tlbmQuQ29ubmVjdGlvbgogewotICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgd29y
a2VySWQpCi0gICAgewotICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIHRoaXMuX3BhcmVudFRh
cmdldCA9IHBhcmVudFRhcmdldDsKLSAgICAgICAgdGhpcy5fd29ya2VySWQgPSB3b3JrZXJJZDsK
LQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgi
V29ya2VyLnNlbmRNZXNzYWdlVG9Xb3JrZXIiKSk7Ci0gICAgfQotCiAgICAgc2VuZE1lc3NhZ2VU
b0JhY2tlbmQobWVzc2FnZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3BhcmVudFRhcmdldC5Xb3Jr
ZXJBZ2VudC5zZW5kTWVzc2FnZVRvV29ya2VyKHRoaXMuX3dvcmtlcklkLCBtZXNzYWdlKS5jYXRj
aCgoZXJyb3IpID0+IHsKKyAgICAgICAgbGV0IHdvcmtlcklkID0gdGhpcy50YXJnZXQuaWRlbnRp
ZmllcjsKKyAgICAgICAgdGhpcy50YXJnZXQucGFyZW50VGFyZ2V0LldvcmtlckFnZW50LnNlbmRN
ZXNzYWdlVG9Xb3JrZXIod29ya2VySWQsIG1lc3NhZ2UpLmNhdGNoKChlcnJvcikgPT4gewogICAg
ICAgICAgICAgLy8gSWdub3JlIGVycm9ycyBpZiBhIHdvcmtlciB3ZW50IGF3YXkgcXVpY2tseS4K
ICAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldC5pc0Rlc3Ryb3llZCkKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zMDcsMTkgKzI5OCw5IEBAIEluc3BlY3RvckJhY2tlbmQuV29ya2VyQ29u
bmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRXb3JrZXJDb25uZWN0aW9uIGV4dGVuCiAK
IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tl
bmRUYXJnZXRDb25uZWN0aW9uIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uCiB7
Ci0gICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCkKLSAgICB7Ci0gICAgICAg
IHN1cGVyKCk7Ci0KLSAgICAgICAgdGhpcy5fcGFyZW50VGFyZ2V0ID0gcGFyZW50VGFyZ2V0Owot
ICAgICAgICB0aGlzLl90YXJnZXRJZCA9IHRhcmdldElkOwotCi0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3BhcmVudFRhcmdldC5oYXNDb21tYW5kKCJUYXJnZXQuc2VuZE1lc3NhZ2VUb1Rh
cmdldCIpKTsKLSAgICB9Ci0KICAgICBzZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKQogICAg
IHsKLSAgICAgICAgdGhpcy5fcGFyZW50VGFyZ2V0LlRhcmdldEFnZW50LnNlbmRNZXNzYWdlVG9U
YXJnZXQodGhpcy5fdGFyZ2V0SWQsIG1lc3NhZ2UpLmNhdGNoKChlcnJvcikgPT4geworICAgICAg
ICB0aGlzLnRhcmdldC5wYXJlbnRUYXJnZXQuVGFyZ2V0QWdlbnQuc2VuZE1lc3NhZ2VUb1Rhcmdl
dCh0aGlzLnRhcmdldC5pZGVudGlmaWVyLCBtZXNzYWdlKS5jYXRjaCgoZXJyb3IpID0+IHsKICAg
ICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgaWYgdGhlIHRhcmdldCB3YXMgZGVzdHJveWVkIGFm
dGVyIHRoZSBjb21tYW5kIHdhcyBkaXNwYXRjaGVkLgogICAgICAgICAgICAgaWYgKHRoaXMudGFy
Z2V0LmlzRGVzdHJveWVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RpcmVjdEJhY2tlbmRU
YXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9E
aXJlY3RCYWNrZW5kVGFyZ2V0LmpzCmluZGV4IDhiYTNmOWI5MzY2OTc5ZTcxZGVkMTlkZmE5ZDAw
Mjc3MzIyMTU5NjUuLjI0ZTc4NDk2MGUzNGUzYTFlZjczNGEwZGEzNzRkYjg4MWIxNzkwOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Rp
cmVjdEJhY2tlbmRUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5qcwpAQCAtMzEsOCArMzEsOSBAQCBX
SS5EaXJlY3RCYWNrZW5kVGFyZ2V0ID0gY2xhc3MgRGlyZWN0QmFja2VuZFRhcmdldCBleHRlbmRz
IFdJLlRhcmdldAogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIGxldCB7dHlwZSwg
ZGlzcGxheU5hbWV9ID0gRGlyZWN0QmFja2VuZFRhcmdldC5jb25uZWN0aW9uSW5mb0ZvckRlYnVn
Z2FibGUoKTsKLQotICAgICAgICBzdXBlcigiZGlyZWN0IiwgZGlzcGxheU5hbWUsIHR5cGUsIElu
c3BlY3RvckJhY2tlbmQuYmFja2VuZENvbm5lY3Rpb24pOworICAgICAgICBjb25zdCBwYXJlbnRU
YXJnZXQgPSBudWxsOworICAgICAgICBjb25zdCB0YXJnZXRJZCA9ICJkaXJlY3QiOworICAgICAg
ICBzdXBlcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBkaXNwbGF5TmFtZSwgdHlwZSwgSW5zcGVj
dG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CiAKICAgICAgICAgdGhpcy5fZXhlY3V0aW9u
Q29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2Vy
LlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCB0cnVlLCBu
dWxsKTsKICAgICAgICAgdGhpcy5fbWFpblJlc291cmNlID0gbnVsbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0Jh
Y2tlbmRUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCmluZGV4IGQ4MzE1OGE4YTZmZGIxYWE0
ZjBmYjAxMzY2NjY4MzY0N2E0ZTQ0MzcuLmFhYjBjZTkxNTU1NWIzNjBhNmQ0MGMzMzUyZWUwZGY2
ODhhYmUzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdl
dC5qcwpAQCAtMzIsNyArMzIsOSBAQCBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0ID0gY2xh
c3MgTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogewogICAgIGNv
bnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAgIHN1cGVyKCJtdWx0aSIsIFdJLlVJU3RyaW5nKCJX
ZWIgUGFnZSIpLCBXSS5UYXJnZXRUeXBlLldlYlBhZ2UsIEluc3BlY3RvckJhY2tlbmQuYmFja2Vu
ZENvbm5lY3Rpb24pOworICAgICAgICBjb25zdCBwYXJlbnRUYXJnZXQgPSBudWxsOworICAgICAg
ICBjb25zdCB0YXJnZXRJZCA9ICJtdWx0aSI7CisgICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwg
dGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJXZWIgUGFnZSIpLCBXSS5UYXJnZXRUeXBlLldlYlBhZ2Us
IEluc3BlY3RvckJhY2tlbmQuYmFja2VuZENvbm5lY3Rpb24pOwogCiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KEFycmF5LnNoYWxsb3dFcXVhbChPYmplY3Qua2V5cyh0aGlzLl9hZ2VudHMpLCBbIlRh
cmdldCJdKSwgIkEgV2ViUGFnZSB0YXJnZXQgc2hvdWxkIG9ubHkgaGF2ZSBhIHNpbmdsZSBhZ2Vu
dC4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwppbmRleCAyYjE5OTZhZmJhNDZjOWY4ZmMx
ZDk0OWVjZGQyMWFiM2JkYmY2MTdkLi5mMzM0YzA4MDg0YzA3MDY1MmFhMGRlYzQyMTBhN2NhMWE1
N2E4MzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9QYWdlVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAogV0kuUGFn
ZVRhcmdldCA9IGNsYXNzIFBhZ2VUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25z
dHJ1Y3Rvcih0YXJnZXRJZCwgbmFtZSwgY29ubmVjdGlvbikKKyAgICBjb25zdHJ1Y3RvcihwYXJl
bnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQogICAgIHsKLSAgICAgICAgc3Vw
ZXIodGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29ubmVjdGlvbik7CisgICAg
ICAgIHN1cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFn
ZSwgY29ubmVjdGlvbik7CiAKICAgICAgICAgY29uc3QgaXNQYWdlQ29udGV4dCA9IHRydWU7CiAg
ICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0
aGlzLCBXSS5SdW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVy
LCB0aGlzLmRpc3BsYXlOYW1lLCBpc1BhZ2VDb250ZXh0LCBudWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRl
eCBiNWZjNDFiYTA5ZWJlZWNkZDI2NWEwM2IyYjQwMWFkNThjOGViODc5Li4yYmU1NzA1YjAwOTAy
OWZhMTA1NmI2MjY2MmUzZTQ1YWEwOGJjYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0yNSwxMCArMjUs
MTIgQEAKIAogV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0g
ICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgbmFtZSwgdHlwZSwgY29ubmVjdGlvbikKKyAgICBj
b25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5lY3Rp
b24pCiAgICAgewogICAgICAgICBzdXBlcigpOwogCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBh
cmVudFRhcmdldCA9PT0gbnVsbCB8fCBwYXJlbnRUYXJnZXQgaW5zdGFuY2VvZiBXSS5UYXJnZXQp
OworICAgICAgICB0aGlzLl9wYXJlbnRUYXJnZXQgPSBwYXJlbnRUYXJnZXQ7CiAgICAgICAgIHRo
aXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsK
ICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CkBAIC0xNDksNiArMTUxLDE3IEBAIFdJLlRhcmdl
dCA9IGNsYXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKKyAg
ICBnZXQgcGFyZW50VGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fcGFyZW50VGFyZ2V0OyB9CisKKyAg
ICBnZXQgcm9vdFRhcmdldCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV0ku
VGFyZ2V0VHlwZS5QYWdlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIGlmICh0
aGlzLl9wYXJlbnRUYXJnZXQpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50VGFyZ2V0
LnJvb3RUYXJnZXQ7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKwogICAgIGdldCBpZGVu
dGlmaWVyKCkgeyByZXR1cm4gdGhpcy5faWRlbnRpZmllcjsgfQogICAgIHNldCBpZGVudGlmaWVy
KGlkZW50aWZpZXIpIHsgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2Vy
VGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
V29ya2VyVGFyZ2V0LmpzCmluZGV4IGEzNGVlOTFmMzc4NjNjMGYwNTQ0OTBhNTNiNDY3YTBjZGI2
NTA5Y2MuLjgzYzcwOTJhNTg3MjhmMmE3M2Q4YTlkNGNlNTJhMWExYWQ3YjI4NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRh
cmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9Xb3JrZXJUYXJnZXQuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAogV0kuV29ya2VyVGFyZ2V0ID0g
Y2xhc3MgV29ya2VyVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiB7Ci0gICAgY29uc3RydWN0b3Io
d29ya2VySWQsIG5hbWUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0
LCB3b3JrZXJJZCwgbmFtZSwgY29ubmVjdGlvbikKICAgICB7Ci0gICAgICAgIHN1cGVyKHdvcmtl
cklkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLldvcmtlciwgY29ubmVjdGlvbik7CisgICAgICAgIHN1
cGVyKHBhcmVudFRhcmdldCwgd29ya2VySWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuV29ya2VyLCBj
b25uZWN0aW9uKTsKIAogICAgICAgICBjb25zdCBpc1BhZ2VDb250ZXh0ID0gZmFsc2U7CiAgICAg
ICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlz
LCBXSS5SdW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCB0
aGlzLmRpc3BsYXlOYW1lLCBpc1BhZ2VDb250ZXh0LCBudWxsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382002</attachid>
            <date>2019-10-25 23:38:51 -0700</date>
            <delta_ts>2019-10-30 14:47:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203427-20191025233851.patch</filename>
            <type>text/plain</type>
            <size>20667</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MzM0ZGJiZDlhMjhiMTQyNzhlY2FmOGM4ZDkzOWI0OWRmMDdhOTBmLi4xMTU0NzZkYzRiM2EwZDI0
YTY4ZTEzZjk2YTgyYzE4ZjI3ZTk1MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0xMC0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0cmFjayBXSS5TY3JpcHQgdW5pcXVlIGRp
c3BsYXkgbmFtZSBudW1iZXJzIHBlciBQYWdlIHRhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0kuU2NyaXB0IG5vdyBrZWVwcyB0cmFjayBvZiBs
YXN0IHVuaXF1ZSBudW1iZXJzIHZpYSBhIHN0YXRpYyB3ZWFrIG1hcCBrZXllZCBieQorICAgICAg
ICB0aGUgU2NyaXB0J3Mgcm9vdCB0YXJnZXQuIFNvIHdoZW5ldmVyIG5ldyBQYWdlIHRhcmdldCBp
cyBjcmVhdGVkIGFsbCBpdHMgc2NyaXB0cworICAgICAgICB3aWxsIGdldCB1bmlxdWUgZGlzcGxh
eSBudW1iZXJzIGZyb20gYSBuZXcgbmFtZXNwYWNlLgorCisgICAgICAgIFBhcmVudCB0YXJnZXQg
aXMgbm93IHBhc3NlZCB0byBlYWNoIHRhcmdldCBjb25zdHJ1Y3RvciBhbmQgYWxsb3cgdG8gZmlu
ZCBob3N0CisgICAgICAgIHBhZ2UgdGFyZ2V0IGZvciBuZXN0ZWQgdGFyZ2V0cy4gQW1vbmcgb3Ro
ZXIgdGhpbmdzIFdvcmtlckNvbm5lY3Rpb24gYW5kCisgICAgICAgIFRhcmdldENvbm5lY3Rpb24g
dXNlIHBhcmVudFRhcmdldCBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGluc3RlYWQgb2YgY3JlYXRp
bmcKKyAgICAgICAgZXh0cmEgY29weSBvZiB0aGUgc2FtZSBkYXRhIHRoYXQgaXMgYWxyZWFkeSBz
dG9yZWQgaW4gVGFyZ2V0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
ZWJ1Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
Lmdsb2JhbE9iamVjdENsZWFyZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvVGFyZ2V0TWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBl
LnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZGlk
Q29tbWl0UHJvdmlzaW9uYWxUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90
b3R5cGUudGFyZ2V0RGVzdHJveWVkKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90
eXBlLmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdl
ci5wcm90b3R5cGUuX2Nvbm5lY3RUb1RhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2Vy
LnByb3RvdHlwZS5fY3JlYXRlVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1dvcmtlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5Xb3JrZXJNYW5hZ2VyLnByb3Rv
dHlwZS53b3JrZXJDcmVhdGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3Jp
cHQuanM6CisgICAgICAgIChXSS5TY3JpcHQpOgorICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlw
ZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlwZS5fbmV4dFVu
aXF1ZURpc3BsYXlOYW1lTnVtYmVyKToKKyAgICAgICAgKFdJLlNjcmlwdC5wcm90b3R5cGUuX25l
eHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIpOgorICAgICAgICAoV0kuU2NyaXB0LnBy
b3RvdHlwZS5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzRm9yUm9vdFRhcmdldCk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzOgorICAgICAgICAoSW5zcGVj
dG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFja2Vu
ZCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uLnByb3RvdHlwZS5zZW5kTWVzc2Fn
ZVRvQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLlRhcmdldENvbm5lY3Rpb24p
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5q
czoKKyAgICAgICAgKFdJLkRpcmVjdEJhY2tlbmRUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJ
Lk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvUGFnZVRhcmdldC5qczoKKyAgICAgICAgKFdJLlBhZ2VUYXJnZXQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzOgorICAgICAgICAoV0kuVGFyZ2V0KToK
KyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5cGUuZ2V0IHBhcmVudFRhcmdldCk6CisgICAgICAg
IChXSS5UYXJnZXQucHJvdG90eXBlLmdldCByb290VGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qczoKKyAgICAgICAgKFdJLldvcmtlclRhcmdl
dCk6CisKIDIwMTktMTAtMjUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0eWxlczogdW4tZXhwZXJpbWVudGFsaXplIHNob3dpbmcg
cnVsZSBpY29ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IDM5Nzdl
MjI4M2UyNTEwYjViN2U0MmNkOWE1NTcyMDFkZTljZThlMDQuLjU4OTZkMjg0NTc5NGRlZDNjOWE1
MzA3OTAzYjE1OWU5ZDBiYjdkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIu
anMKQEAgLTcyMSwxMSArNzIxLDExIEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVn
Z2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBicmVha3BvaW50LnJlc29sdmVk
ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBnbG9iYWxPYmplY3RDbGVhcmVkKCkKKyAgICBnbG9iYWxP
YmplY3RDbGVhcmVkKHRhcmdldCkKICAgICB7CiAgICAgICAgIGxldCB3YXNQYXVzZWQgPSB0aGlz
LnBhdXNlZDsKIAotICAgICAgICBXSS5TY3JpcHQucmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJl
cnMoKTsKKyAgICAgICAgV0kuU2NyaXB0LnJlc2V0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzKHRh
cmdldCk7CiAKICAgICAgICAgdGhpcy5faW50ZXJuYWxXZWJLaXRTY3JpcHRzID0gW107CiAgICAg
ICAgIHRoaXMuX3RhcmdldERlYnVnZ2VyRGF0YU1hcC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Rh
cmdldE1hbmFnZXIuanMKaW5kZXggYmQ3Mjk3OWUwY2ViOTBlMWY1N2RkZGM5YmIyMDFjOWE3ZTQ5
ZTBhZC4uOTY5ODdhNGU1N2QzYTZjZTMwZjc2NjMzNWQyOTkyMTk1MzE4NzExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCkBAIC0xMjAsMTkgKzEyMCwxOSBAQCBXSS5UYXJnZXRN
YW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgdGFy
Z2V0Q3JlYXRlZChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pCiAgICAgewotICAgICAgICB0aGlz
Ll90YXJnZXRDcmVhdGVkKHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbyk7CisgICAgICAgIHRoaXMu
X2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pOwogCiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0
Q3JlYXRlZCwge3RhcmdldEluZm99KTsKICAgICB9CiAKICAgICBkaWRDb21taXRQcm92aXNpb25h
bFRhcmdldChwYXJlbnRUYXJnZXQsIHByZXZpb3VzVGFyZ2V0SWQsIG5ld1RhcmdldElkKQogICAg
IHsKLSAgICAgICAgdGhpcy5fdGFyZ2V0RGVzdHJveWVkKHByZXZpb3VzVGFyZ2V0SWQpOworICAg
ICAgICB0aGlzLl9kZXN0cm95VGFyZ2V0KHByZXZpb3VzVGFyZ2V0SWQpOwogICAgICAgICBsZXQg
dGFyZ2V0SW5mbyA9IHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuZ2V0KG5ld1RhcmdldElk
KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0SW5mbyk7CiAgICAgICAgIHRhcmdldElu
Zm8uaXNQcm92aXNpb25hbCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRhcmdl
dEluZm9zLmRlbGV0ZShuZXdUYXJnZXRJZCk7Ci0gICAgICAgIHRoaXMuX3RhcmdldENyZWF0ZWQo
cGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKTsKKyAgICAgICAgdGhpcy5fY29ubmVjdFRvVGFyZ2V0
KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll9zd2FwcGVkVGFyZ2V0SWRzLmhhcyhwcmV2aW91c1RhcmdldElkKSk7CiAgICAgICAgIHRoaXMu
X3N3YXBwZWRUYXJnZXRJZHMuYWRkKHByZXZpb3VzVGFyZ2V0SWQpOwogCkBAIC0xNDEsMTIgKzE0
MSwyNyBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgdGFyZ2V0RGVzdHJveWVkKHRhcmdldElkKQogICAgIHsKLSAgICAgICAg
dGhpcy5fdGFyZ2V0RGVzdHJveWVkKHRhcmdldElkKTsKKyAgICAgICAgdGhpcy5fZGVzdHJveVRh
cmdldCh0YXJnZXRJZCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXREZXN0cm95ZWQsIHt0YXJnZXRJZH0pOwogICAg
IH0KIAotICAgIF90YXJnZXRDcmVhdGVkKHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbykKKyAgICBk
aXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KHRhcmdldElkLCBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuaGFzKHRhcmdldElkKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5nZXQo
dGFyZ2V0SWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQpOworICAgICAgICBpZiAo
IXRhcmdldCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0YXJnZXQuY29ubmVjdGlv
bi5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfY29u
bmVjdFRvVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbykKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmhhcyh0YXJnZXRJbmZv
LnRhcmdldElkKSk7CiAKQEAgLTE1NiwxNSArMTcxLDE2IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBj
bGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgY29ubmVjdGlvbiA9IG5ldyBJbnNwZWN0b3JCYWNr
ZW5kLlRhcmdldENvbm5lY3Rpb24ocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLnRhcmdldElkKTsK
LSAgICAgICAgbGV0IHN1YlRhcmdldCA9IHRoaXMuX2NyZWF0ZVRhcmdldCh0YXJnZXRJbmZvLCBj
b25uZWN0aW9uKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50VGFyZ2V0Lmhhc0NvbW1h
bmQoIlRhcmdldC5zZW5kTWVzc2FnZVRvVGFyZ2V0IikpOworICAgICAgICBsZXQgY29ubmVjdGlv
biA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLlRhcmdldENvbm5lY3Rpb247CisgICAgICAgIGxldCBz
dWJUYXJnZXQgPSB0aGlzLl9jcmVhdGVUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBj
b25uZWN0aW9uKTsKICAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNp
dGlvbihzdWJUYXJnZXQpOwogICAgICAgICBzdWJUYXJnZXQuaW5pdGlhbGl6ZSgpOwogCiAgICAg
ICAgIHRoaXMuYWRkVGFyZ2V0KHN1YlRhcmdldCk7CiAgICAgfQogCi0gICAgX3RhcmdldERlc3Ry
b3llZCh0YXJnZXRJZCkKKyAgICBfZGVzdHJveVRhcmdldCh0YXJnZXRJZCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmRlbGV0ZSh0YXJnZXRJZCkpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xNzcsMzMgKzE5MywxOCBAQCBXSS5UYXJnZXRNYW5hZ2Vy
ID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLnJl
bW92ZVRhcmdldCh0YXJnZXQpOwogICAgIH0KIAotICAgIGRpc3BhdGNoTWVzc2FnZUZyb21UYXJn
ZXQodGFyZ2V0SWQsIG1lc3NhZ2UpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcHJvdmlzaW9u
YWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0YXJnZXRJZCk7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRhcmdldCk7Ci0gICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNoKG1lc3NhZ2UpOwot
ICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9jcmVhdGVUYXJnZXQodGFyZ2V0SW5mbywg
Y29ubmVjdGlvbikKKyAgICBfY3JlYXRlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywg
Y29ubmVjdGlvbikKICAgICB7CiAgICAgICAgIGxldCB7dGFyZ2V0SWQsIHR5cGV9ID0gdGFyZ2V0
SW5mbzsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JC
YWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdldEluZm9UeXBlLlBhZ2U6Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IFdJLlBhZ2VUYXJnZXQodGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5l
Y3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5QYWdlVGFyZ2V0KHBhcmVudFRhcmdl
dCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24pOwogICAgICAgICBj
YXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UYXJnZXQuVGFyZ2V0SW5mb1R5cGUuV29ya2VyOgot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQodGFyZ2V0SWQsIFdJLlVJU3Ry
aW5nKCJXb3JrZXIiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldv
cmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiks
IGNvbm5lY3Rpb24pOwogICAgICAgICBjYXNlICJzZXJ2aWNld29ya2VyIjogLy8gQ09NUEFUSUJJ
TElUWSAoaU9TIDEzKTogInNlcnZpY2V3b3JrZXIiIHdhcyByZW5hbWVkIHRvICJzZXJ2aWNlLXdv
cmtlciIuCiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJnZXRJ
bmZvVHlwZS5TZXJ2aWNlV29ya2VyOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJU
YXJnZXQodGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJTZXJ2aWNlV29ya2VyIiksIGNvbm5lY3Rpb24p
OworICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0
YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlNlcnZpY2VXb3JrZXIiKSwgY29ubmVjdGlvbik7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aHJvdyAiVW5rbm93biBUYXJnZXQgdHlwZTogIiArIHR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Xb3JrZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcwppbmRleCAyNzcyZDMwOTcxNTg4MjY0N2RiNGVk
Mzg5ZGM5YWQyYTFlYTE2MjZkLi40ZmZmMTc1MDIzMDNkNWQ1MTMzNmRlNDZiYzliYjI0OWE3MTFh
ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Xb3JrZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanMKQEAgLTQ0LDggKzQ0LDkgQEAg
V0kuV29ya2VyTWFuYWdlciA9IGNsYXNzIFdvcmtlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgIHdvcmtlckNyZWF0ZWQodGFyZ2V0LCB3b3JrZXJJZCwgdXJsKQogICAgIHsKLSAgICAg
ICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9u
KHRhcmdldCwgd29ya2VySWQpOwotICAgICAgICBsZXQgd29ya2VyVGFyZ2V0ID0gbmV3IFdJLldv
cmtlclRhcmdldCh3b3JrZXJJZCwgdXJsLCBjb25uZWN0aW9uKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGFyZ2V0Lmhhc0NvbW1hbmQoIldvcmtlci5zZW5kTWVzc2FnZVRvV29ya2VyIikpOwor
ICAgICAgICBsZXQgY29ubmVjdGlvbiA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5l
Y3Rpb247CisgICAgICAgIGxldCB3b3JrZXJUYXJnZXQgPSBuZXcgV0kuV29ya2VyVGFyZ2V0KHRh
cmdldCwgd29ya2VySWQsIHVybCwgY29ubmVjdGlvbik7CiAgICAgICAgIHdvcmtlclRhcmdldC5p
bml0aWFsaXplKCk7CiAKICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRUYXJnZXQod29ya2Vy
VGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU2NyaXB0LmpzCmluZGV4IDkzYTQxNzA2ZDczYmE4NjczY2NlMDhjYzIwOGRlNTBkNzVm
OGM4ZTEuLmJmMWZjOTgyMmEyYmI0N2E2ZGY1ZGViNjIzZjI4ZjRhZjIxZGQ2MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5q
cwpAQCAtNjAsNyArNjAsNyBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5T
b3VyY2VDb2RlCiAKICAgICAgICAgaWYgKGlzV2ViSW5zcGVjdG9yQ29uc29sZUV2YWx1YXRpb25T
Y3JpcHQodGhpcy5fc291cmNlVVJMKSkgewogICAgICAgICAgICAgLy8gQXNzaWduIGEgdW5pcXVl
IG51bWJlciB0byB0aGUgc2NyaXB0IG9iamVjdCBzbyBpdCB3aWxsIHN0YXkgdGhlIHNhbWUuCi0g
ICAgICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IHRoaXMuY29uc3RydWN0
b3IuX25leHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIrKzsKKyAgICAgICAgICAgIHRo
aXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gdGhpcy5jb25zdHJ1Y3Rvci5fbmV4dFVuaXF1
ZUNvbnNvbGVEaXNwbGF5TmFtZU51bWJlcigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRo
aXMuX3NvdXJjZU1hcHBpbmdVUkwpCkBAIC02OSwxMCArNjksMTAgQEAgV0kuU2NyaXB0ID0gY2xh
c3MgU2NyaXB0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAgLy8gU3RhdGljCiAKLSAgICBz
dGF0aWMgcmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJlcnMoKQorICAgIHN0YXRpYyByZXNldFVu
aXF1ZURpc3BsYXlOYW1lTnVtYmVycyh0YXJnZXQpCiAgICAgewotICAgICAgICBXSS5TY3JpcHQu
X25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7Ci0gICAgICAgIFdJLlNjcmlwdC5fbmV4
dFVuaXF1ZUNvbnNvbGVEaXNwbGF5TmFtZU51bWJlciA9IDE7CisgICAgICAgIGlmIChXSS5TY3Jp
cHQuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXRNYXApCisgICAgICAgICAg
ICBXSS5TY3JpcHQuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXRNYXAuZGVs
ZXRlKHRhcmdldCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xNTEsNyArMTUxLDcgQEAg
V0kuU2NyaXB0ID0gY2xhc3MgU2NyaXB0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAgICAg
IC8vIEFzc2lnbiBhIHVuaXF1ZSBudW1iZXIgdG8gdGhlIHNjcmlwdCBvYmplY3Qgc28gaXQgd2ls
bCBzdGF5IHRoZSBzYW1lLgogICAgICAgICBpZiAoIXRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVt
YmVyKQotICAgICAgICAgICAgdGhpcy5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSB0aGlzLmNv
bnN0cnVjdG9yLl9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIrKzsKKyAgICAgICAgICAgIHRo
aXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyID0gdGhpcy5fbmV4dFVuaXF1ZURpc3BsYXlOYW1l
TnVtYmVyKCk7CiAKICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJBbm9ueW1vdXMgU2NyaXB0
ICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKTsKICAgICB9CkBAIC0y
NDcsNiArMjQ3LDM5IEBAIFdJLlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdJLlNvdXJj
ZUNvZGUKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1i
ZXIoKQorICAgIHsKKyAgICAgICAgbGV0IG51bWJlcnMgPSB0aGlzLl91bmlxdWVEaXNwbGF5TmFt
ZU51bWJlcnNGb3JSb290VGFyZ2V0KCk7CisgICAgICAgIHJldHVybiArK251bWJlcnMubGFzdFVu
aXF1ZURpc3BsYXlOYW1lTnVtYmVyOworICAgIH0KKworICAgIF9uZXh0VW5pcXVlQ29uc29sZURp
c3BsYXlOYW1lTnVtYmVyKCkKKyAgICB7CisgICAgICAgIGxldCBudW1iZXJzID0gdGhpcy5fdW5p
cXVlRGlzcGxheU5hbWVOdW1iZXJzRm9yUm9vdFRhcmdldCgpOworICAgICAgICByZXR1cm4gKytu
dW1iZXJzLmxhc3RVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXI7CisgICAgfQorCisgICAg
X3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXQoKQorICAgIHsKKyAgICAgICAg
aWYgKCFXSS5TY3JpcHQuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXRNYXAp
CisgICAgICAgICAgICBXSS5TY3JpcHQuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RU
YXJnZXRNYXAgPSBuZXcgV2Vha01hcCgpOworCisgICAgICAgIGxldCBrZXk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX3RhcmdldCk7CisgICAgICAgIGlmICh0aGlzLl90YXJnZXQpCisg
ICAgICAgICAgICBrZXkgPSB0aGlzLl90YXJnZXQucm9vdFRhcmdldDsKKworICAgICAgICBsZXQg
bnVtYmVycyA9IFdJLlNjcmlwdC5fdW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzRm9yUm9vdFRhcmdl
dE1hcC5nZXQoa2V5KTsKKyAgICAgICAgaWYgKCFudW1iZXJzKSB7CisgICAgICAgICAgICBudW1i
ZXJzID0geworICAgICAgICAgICAgICAgIGxhc3RVbmlxdWVEaXNwbGF5TmFtZU51bWJlcjogMCwK
KyAgICAgICAgICAgICAgICBsYXN0VW5pcXVlQ29uc29sZURpc3BsYXlOYW1lTnVtYmVyOiAwCisg
ICAgICAgICAgICB9OworICAgICAgICAgICAgV0kuU2NyaXB0Ll91bmlxdWVEaXNwbGF5TmFtZU51
bWJlcnNGb3JSb290VGFyZ2V0TWFwLnNldChrZXksIG51bWJlcnMpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBudW1iZXJzOworICAgIH0KKwogICAgIF9yZXNvbHZlUmVzb3VyY2UoKQogICAg
IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFzc29jaWF0ZSBhIFNj
cmlwdCB3aXRoIGEgUmVzb3VyY2UgdGhyb3VnaCBpZGVudGlmaWVycywKQEAgLTMyMCw2ICszNTMs
MyBAQCBXSS5TY3JpcHQuU291cmNlVHlwZSA9IHsKIFdJLlNjcmlwdC5UeXBlSWRlbnRpZmllciA9
ICJzY3JpcHQiOwogV0kuU2NyaXB0LlVSTENvb2tpZUtleSA9ICJzY3JpcHQtdXJsIjsKIFdJLlNj
cmlwdC5EaXNwbGF5TmFtZUNvb2tpZUtleSA9ICJzY3JpcHQtZGlzcGxheS1uYW1lIjsKLQotV0ku
U2NyaXB0Ll9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwotV0kuU2NyaXB0Ll9uZXh0
VW5pcXVlQ29uc29sZURpc3BsYXlOYW1lTnVtYmVyID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCmlu
ZGV4IGYyNThjNTc5YTAyOWRjZmEyNjc1OGFlODE4MDhkZGUxMmQ0MDA5NDcuLjJhNjYzYzc4MjA4
NGNhYTQwM2VmZTA4OTFlMmUzNWM2ZjIxZTlkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwpAQCAt
Mjg0LDE5ICsyODQsMTAgQEAgSW5zcGVjdG9yQmFja2VuZC5CYWNrZW5kQ29ubmVjdGlvbiA9IGNs
YXNzIEluc3BlY3RvckJhY2tlbmRCYWNrZW5kQ29ubmVjdGlvbiBleHQKIAogSW5zcGVjdG9yQmFj
a2VuZC5Xb3JrZXJDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZFdvcmtlckNvbm5l
Y3Rpb24gZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24KIHsKLSAgICBjb25zdHJ1
Y3RvcihwYXJlbnRUYXJnZXQsIHdvcmtlcklkKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQot
ICAgICAgICB0aGlzLl9wYXJlbnRUYXJnZXQgPSBwYXJlbnRUYXJnZXQ7Ci0gICAgICAgIHRoaXMu
X3dvcmtlcklkID0gd29ya2VySWQ7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcGFy
ZW50VGFyZ2V0Lmhhc0NvbW1hbmQoIldvcmtlci5zZW5kTWVzc2FnZVRvV29ya2VyIikpOwotICAg
IH0KLQogICAgIHNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpCiAgICAgewotICAgICAgICB0
aGlzLl9wYXJlbnRUYXJnZXQuV29ya2VyQWdlbnQuc2VuZE1lc3NhZ2VUb1dvcmtlcih0aGlzLl93
b3JrZXJJZCwgbWVzc2FnZSkuY2F0Y2goKGVycm9yKSA9PiB7CisgICAgICAgIGxldCB3b3JrZXJJ
ZCA9IHRoaXMudGFyZ2V0LmlkZW50aWZpZXI7CisgICAgICAgIHRoaXMudGFyZ2V0LnBhcmVudFRh
cmdldC5Xb3JrZXJBZ2VudC5zZW5kTWVzc2FnZVRvV29ya2VyKHdvcmtlcklkLCBtZXNzYWdlKS5j
YXRjaCgoZXJyb3IpID0+IHsKICAgICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgaWYgYSB3b3Jr
ZXIgd2VudCBhd2F5IHF1aWNrbHkuCiAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQuaXNEZXN0
cm95ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA3LDE5ICsyOTgsOSBAQCBJbnNw
ZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kV29y
a2VyQ29ubmVjdGlvbiBleHRlbgogCiBJbnNwZWN0b3JCYWNrZW5kLlRhcmdldENvbm5lY3Rpb24g
PSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kVGFyZ2V0Q29ubmVjdGlvbiBleHRlbmRzIEluc3BlY3Rv
ckJhY2tlbmQuQ29ubmVjdGlvbgogewotICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgdGFy
Z2V0SWQpCi0gICAgewotICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIHRoaXMuX3BhcmVudFRh
cmdldCA9IHBhcmVudFRhcmdldDsKLSAgICAgICAgdGhpcy5fdGFyZ2V0SWQgPSB0YXJnZXRJZDsK
LQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgi
VGFyZ2V0LnNlbmRNZXNzYWdlVG9UYXJnZXQiKSk7Ci0gICAgfQotCiAgICAgc2VuZE1lc3NhZ2VU
b0JhY2tlbmQobWVzc2FnZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3BhcmVudFRhcmdldC5UYXJn
ZXRBZ2VudC5zZW5kTWVzc2FnZVRvVGFyZ2V0KHRoaXMuX3RhcmdldElkLCBtZXNzYWdlKS5jYXRj
aCgoZXJyb3IpID0+IHsKKyAgICAgICAgdGhpcy50YXJnZXQucGFyZW50VGFyZ2V0LlRhcmdldEFn
ZW50LnNlbmRNZXNzYWdlVG9UYXJnZXQodGhpcy50YXJnZXQuaWRlbnRpZmllciwgbWVzc2FnZSku
Y2F0Y2goKGVycm9yKSA9PiB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgZXJyb3JzIGlmIHRoZSB0
YXJnZXQgd2FzIGRlc3Ryb3llZCBhZnRlciB0aGUgY29tbWFuZCB3YXMgZGlzcGF0Y2hlZC4KICAg
ICAgICAgICAgIGlmICh0aGlzLnRhcmdldC5pc0Rlc3Ryb3llZCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwppbmRleCAwYWYzMmIxYzk1Yzk5
MDZiMTE4ZWU5OTlmNWE4M2YzOTJiODAwOWIzLi5jMDEyZWY1NzA0MzY5MzM2MDc0ZDlmOTc0OTE5
YzQ1NGFiYTA4MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKQEAgLTM2LDcg
KzM2LDcgQEAgV0kuRGVidWdnZXJPYnNlcnZlciA9IGNsYXNzIERlYnVnZ2VyT2JzZXJ2ZXIgZXh0
ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRpc3BhdGNoZXIKIAogICAgIGdsb2JhbE9iamVjdENsZWFy
ZWQoKQogICAgIHsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmdsb2JhbE9iamVjdENsZWFy
ZWQoKTsKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmdsb2JhbE9iamVjdENsZWFyZWQodGhp
cy5fdGFyZ2V0KTsKICAgICB9CiAKICAgICBzY3JpcHRQYXJzZWQoc2NyaXB0SWQsIHVybCwgc3Rh
cnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQs
IHNvdXJjZVVSTCwgc291cmNlTWFwVVJMLCBpc01vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EaXJlY3RC
YWNrZW5kVGFyZ2V0LmpzCmluZGV4IDhiYTNmOWI5MzY2OTc5ZTcxZGVkMTlkZmE5ZDAwMjc3MzIy
MTU5NjUuLjI0ZTc4NDk2MGUzNGUzYTFlZjczNGEwZGEzNzRkYjg4MWIxNzkwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RpcmVjdEJh
Y2tlbmRUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5qcwpAQCAtMzEsOCArMzEsOSBAQCBXSS5EaXJl
Y3RCYWNrZW5kVGFyZ2V0ID0gY2xhc3MgRGlyZWN0QmFja2VuZFRhcmdldCBleHRlbmRzIFdJLlRh
cmdldAogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIGxldCB7dHlwZSwgZGlzcGxh
eU5hbWV9ID0gRGlyZWN0QmFja2VuZFRhcmdldC5jb25uZWN0aW9uSW5mb0ZvckRlYnVnZ2FibGUo
KTsKLQotICAgICAgICBzdXBlcigiZGlyZWN0IiwgZGlzcGxheU5hbWUsIHR5cGUsIEluc3BlY3Rv
ckJhY2tlbmQuYmFja2VuZENvbm5lY3Rpb24pOworICAgICAgICBjb25zdCBwYXJlbnRUYXJnZXQg
PSBudWxsOworICAgICAgICBjb25zdCB0YXJnZXRJZCA9ICJkaXJlY3QiOworICAgICAgICBzdXBl
cihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBkaXNwbGF5TmFtZSwgdHlwZSwgSW5zcGVjdG9yQmFj
a2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CiAKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4
dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExl
dmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCB0cnVlLCBudWxsKTsK
ICAgICAgICAgdGhpcy5fbWFpblJlc291cmNlID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRU
YXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9N
dWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCmluZGV4IGQ4MzE1OGE4YTZmZGIxYWE0ZjBmYjAx
MzY2NjY4MzY0N2E0ZTQ0MzcuLmFhYjBjZTkxNTU1NWIzNjBhNmQ0MGMzMzUyZWUwZGY2ODhhYmUz
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcwpA
QCAtMzIsNyArMzIsOSBAQCBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0ID0gY2xhc3MgTXVs
dGlwbGV4aW5nQmFja2VuZFRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogewogICAgIGNvbnN0cnVj
dG9yKCkKICAgICB7Ci0gICAgICAgIHN1cGVyKCJtdWx0aSIsIFdJLlVJU3RyaW5nKCJXZWIgUGFn
ZSIpLCBXSS5UYXJnZXRUeXBlLldlYlBhZ2UsIEluc3BlY3RvckJhY2tlbmQuYmFja2VuZENvbm5l
Y3Rpb24pOworICAgICAgICBjb25zdCBwYXJlbnRUYXJnZXQgPSBudWxsOworICAgICAgICBjb25z
dCB0YXJnZXRJZCA9ICJtdWx0aSI7CisgICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0
SWQsIFdJLlVJU3RyaW5nKCJXZWIgUGFnZSIpLCBXSS5UYXJnZXRUeXBlLldlYlBhZ2UsIEluc3Bl
Y3RvckJhY2tlbmQuYmFja2VuZENvbm5lY3Rpb24pOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KEFycmF5LnNoYWxsb3dFcXVhbChPYmplY3Qua2V5cyh0aGlzLl9hZ2VudHMpLCBbIlRhcmdldCJd
KSwgIkEgV2ViUGFnZSB0YXJnZXQgc2hvdWxkIG9ubHkgaGF2ZSBhIHNpbmdsZSBhZ2VudC4iKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9QYWdlVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwppbmRleCAyYjE5OTZhZmJhNDZjOWY4ZmMxZDk0OWVj
ZGQyMWFiM2JkYmY2MTdkLi5mMzM0YzA4MDg0YzA3MDY1MmFhMGRlYzQyMTBhN2NhMWE1N2E4MzRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9QYWdlVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1BhZ2VUYXJnZXQuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAogV0kuUGFnZVRhcmdl
dCA9IGNsYXNzIFBhZ2VUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25zdHJ1Y3Rv
cih0YXJnZXRJZCwgbmFtZSwgY29ubmVjdGlvbikKKyAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJn
ZXQsIHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQogICAgIHsKLSAgICAgICAgc3VwZXIodGFy
Z2V0SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29ubmVjdGlvbik7CisgICAgICAgIHN1
cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29u
bmVjdGlvbik7CiAKICAgICAgICAgY29uc3QgaXNQYWdlQ29udGV4dCA9IHRydWU7CiAgICAgICAg
IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBX
SS5SdW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCB0aGlz
LmRpc3BsYXlOYW1lLCBpc1BhZ2VDb250ZXh0LCBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRleCBiNWZj
NDFiYTA5ZWJlZWNkZDI2NWEwM2IyYjQwMWFkNThjOGViODc5Li4yYmU1NzA1YjAwOTAyOWZhMTA1
NmI2MjY2MmUzZTQ1YWEwOGJjYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0yNSwxMCArMjUsMTIgQEAK
IAogV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29u
c3RydWN0b3IoaWRlbnRpZmllciwgbmFtZSwgdHlwZSwgY29ubmVjdGlvbikKKyAgICBjb25zdHJ1
Y3RvcihwYXJlbnRUYXJnZXQsIGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5lY3Rpb24pCiAg
ICAgewogICAgICAgICBzdXBlcigpOwogCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRh
cmdldCA9PT0gbnVsbCB8fCBwYXJlbnRUYXJnZXQgaW5zdGFuY2VvZiBXSS5UYXJnZXQpOworICAg
ICAgICB0aGlzLl9wYXJlbnRUYXJnZXQgPSBwYXJlbnRUYXJnZXQ7CiAgICAgICAgIHRoaXMuX2lk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAg
ICAgdGhpcy5fdHlwZSA9IHR5cGU7CkBAIC0xNDksNiArMTUxLDE3IEBAIFdJLlRhcmdldCA9IGNs
YXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKKyAgICBnZXQg
cGFyZW50VGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fcGFyZW50VGFyZ2V0OyB9CisKKyAgICBnZXQg
cm9vdFRhcmdldCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV0kuVGFyZ2V0
VHlwZS5QYWdlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIGlmICh0aGlzLl9w
YXJlbnRUYXJnZXQpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50VGFyZ2V0LnJvb3RU
YXJnZXQ7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKwogICAgIGdldCBpZGVudGlmaWVy
KCkgeyByZXR1cm4gdGhpcy5faWRlbnRpZmllcjsgfQogICAgIHNldCBpZGVudGlmaWVyKGlkZW50
aWZpZXIpIHsgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFyZ2V0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2Vy
VGFyZ2V0LmpzCmluZGV4IGEzNGVlOTFmMzc4NjNjMGYwNTQ0OTBhNTNiNDY3YTBjZGI2NTA5Y2Mu
LjgzYzcwOTJhNTg3MjhmMmE3M2Q4YTlkNGNlNTJhMWExYWQ3YjI4NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3Jr
ZXJUYXJnZXQuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAogV0kuV29ya2VyVGFyZ2V0ID0gY2xhc3Mg
V29ya2VyVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiB7Ci0gICAgY29uc3RydWN0b3Iod29ya2Vy
SWQsIG5hbWUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB3b3Jr
ZXJJZCwgbmFtZSwgY29ubmVjdGlvbikKICAgICB7Ci0gICAgICAgIHN1cGVyKHdvcmtlcklkLCBu
YW1lLCBXSS5UYXJnZXRUeXBlLldvcmtlciwgY29ubmVjdGlvbik7CisgICAgICAgIHN1cGVyKHBh
cmVudFRhcmdldCwgd29ya2VySWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuV29ya2VyLCBjb25uZWN0
aW9uKTsKIAogICAgICAgICBjb25zdCBpc1BhZ2VDb250ZXh0ID0gZmFsc2U7CiAgICAgICAgIHRo
aXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBXSS5S
dW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCB0aGlzLmRp
c3BsYXlOYW1lLCBpc1BhZ2VDb250ZXh0LCBudWxsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382360</attachid>
            <date>2019-10-30 14:47:46 -0700</date>
            <delta_ts>2019-10-30 15:49:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203427-20191030144745.patch</filename>
            <type>text/plain</type>
            <size>20672</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
Y2ZjZTkxYzIzOGUxNzJiMzY3MDYxOTFkZmMwNDBiYzMzMmY4ZTI1Li41ZTk2MGJhNjA2MGZkMjkx
MTcyNGVjMDFlNjZjNGNmNDJhNTNmNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0xMC0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0cmFjayBXSS5TY3JpcHQgdW5pcXVlIGRp
c3BsYXkgbmFtZSBudW1iZXJzIHBlciBQYWdlIHRhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGV2aW4gUm91c3NvLgorCisgICAgICAgIFdJLlNjcmlwdCBub3cga2VlcHMgdHJhY2sgb2YgbGFz
dCB1bmlxdWUgbnVtYmVycyB2aWEgYSBzdGF0aWMgd2VhayBtYXAga2V5ZWQgYnkKKyAgICAgICAg
dGhlIFNjcmlwdCdzIHJvb3QgdGFyZ2V0LiBTbyB3aGVuZXZlciBuZXcgUGFnZSB0YXJnZXQgaXMg
Y3JlYXRlZCBhbGwgaXRzIHNjcmlwdHMKKyAgICAgICAgd2lsbCBnZXQgdW5pcXVlIGRpc3BsYXkg
bnVtYmVycyBmcm9tIGEgbmV3IG5hbWVzcGFjZS4KKworICAgICAgICBQYXJlbnQgdGFyZ2V0IGlz
IG5vdyBwYXNzZWQgdG8gZWFjaCB0YXJnZXQgY29uc3RydWN0b3IgYW5kIGFsbG93IHRvIGZpbmQg
aG9zdAorICAgICAgICBwYWdlIHRhcmdldCBmb3IgbmVzdGVkIHRhcmdldHMuIEFtb25nIG90aGVy
IHRoaW5ncyBXb3JrZXJDb25uZWN0aW9uIGFuZAorICAgICAgICBUYXJnZXRDb25uZWN0aW9uIHVz
ZSBwYXJlbnRUYXJnZXQgZm9yIGRpc3BhdGNoaW5nIGV2ZW50cyBpbnN0ZWFkIG9mIGNyZWF0aW5n
CisgICAgICAgIGV4dHJhIGNvcHkgb2YgdGhlIHNhbWUgZGF0YSB0aGF0IGlzIGFscmVhZHkgc3Rv
cmVkIGluIFRhcmdldC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVi
dWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5n
bG9iYWxPYmplY3RDbGVhcmVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1RhcmdldE1hbmFnZXIuanM6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS50
YXJnZXRDcmVhdGVkKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmRpZENv
bW1pdFByb3Zpc2lvbmFsVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90
eXBlLnRhcmdldERlc3Ryb3llZCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlw
ZS5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIu
cHJvdG90eXBlLl9jb25uZWN0VG9UYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5w
cm90b3R5cGUuX2NyZWF0ZVRhcmdldCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9Xb3JrZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuV29ya2VyTWFuYWdlci5wcm90b3R5
cGUud29ya2VyQ3JlYXRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0
LmpzOgorICAgICAgICAoV0kuU2NyaXB0KToKKyAgICAgICAgKFdJLlNjcmlwdC5wcm90b3R5cGUu
Z2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdJLlNjcmlwdC5wcm90b3R5cGUuX25leHRVbmlx
dWVEaXNwbGF5TmFtZU51bWJlcik6CisgICAgICAgIChXSS5TY3JpcHQucHJvdG90eXBlLl9uZXh0
VW5pcXVlQ29uc29sZURpc3BsYXlOYW1lTnVtYmVyKToKKyAgICAgICAgKFdJLlNjcmlwdC5wcm90
b3R5cGUuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qczoKKyAgICAgICAgKEluc3BlY3Rv
ckJhY2tlbmQuV29ya2VyQ29ubmVjdGlvbi5wcm90b3R5cGUuc2VuZE1lc3NhZ2VUb0JhY2tlbmQp
OgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbi5wcm90b3R5cGUuc2VuZE1lc3NhZ2VU
b0JhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanM6
CisgICAgICAgIChXSS5EaXJlY3RCYWNrZW5kVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanM6CisgICAgICAgIChXSS5N
dWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1BhZ2VUYXJnZXQuanM6CisgICAgICAgIChXSS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qczoKKyAgICAgICAgKFdJLlRhcmdldCk6Cisg
ICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLmdldCBwYXJlbnRUYXJnZXQpOgorICAgICAgICAo
V0kuVGFyZ2V0LnByb3RvdHlwZS5nZXQgcm9vdFRhcmdldCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9Xb3JrZXJUYXJnZXQuanM6CisgICAgICAgIChXSS5Xb3JrZXJUYXJnZXQp
OgorCiAyMDE5LTEwLTI5ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE9wYWNpdHkgc2xpZGVyIGJhY2tncm91bmQgZG9lc24n
dCB1cGRhdGUgd2hlbiB3aGVuIGh1ZSBzbGlkZXIgbW92ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVn
Z2VyTWFuYWdlci5qcwppbmRleCAzOTc3ZTIyODNlMjUxMGI1YjdlNDJjZDlhNTU3MjAxZGU5Y2U4
ZTA0Li41ODk2ZDI4NDU3OTRkZWQzYzlhNTMwNzkwM2IxNTllOWQwYmI3ZGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dl
ck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCkBAIC03MjEsMTEgKzcyMSwxMSBAQCBXSS5EZWJ1
Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgYnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAgICAgfQogCi0gICAgZ2xvYmFsT2Jq
ZWN0Q2xlYXJlZCgpCisgICAgZ2xvYmFsT2JqZWN0Q2xlYXJlZCh0YXJnZXQpCiAgICAgewogICAg
ICAgICBsZXQgd2FzUGF1c2VkID0gdGhpcy5wYXVzZWQ7CiAKLSAgICAgICAgV0kuU2NyaXB0LnJl
c2V0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzKCk7CisgICAgICAgIFdJLlNjcmlwdC5yZXNldFVu
aXF1ZURpc3BsYXlOYW1lTnVtYmVycyh0YXJnZXQpOwogCiAgICAgICAgIHRoaXMuX2ludGVybmFs
V2ViS2l0U2NyaXB0cyA9IFtdOwogICAgICAgICB0aGlzLl90YXJnZXREZWJ1Z2dlckRhdGFNYXAu
Y2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCmluZGV4IGJkNzI5NzllMGNl
YjkwZTFmNTdkZGRjOWJiMjAxYzlhN2U0OWUwYWQuLjk2OTg3YTRlNTdkM2E2Y2UzMGY3NjYzMzVk
Mjk5MjE5NTMxODcxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwpAQCAtMTIw
LDE5ICsxMjAsMTkgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKIAogICAgIHRhcmdldENyZWF0ZWQocGFyZW50VGFyZ2V0LCB0YXJnZXRJ
bmZvKQogICAgIHsKLSAgICAgICAgdGhpcy5fdGFyZ2V0Q3JlYXRlZChwYXJlbnRUYXJnZXQsIHRh
cmdldEluZm8pOworICAgICAgICB0aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0LCB0
YXJnZXRJbmZvKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5U
YXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldENyZWF0ZWQsIHt0YXJnZXRJbmZvfSk7CiAgICAgfQog
CiAgICAgZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQocGFyZW50VGFyZ2V0LCBwcmV2aW91c1Rh
cmdldElkLCBuZXdUYXJnZXRJZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RhcmdldERlc3Ryb3ll
ZChwcmV2aW91c1RhcmdldElkKTsKKyAgICAgICAgdGhpcy5fZGVzdHJveVRhcmdldChwcmV2aW91
c1RhcmdldElkKTsKICAgICAgICAgbGV0IHRhcmdldEluZm8gPSB0aGlzLl9wcm92aXNpb25hbFRh
cmdldEluZm9zLmdldChuZXdUYXJnZXRJZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdl
dEluZm8pOwogICAgICAgICB0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5kZWxldGUobmV3VGFyZ2V0SWQpOwotICAg
ICAgICB0aGlzLl90YXJnZXRDcmVhdGVkKHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbyk7CisgICAg
ICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pOwogICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3dhcHBlZFRhcmdldElkcy5oYXMocHJldmlvdXNU
YXJnZXRJZCkpOwogICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzLmFkZChwcmV2aW91c1Rh
cmdldElkKTsKIApAQCAtMTQxLDEyICsxNDEsMjcgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNz
IFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHRhcmdldERlc3Ryb3llZCh0
YXJnZXRJZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RhcmdldERlc3Ryb3llZCh0YXJnZXRJZCk7
CisgICAgICAgIHRoaXMuX2Rlc3Ryb3lUYXJnZXQodGFyZ2V0SWQpOwogCiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0RGVz
dHJveWVkLCB7dGFyZ2V0SWR9KTsKICAgICB9CiAKLSAgICBfdGFyZ2V0Q3JlYXRlZChwYXJlbnRU
YXJnZXQsIHRhcmdldEluZm8pCisgICAgZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCh0YXJnZXRJ
ZCwgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9wcm92aXNpb25hbFRhcmdldElu
Zm9zLmhhcyh0YXJnZXRJZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHRh
cmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGFyZ2V0KTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgfQorCisg
ICAgLy8gUHJpdmF0ZQorCisgICAgX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdl
dEluZm8pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcHJvdmlzaW9uYWxU
YXJnZXRJbmZvcy5oYXModGFyZ2V0SW5mby50YXJnZXRJZCkpOwogCkBAIC0xNTYsMTUgKzE3MSwx
NiBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IGNvbm5l
Y3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKHBhcmVudFRhcmdl
dCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7Ci0gICAgICAgIGxldCBzdWJUYXJnZXQgPSB0aGlzLl9j
cmVhdGVUYXJnZXQodGFyZ2V0SW5mbywgY29ubmVjdGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHBhcmVudFRhcmdldC5oYXNDb21tYW5kKCJUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCIp
KTsKKyAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRD
b25uZWN0aW9uOworICAgICAgICBsZXQgc3ViVGFyZ2V0ID0gdGhpcy5fY3JlYXRlVGFyZ2V0KHBh
cmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29ubmVjdGlvbik7CiAgICAgICAgIHRoaXMuX2NoZWNr
QW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24oc3ViVGFyZ2V0KTsKICAgICAgICAgc3ViVGFy
Z2V0LmluaXRpYWxpemUoKTsKIAogICAgICAgICB0aGlzLmFkZFRhcmdldChzdWJUYXJnZXQpOwog
ICAgIH0KIAotICAgIF90YXJnZXREZXN0cm95ZWQodGFyZ2V0SWQpCisgICAgX2Rlc3Ryb3lUYXJn
ZXQodGFyZ2V0SWQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJ
bmZvcy5kZWxldGUodGFyZ2V0SWQpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc3LDMzICsx
OTMsMTggQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgdGhpcy5yZW1vdmVUYXJnZXQodGFyZ2V0KTsKICAgICB9CiAKLSAg
ICBkaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KHRhcmdldElkLCBtZXNzYWdlKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuaGFzKHRhcmdldElkKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5n
ZXQodGFyZ2V0SWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQpOwotICAgICAgICBp
ZiAoIXRhcmdldCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0YXJnZXQuY29ubmVj
dGlvbi5kaXNwYXRjaChtZXNzYWdlKTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBf
Y3JlYXRlVGFyZ2V0KHRhcmdldEluZm8sIGNvbm5lY3Rpb24pCisgICAgX2NyZWF0ZVRhcmdldChw
YXJlbnRUYXJnZXQsIHRhcmdldEluZm8sIGNvbm5lY3Rpb24pCiAgICAgewogICAgICAgICBsZXQg
e3RhcmdldElkLCB0eXBlfSA9IHRhcmdldEluZm87CiAKICAgICAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlw
ZS5QYWdlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5QYWdlVGFyZ2V0KHRhcmdldElkLCBX
SS5VSVN0cmluZygiUGFnZSIpLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
V0kuUGFnZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiUGFnZSIp
LCBjb25uZWN0aW9uKTsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0
LlRhcmdldEluZm9UeXBlLldvcmtlcjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgV0kuV29ya2Vy
VGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rpb24pOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJ
ZCwgV0kuVUlTdHJpbmcoIldvcmtlciIpLCBjb25uZWN0aW9uKTsKICAgICAgICAgY2FzZSAic2Vy
dmljZXdvcmtlciI6IC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6ICJzZXJ2aWNld29ya2VyIiB3
YXMgcmVuYW1lZCB0byAic2VydmljZS13b3JrZXIiLgogICAgICAgICBjYXNlIEluc3BlY3RvckJh
Y2tlbmQuRW51bS5UYXJnZXQuVGFyZ2V0SW5mb1R5cGUuU2VydmljZVdvcmtlcjoKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgV0kuV29ya2VyVGFyZ2V0KHRhcmdldElkLCBXSS5VSVN0cmluZygiU2Vy
dmljZVdvcmtlciIpLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuV29y
a2VyVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJTZXJ2aWNlV29y
a2VyIiksIGNvbm5lY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAgdGhyb3cgIlVua25vd24g
VGFyZ2V0IHR5cGU6ICIgKyB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanMKaW5k
ZXggMjc3MmQzMDk3MTU4ODI2NDdkYjRlZDM4OWRjOWFkMmExZWExNjI2ZC4uNGZmZjE3NTAyMzAz
ZDVkNTEzMzZkZTQ2YmM5YmIyNDlhNzExYWQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5h
Z2VyLmpzCkBAIC00NCw4ICs0NCw5IEBAIFdJLldvcmtlck1hbmFnZXIgPSBjbGFzcyBXb3JrZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICB3b3JrZXJDcmVhdGVkKHRhcmdldCwgd29y
a2VySWQsIHVybCkKICAgICB7Ci0gICAgICAgIGxldCBjb25uZWN0aW9uID0gbmV3IEluc3BlY3Rv
ckJhY2tlbmQuV29ya2VyQ29ubmVjdGlvbih0YXJnZXQsIHdvcmtlcklkKTsKLSAgICAgICAgbGV0
IHdvcmtlclRhcmdldCA9IG5ldyBXSS5Xb3JrZXJUYXJnZXQod29ya2VySWQsIHVybCwgY29ubmVj
dGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC5oYXNDb21tYW5kKCJXb3JrZXIu
c2VuZE1lc3NhZ2VUb1dvcmtlciIpKTsKKyAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5z
cGVjdG9yQmFja2VuZC5Xb3JrZXJDb25uZWN0aW9uOworICAgICAgICBsZXQgd29ya2VyVGFyZ2V0
ID0gbmV3IFdJLldvcmtlclRhcmdldCh0YXJnZXQsIHdvcmtlcklkLCB1cmwsIGNvbm5lY3Rpb24p
OwogICAgICAgICB3b3JrZXJUYXJnZXQuaW5pdGlhbGl6ZSgpOwogCiAgICAgICAgIFdJLnRhcmdl
dE1hbmFnZXIuYWRkVGFyZ2V0KHdvcmtlclRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcwppbmRleCA5M2E0MTcwNmQ3
M2JhODY3M2NjZTA4Y2MyMDhkZTUwZDc1ZjhjOGUxLi5lNDRiOWY2NTVjOWYzODQ4YmIxMzUzMWRj
YWM5M2RkYThhYTNjZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKQEAgLTYwLDcgKzYwLDcgQEAgV0kuU2NyaXB0ID0g
Y2xhc3MgU2NyaXB0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAgICAgIGlmIChpc1dlYklu
c3BlY3RvckNvbnNvbGVFdmFsdWF0aW9uU2NyaXB0KHRoaXMuX3NvdXJjZVVSTCkpIHsKICAgICAg
ICAgICAgIC8vIEFzc2lnbiBhIHVuaXF1ZSBudW1iZXIgdG8gdGhlIHNjcmlwdCBvYmplY3Qgc28g
aXQgd2lsbCBzdGF5IHRoZSBzYW1lLgotICAgICAgICAgICAgdGhpcy5fdW5pcXVlRGlzcGxheU5h
bWVOdW1iZXIgPSB0aGlzLmNvbnN0cnVjdG9yLl9uZXh0VW5pcXVlQ29uc29sZURpc3BsYXlOYW1l
TnVtYmVyKys7CisgICAgICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IHRo
aXMuX25leHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh0aGlzLl9zb3VyY2VNYXBwaW5nVVJMKQpAQCAtNjksMTAgKzY5LDEwIEBAIFdJ
LlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdJLlNvdXJjZUNvZGUKIAogICAgIC8vIFN0
YXRpYwogCi0gICAgc3RhdGljIHJlc2V0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXJzKCkKKyAgICBz
dGF0aWMgcmVzZXRVbmlxdWVEaXNwbGF5TmFtZU51bWJlcnModGFyZ2V0KQogICAgIHsKLSAgICAg
ICAgV0kuU2NyaXB0Ll9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwotICAgICAgICBX
SS5TY3JpcHQuX25leHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIgPSAxOworICAgICAg
ICBpZiAoV0kuU2NyaXB0Ll91bmlxdWVEaXNwbGF5TmFtZU51bWJlcnNGb3JSb290VGFyZ2V0TWFw
KQorICAgICAgICAgICAgV0kuU2NyaXB0Ll91bmlxdWVEaXNwbGF5TmFtZU51bWJlcnNGb3JSb290
VGFyZ2V0TWFwLmRlbGV0ZSh0YXJnZXQpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTUx
LDcgKzE1MSw3IEBAIFdJLlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdJLlNvdXJjZUNv
ZGUKIAogICAgICAgICAvLyBBc3NpZ24gYSB1bmlxdWUgbnVtYmVyIHRvIHRoZSBzY3JpcHQgb2Jq
ZWN0IHNvIGl0IHdpbGwgc3RheSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCF0aGlzLl91bmlxdWVE
aXNwbGF5TmFtZU51bWJlcikKLSAgICAgICAgICAgIHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVt
YmVyID0gdGhpcy5jb25zdHJ1Y3Rvci5fbmV4dFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKys7Cisg
ICAgICAgICAgICB0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IHRoaXMuX25leHRVbmlx
dWVEaXNwbGF5TmFtZU51bWJlcigpOwogCiAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiQW5v
bnltb3VzIFNjcmlwdCAlZCIpLmZvcm1hdCh0aGlzLl91bmlxdWVEaXNwbGF5TmFtZU51bWJlcik7
CiAgICAgfQpAQCAtMjQ3LDYgKzI0NywzNiBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0
ZW5kcyBXSS5Tb3VyY2VDb2RlCiAKICAgICAvLyBQcml2YXRlCiAKKyAgICBfbmV4dFVuaXF1ZURp
c3BsYXlOYW1lTnVtYmVyKCkKKyAgICB7CisgICAgICAgIGxldCBudW1iZXJzID0gdGhpcy5fdW5p
cXVlRGlzcGxheU5hbWVOdW1iZXJzRm9yUm9vdFRhcmdldCgpOworICAgICAgICByZXR1cm4gKytu
dW1iZXJzLmxhc3RVbmlxdWVEaXNwbGF5TmFtZU51bWJlcjsKKyAgICB9CisKKyAgICBfbmV4dFVu
aXF1ZUNvbnNvbGVEaXNwbGF5TmFtZU51bWJlcigpCisgICAgeworICAgICAgICBsZXQgbnVtYmVy
cyA9IHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXQoKTsKKyAgICAg
ICAgcmV0dXJuICsrbnVtYmVycy5sYXN0VW5pcXVlQ29uc29sZURpc3BsYXlOYW1lTnVtYmVyOwor
ICAgIH0KKworICAgIF91bmlxdWVEaXNwbGF5TmFtZU51bWJlcnNGb3JSb290VGFyZ2V0KCkKKyAg
ICB7CisgICAgICAgIGlmICghV0kuU2NyaXB0Ll91bmlxdWVEaXNwbGF5TmFtZU51bWJlcnNGb3JS
b290VGFyZ2V0TWFwKQorICAgICAgICAgICAgV0kuU2NyaXB0Ll91bmlxdWVEaXNwbGF5TmFtZU51
bWJlcnNGb3JSb290VGFyZ2V0TWFwID0gbmV3IFdlYWtNYXAoKTsKKworICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl90YXJnZXQpOworICAgICAgICBsZXQga2V5ID0gdGhpcy5fdGFyZ2V0LnJv
b3RUYXJnZXQ7CisgICAgICAgIGxldCBudW1iZXJzID0gV0kuU2NyaXB0Ll91bmlxdWVEaXNwbGF5
TmFtZU51bWJlcnNGb3JSb290VGFyZ2V0TWFwLmdldChrZXkpOworICAgICAgICBpZiAoIW51bWJl
cnMpIHsKKyAgICAgICAgICAgIG51bWJlcnMgPSB7CisgICAgICAgICAgICAgICAgbGFzdFVuaXF1
ZURpc3BsYXlOYW1lTnVtYmVyOiAwLAorICAgICAgICAgICAgICAgIGxhc3RVbmlxdWVDb25zb2xl
RGlzcGxheU5hbWVOdW1iZXI6IDAKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5TY3Jp
cHQuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyc0ZvclJvb3RUYXJnZXRNYXAuc2V0KGtleSwgbnVt
YmVycyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bWJlcnM7CisgICAgfQorCiAgICAg
X3Jlc29sdmVSZXNvdXJjZSgpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gYXNzb2NpYXRlIGEgU2NyaXB0IHdpdGggYSBSZXNvdXJjZSB0aHJvdWdoIGlkZW50
aWZpZXJzLApAQCAtMzIwLDYgKzM1MCwzIEBAIFdJLlNjcmlwdC5Tb3VyY2VUeXBlID0gewogV0ku
U2NyaXB0LlR5cGVJZGVudGlmaWVyID0gInNjcmlwdCI7CiBXSS5TY3JpcHQuVVJMQ29va2llS2V5
ID0gInNjcmlwdC11cmwiOwogV0kuU2NyaXB0LkRpc3BsYXlOYW1lQ29va2llS2V5ID0gInNjcmlw
dC1kaXNwbGF5LW5hbWUiOwotCi1XSS5TY3JpcHQuX25leHRVbmlxdWVEaXNwbGF5TmFtZU51bWJl
ciA9IDE7Ci1XSS5TY3JpcHQuX25leHRVbmlxdWVDb25zb2xlRGlzcGxheU5hbWVOdW1iZXIgPSAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvQ29ubmVjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0Nvbm5lY3Rpb24uanMKaW5kZXggZjI1OGM1NzlhMDI5ZGNmYTI2NzU4YWU4MTgwOGRk
ZTEyZDQwMDk0Ny4uOWJlY2JkMDZhOWQ1YjI1OGY3YTUwNmRjYTIwZTk0NDMzM2M4YWJhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29u
bmVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9Db25uZWN0aW9uLmpzCkBAIC0yODQsMTkgKzI4NCwxMCBAQCBJbnNwZWN0b3JCYWNrZW5k
LkJhY2tlbmRDb25uZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZEJhY2tlbmRDb25uZWN0
aW9uIGV4dAogCiBJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24gPSBjbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kV29ya2VyQ29ubmVjdGlvbiBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuQ29u
bmVjdGlvbgogewotICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgd29ya2VySWQpCi0gICAg
ewotICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9IHBhcmVu
dFRhcmdldDsKLSAgICAgICAgdGhpcy5fd29ya2VySWQgPSB3b3JrZXJJZDsKLQotICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9wYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgiV29ya2VyLnNlbmRN
ZXNzYWdlVG9Xb3JrZXIiKSk7Ci0gICAgfQotCiAgICAgc2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVz
c2FnZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3BhcmVudFRhcmdldC5Xb3JrZXJBZ2VudC5zZW5k
TWVzc2FnZVRvV29ya2VyKHRoaXMuX3dvcmtlcklkLCBtZXNzYWdlKS5jYXRjaCgoZXJyb3IpID0+
IHsKKyAgICAgICAgbGV0IHdvcmtlcklkID0gdGhpcy50YXJnZXQuaWRlbnRpZmllcjsKKyAgICAg
ICAgdGhpcy50YXJnZXQucGFyZW50VGFyZ2V0LldvcmtlckFnZW50LnNlbmRNZXNzYWdlVG9Xb3Jr
ZXIod29ya2VySWQsIG1lc3NhZ2UpLmNhdGNoKChlcnJvcikgPT4gewogICAgICAgICAgICAgLy8g
SWdub3JlIGVycm9ycyBpZiBhIHdvcmtlciB3ZW50IGF3YXkgcXVpY2tseS4KICAgICAgICAgICAg
IGlmICh0aGlzLnRhcmdldC5pc0Rlc3Ryb3llZCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0zMDcsMTkgKzI5OCwxMCBAQCBJbnNwZWN0b3JCYWNrZW5kLldvcmtlckNvbm5lY3Rpb24gPSBj
bGFzcyBJbnNwZWN0b3JCYWNrZW5kV29ya2VyQ29ubmVjdGlvbiBleHRlbgogCiBJbnNwZWN0b3JC
YWNrZW5kLlRhcmdldENvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kVGFyZ2V0Q29u
bmVjdGlvbiBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbgogewotICAgIGNvbnN0
cnVjdG9yKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQpCi0gICAgewotICAgICAgICBzdXBlcigpOwot
Ci0gICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9IHBhcmVudFRhcmdldDsKLSAgICAgICAgdGhp
cy5fdGFyZ2V0SWQgPSB0YXJnZXRJZDsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9w
YXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0LnNlbmRNZXNzYWdlVG9UYXJnZXQiKSk7Ci0g
ICAgfQotCiAgICAgc2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3BhcmVudFRhcmdldC5UYXJnZXRBZ2VudC5zZW5kTWVzc2FnZVRvVGFyZ2V0KHRoaXMu
X3RhcmdldElkLCBtZXNzYWdlKS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICAgICAgbGV0IHRhcmdl
dElkID0gdGhpcy50YXJnZXQuaWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy50YXJnZXQucGFyZW50
VGFyZ2V0LlRhcmdldEFnZW50LnNlbmRNZXNzYWdlVG9UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2Up
LmNhdGNoKChlcnJvcikgPT4gewogICAgICAgICAgICAgLy8gSWdub3JlIGVycm9ycyBpZiB0aGUg
dGFyZ2V0IHdhcyBkZXN0cm95ZWQgYWZ0ZXIgdGhlIGNvbW1hbmQgd2FzIGRpc3BhdGNoZWQuCiAg
ICAgICAgICAgICBpZiAodGhpcy50YXJnZXQuaXNEZXN0cm95ZWQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKaW5kZXggMGFmMzJiMWM5NWM5
OTA2YjExOGVlOTk5ZjVhODNmMzkyYjgwMDliMy4uYzAxMmVmNTcwNDM2OTMzNjA3NGQ5Zjk3NDkx
OWM0NTRhYmEwODJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCkBAIC0zNiw3
ICszNiw3IEBAIFdJLkRlYnVnZ2VyT2JzZXJ2ZXIgPSBjbGFzcyBEZWJ1Z2dlck9ic2VydmVyIGV4
dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAKICAgICBnbG9iYWxPYmplY3RDbGVh
cmVkKCkKICAgICB7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5nbG9iYWxPYmplY3RDbGVh
cmVkKCk7CisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5nbG9iYWxPYmplY3RDbGVhcmVkKHRo
aXMuX3RhcmdldCk7CiAgICAgfQogCiAgICAgc2NyaXB0UGFyc2VkKHNjcmlwdElkLCB1cmwsIHN0
YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0
LCBzb3VyY2VVUkwsIHNvdXJjZU1hcFVSTCwgaXNNb2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EaXJlY3RCYWNrZW5kVGFyZ2V0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGlyZWN0
QmFja2VuZFRhcmdldC5qcwppbmRleCA4YmEzZjliOTM2Njk3OWU3MWRlZDE5ZGZhOWQwMDI3NzMy
MjE1OTY1Li44MTlhMzRjYTA4OWU2Nzg1NTJiZjYzOTJhZDRjZmQ2MzcyOGNhYjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EaXJlY3RC
YWNrZW5kVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanMKQEAgLTMwLDkgKzMwLDEwIEBAIFdJLkRp
cmVjdEJhY2tlbmRUYXJnZXQgPSBjbGFzcyBEaXJlY3RCYWNrZW5kVGFyZ2V0IGV4dGVuZHMgV0ku
VGFyZ2V0CiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKKyAgICAgICAgY29uc3QgcGFyZW50
VGFyZ2V0ID0gbnVsbDsKKyAgICAgICAgY29uc3QgdGFyZ2V0SWQgPSAiZGlyZWN0IjsKICAgICAg
ICAgbGV0IHt0eXBlLCBkaXNwbGF5TmFtZX0gPSBEaXJlY3RCYWNrZW5kVGFyZ2V0LmNvbm5lY3Rp
b25JbmZvRm9yRGVidWdnYWJsZSgpOwotCi0gICAgICAgIHN1cGVyKCJkaXJlY3QiLCBkaXNwbGF5
TmFtZSwgdHlwZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CisgICAgICAg
IHN1cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIGRpc3BsYXlOYW1lLCB0eXBlLCBJbnNwZWN0
b3JCYWNrZW5kLmJhY2tlbmRDb25uZWN0aW9uKTsKIAogICAgICAgICB0aGlzLl9leGVjdXRpb25D
b250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIu
VG9wTGV2ZWxDb250ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHRydWUsIG51
bGwpOwogICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2UgPSBudWxsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFj
a2VuZFRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKaW5kZXggZDgzMTU4YThhNmZkYjFhYTRm
MGZiMDEzNjY2NjgzNjQ3YTRlNDQzNy4uYWFiMGNlOTE1NTU1YjM2MGE2ZDQwYzMzNTJlZTBkZjY4
OGFiZTNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0
LmpzCkBAIC0zMiw3ICszMiw5IEBAIFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgPSBjbGFz
cyBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiB7CiAgICAgY29u
c3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgc3VwZXIoIm11bHRpIiwgV0kuVUlTdHJpbmcoIldl
YiBQYWdlIiksIFdJLlRhcmdldFR5cGUuV2ViUGFnZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5k
Q29ubmVjdGlvbik7CisgICAgICAgIGNvbnN0IHBhcmVudFRhcmdldCA9IG51bGw7CisgICAgICAg
IGNvbnN0IHRhcmdldElkID0gIm11bHRpIjsKKyAgICAgICAgc3VwZXIocGFyZW50VGFyZ2V0LCB0
YXJnZXRJZCwgV0kuVUlTdHJpbmcoIldlYiBQYWdlIiksIFdJLlRhcmdldFR5cGUuV2ViUGFnZSwg
SW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CiAKICAgICAgICAgY29uc29sZS5h
c3NlcnQoQXJyYXkuc2hhbGxvd0VxdWFsKE9iamVjdC5rZXlzKHRoaXMuX2FnZW50cyksIFsiVGFy
Z2V0Il0pLCAiQSBXZWJQYWdlIHRhcmdldCBzaG91bGQgb25seSBoYXZlIGEgc2luZ2xlIGFnZW50
LiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCmluZGV4IDJiMTk5NmFmYmE0NmM5ZjhmYzFk
OTQ5ZWNkZDIxYWIzYmRiZjYxN2QuLmYzMzRjMDgwODRjMDcwNjUyYWEwZGVjNDIxMGE3Y2ExYTU3
YTgzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL1BhZ2VUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXSS5QYWdl
VGFyZ2V0ID0gY2xhc3MgUGFnZVRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogewotICAgIGNvbnN0
cnVjdG9yKHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKHBhcmVu
dFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIGNvbm5lY3Rpb24pCiAgICAgewotICAgICAgICBzdXBl
cih0YXJnZXRJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5QYWdlLCBjb25uZWN0aW9uKTsKKyAgICAg
ICAgc3VwZXIocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5QYWdl
LCBjb25uZWN0aW9uKTsKIAogICAgICAgICBjb25zdCBpc1BhZ2VDb250ZXh0ID0gdHJ1ZTsKICAg
ICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRo
aXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIs
IHRoaXMuZGlzcGxheU5hbWUsIGlzUGFnZUNvbnRleHQsIG51bGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCmluZGV4
IGI1ZmM0MWJhMDllYmVlY2RkMjY1YTAzYjJiNDAxYWQ1OGM4ZWI4NzkuLmU3NmZhY2JhM2I1ZDQw
OGY5OGMwNGI2MDE2MGNiYWRiZGYyMjJjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKQEAgLTI1LDEwICsyNSwx
MiBAQAogCiBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAg
ICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBuYW1lLCB0eXBlLCBjb25uZWN0aW9uKQorICAgIGNv
bnN0cnVjdG9yKHBhcmVudFRhcmdldCwgaWRlbnRpZmllciwgbmFtZSwgdHlwZSwgY29ubmVjdGlv
bikKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRhcmdldCA9PT0gbnVsbCB8
fCBwYXJlbnRUYXJnZXQgaW5zdGFuY2VvZiBXSS5UYXJnZXQpOwogICAgICAgICBzdXBlcigpOwog
CisgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9IHBhcmVudFRhcmdldDsKICAgICAgICAgdGhp
cy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwog
ICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKQEAgLTE0OSw2ICsxNTEsMTcgQEAgV0kuVGFyZ2V0
ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAorICAg
IGdldCBwYXJlbnRUYXJnZXQoKSB7IHJldHVybiB0aGlzLl9wYXJlbnRUYXJnZXQ7IH0KKworICAg
IGdldCByb290VGFyZ2V0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90eXBlID09PSBXSS5U
YXJnZXRUeXBlLlBhZ2UpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgaWYgKHRo
aXMuX3BhcmVudFRhcmdldCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRUYXJnZXQu
cm9vdFRhcmdldDsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCiAgICAgZ2V0IGlkZW50
aWZpZXIoKSB7IHJldHVybiB0aGlzLl9pZGVudGlmaWVyOyB9CiAgICAgc2V0IGlkZW50aWZpZXIo
aWRlbnRpZmllcikgeyB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJU
YXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9X
b3JrZXJUYXJnZXQuanMKaW5kZXggYTM0ZWU5MWYzNzg2M2MwZjA1NDQ5MGE1M2I0NjdhMGNkYjY1
MDljYy4uODNjNzA5MmE1ODcyOGYyYTczZDhhOWQ0Y2U1MmExYTFhZDdiMjg1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFy
Z2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1dvcmtlclRhcmdldC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXSS5Xb3JrZXJUYXJnZXQgPSBj
bGFzcyBXb3JrZXJUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25zdHJ1Y3Rvcih3
b3JrZXJJZCwgbmFtZSwgY29ubmVjdGlvbikKKyAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQs
IHdvcmtlcklkLCBuYW1lLCBjb25uZWN0aW9uKQogICAgIHsKLSAgICAgICAgc3VwZXIod29ya2Vy
SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuV29ya2VyLCBjb25uZWN0aW9uKTsKKyAgICAgICAgc3Vw
ZXIocGFyZW50VGFyZ2V0LCB3b3JrZXJJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5Xb3JrZXIsIGNv
bm5lY3Rpb24pOwogCiAgICAgICAgIGNvbnN0IGlzUGFnZUNvbnRleHQgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMs
IFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIHRo
aXMuZGlzcGxheU5hbWUsIGlzUGFnZUNvbnRleHQsIG51bGwpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>