<?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>235924</bug_id>
          
          <creation_ts>2022-01-31 16:03:47 -0800</creation_ts>
          <short_desc>Web Inspector: [Flexbox] Show flex badge next to flex containers in DOM Tree</short_desc>
          <delta_ts>2022-02-11 00:45:36 -0800</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>
          <dependson>236013</dependson>
    
    <dependson>236091</dependson>
          <blocked>235647</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pangle</cc>
    
    <cc>rcaliman</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835755</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-01-31 16:03:47 -0800</bug_when>
    <thetext>Show &quot;flex&quot; badge for elements with `display: flex` and `display: inline-flex`.

&lt;rdar://problem/87886003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836806</commentid>
    <comment_count>1</comment_count>
      <attachid>450746</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-02-03 01:31:11 -0800</bug_when>
    <thetext>Created attachment 450746
WIP

NOT ready for review.

This adds &quot;Engineering -&gt; Enable flexbox inspector&quot; checkbox. Once enabled, it displays &quot;flex&quot; badges.

Because this patch depends on bug 236013, Clicking on &quot;flex&quot; badges currently throws an exception:
undefined is not an object (evaluating &apos;target.DOMAgent.showFlexOverlay.invoke&apos;)​ (at OverlayManager.js:​116:​40)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836929</commentid>
    <comment_count>2</comment_count>
      <attachid>450746</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2022-02-03 07:21:23 -0800</bug_when>
    <thetext>Comment on attachment 450746
WIP

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:253
&gt; +            this._nextDefaultGridColorIndex = (this._nextDefaultFlexColorIndex + 1) % WI.OverlayManager.defaultHSLColors.length;

We can make an infinitely looping iterator from the colors array and remove the all the associated logic for managing indexes.

Context: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterator_protocol

Perhaps this helper can live in `Source/WebInspectorUI/UserInterface/Base/Utilities.js`:
```
    function makeInfiniteLoopingIterable(iterable) {

        console.assert(typeof iterable[Symbol.iterator] === &quot;function&quot;, &quot;Object is not iterable&quot;);
        let _iterator = iterable[Symbol.iterator]();

        return {
            next: function() {
                let result = _iterator.next();
                if (result.done) {
                    this.reset();
                    return this.next();
                }

                return result;
            },

            reset: function() {
                _iterator = iterable[Symbol.iterator]();
            },

            [Symbol.iterator]: function() { return this; }
        }
    }
```

It can be used like this:

```
// Create separate iterators for each overlay type
this._defaultGridColorsIterator = makeInfiniteLoopingIterable(WI.OverlayManager.defaultHSLColors);
this._defaultFlexColorsIterator = makeInfiniteLoopingIterable(WI.OverlayManager.defaultHSLColors);

// ...

// Keep calling .next() to the next color. Will loop automatically to the beginning when it reaches the end.
defaultColor = this._defaultGridColorsIterator.next().value;

// Manually reset the iterator to the first position, for example in `_handleMainResourceDidChange()`
this._defaultGridColorsIterator.reset()
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836930</commentid>
    <comment_count>3</comment_count>
      <attachid>450746</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2022-02-03 07:21:24 -0800</bug_when>
    <thetext>Comment on attachment 450746
WIP

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:253
&gt; +            this._nextDefaultGridColorIndex = (this._nextDefaultFlexColorIndex + 1) % WI.OverlayManager.defaultHSLColors.length;

We can make an infinitely looping iterator from the colors array and remove the all the associated logic for managing indexes.

Context: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterator_protocol

Perhaps this helper can live in `Source/WebInspectorUI/UserInterface/Base/Utilities.js`:
```
    function makeInfiniteLoopingIterable(iterable) {

        console.assert(typeof iterable[Symbol.iterator] === &quot;function&quot;, &quot;Object is not iterable&quot;);
        let _iterator = iterable[Symbol.iterator]();

        return {
            next: function() {
                let result = _iterator.next();
                if (result.done) {
                    this.reset();
                    return this.next();
                }

                return result;
            },

            reset: function() {
                _iterator = iterable[Symbol.iterator]();
            },

            [Symbol.iterator]: function() { return this; }
        }
    }
```

It can be used like this:

```
// Create separate iterators for each overlay type
this._defaultGridColorsIterator = makeInfiniteLoopingIterable(WI.OverlayManager.defaultHSLColors);
this._defaultFlexColorsIterator = makeInfiniteLoopingIterable(WI.OverlayManager.defaultHSLColors);

// ...

// Keep calling .next() to the next color. Will loop automatically to the beginning when it reaches the end.
defaultColor = this._defaultGridColorsIterator.next().value;

// Manually reset the iterator to the first position, for example in `_handleMainResourceDidChange()`
this._defaultGridColorsIterator.reset()
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839046</commentid>
    <comment_count>4</comment_count>
      <attachid>451344</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-02-09 00:45:01 -0800</bug_when>
    <thetext>Created attachment 451344
Patch

Fixed the bug when all flexbox overlays used the same pink color.

The patch has a lot of straightforward changes to OverlayManager.js. Most grid-related methods and variables now have their flex counterparts, e.g. showGridOverlay/showFlexOverlay.
This doesn&apos;t change the existing grid logic, which is good. The downside is that now we have a fair amount of code duplication. It&apos;s tempting to refactor this, but I don&apos;t think it&apos;s a good idea for the next 7 days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839050</commentid>
    <comment_count>5</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-02-09 01:05:00 -0800</bug_when>
    <thetext>(In reply to Razvan Caliman from comment #2)

Hm, I&apos;m not strongly opposed to this, but I&apos;m trying to minimize amount of changes (such as refactoring) in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839336</commentid>
    <comment_count>6</comment_count>
      <attachid>451344</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-09 12:06:35 -0800</bug_when>
    <thetext>Comment on attachment 451344
Patch

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

I&apos;m not convinced that what you&apos;ve done in OverlayManager is the right approach. Other than the actual command arguments and underlying protocol command, all the logic is shared between flex/grid overlays. Why do we need separate maps of nodes-to-color for the visible overlays? Why have separate events for grid/flex overlays when the event includes the overlay which has a node that tells you if it was/is a grid/flex container? I understand some things like getting the default colors need separate buckets to make sure that each set is a clean, repeating, sequence of colors, but a lot of other logic in here appears to just be duplicated between flex/grid which will only get more annoying if more overlays were to exist some day.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:2024
&gt; +        let isGrid = this.representedObject.layoutContextType === WI.DOMNode.LayoutContextType.Grid;
&gt; +        let isFlex = this.representedObject.layoutContextType === WI.DOMNode.LayoutContextType.Flex &amp;&amp; WI.settings.engineeringEnableFlexboxInspector.value;

We should probably just do a switch-case below where we set the text. And then here do a check for no layout context type (null) and iff the layout context is Flex then check the setting as well. E.g.
```
if (!this.representedObject.layoutContextType)
    return;

if (this.representedObject.layoutContextType = WI.DOMNode.LayoutContextType.Flex &amp;&amp; !WI.settings.engineeringEnableFlexboxInspector.value)
    return;
```
which makes it easier to scale with future overlays.

And then use switch-case below for :2031-2034 with an assertion that we don&apos;t hit the `default` case.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:2087
&gt;          if (domNode.layoutContextType === WI.DOMNode.LayoutContextType.Grid) {
&gt; -            WI.overlayManager.addEventListener(WI.OverlayManager.Event.GridOverlayShown, this._updateGridBadgeStatus, this);
&gt; -            WI.overlayManager.addEventListener(WI.OverlayManager.Event.GridOverlayHidden, this._updateGridBadgeStatus, this);
&gt; +            WI.overlayManager.addEventListener(WI.OverlayManager.Event.GridOverlayShown, this._updateLayoutBadgeStatus, this);
&gt; +            WI.overlayManager.addEventListener(WI.OverlayManager.Event.GridOverlayHidden, this._updateLayoutBadgeStatus, this);
&gt;          } else {
&gt; -            WI.overlayManager.removeEventListener(WI.OverlayManager.Event.GridOverlayShown, this._updateGridBadgeStatus, this);
&gt; -            WI.overlayManager.removeEventListener(WI.OverlayManager.Event.GridOverlayHidden, this._updateGridBadgeStatus, this);
&gt; +            WI.overlayManager.removeEventListener(WI.OverlayManager.Event.GridOverlayShown, this._updateLayoutBadgeStatus, this);
&gt; +            WI.overlayManager.removeEventListener(WI.OverlayManager.Event.GridOverlayHidden, this._updateLayoutBadgeStatus, this);
&gt;          }

This doesn&apos;t seem correct. Don&apos;t we need to update for flex as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839347</commentid>
    <comment_count>7</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-02-09 12:24:16 -0800</bug_when>
    <thetext>(In reply to Patrick Angle from comment #6)
&gt; Comment on attachment 451344 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451344&amp;action=review
&gt; 
&gt; I&apos;m not convinced that what you&apos;ve done in OverlayManager is the right
&gt; approach. Other than the actual command arguments and underlying protocol
&gt; command, all the logic is shared between flex/grid overlays. Why do we need
&gt; separate maps of nodes-to-color for the visible overlays? Why have separate
&gt; events for grid/flex overlays when the event includes the overlay which has
&gt; a node that tells you if it was/is a grid/flex container? I understand some
&gt; things like getting the default colors need separate buckets to make sure
&gt; that each set is a clean, repeating, sequence of colors, but a lot of other
&gt; logic in here appears to just be duplicated between flex/grid which will
&gt; only get more annoying if more overlays were to exist some day.

I think you might be right. I&apos;m going to try to reduce duplication now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839459</commentid>
    <comment_count>8</comment_count>
      <attachid>451462</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-02-09 16:50:44 -0800</bug_when>
    <thetext>Created attachment 451462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839486</commentid>
    <comment_count>9</comment_count>
      <attachid>451462</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-09 18:01:59 -0800</bug_when>
    <thetext>Comment on attachment 451462
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:56
&gt; +        console.assert(domNode.layoutContextType === WI.DOMNode.LayoutContextType.Grid || domNode.layoutContextType === WI.DOMNode.LayoutContextType.Flex, domNode.layoutContextType);

NIT: Is there any reason to enumerate each of the `WI.DOMNode.LayoutContextType`?  Or can we just `Object.values(WI.DOMNode.LayoutContextType).includes(domNode.layoutContextType)`?

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:72
&gt; +            break;
&gt; +        case WI.DOMNode.LayoutContextType.Flex:

NIT: I&apos;d add a newline between these

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:-85
&gt; -        console.assert(domNode.layoutContextType === WI.DOMNode.LayoutContextType.Grid, domNode.layoutContextType);

Why is this removed?  We could have this instead of the `default:` below.

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:106
&gt; +            break;
&gt; +        case WI.DOMNode.LayoutContextType.Flex:

ditto (:71)

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:111
&gt; +        default:
&gt; +            console.assert(false, domNode.layoutContextType);
&gt; +        }

missing a `break;`

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:126
&gt; +    isOverlayVisible(domNode)

NIT: Maybe `hasVisibleOverlay` instead?

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:153
&gt; +                break;
&gt; +            case WI.DOMNode.LayoutContextType.Flex:

ditto (:71)

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:188
&gt; +        console.assert(domNode.layoutContextType !== WI.DOMNode.LayoutContextType.Grid &amp;&amp; domNode.layoutContextType !== WI.DOMNode.LayoutContextType.Flex, domNode);

ditto (:56)

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:222
&gt; +WI.OverlayManager.defaultHSLColors = [

NIT: this should probably be `WI.OverlayManager._defaultHSLColors` since it&apos;s not meant to be used externally

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:2030
&gt; +        this._layoutBadgeElement.className = &quot;badge&quot;;

please make this `layout-badge` to better match the variable name (and be less generic)

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:2036
&gt; +            break;
&gt; +        case WI.DOMNode.LayoutContextType.Flex:

ditto (Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:71)

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:2041
&gt; +        default:
&gt; +            console.assert(false, this.representedObject.layoutContextType);
&gt; +        }

ditto (Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:109)

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:2044
&gt; +        this.title.append(this._layoutBadgeElement);

NIT: you can(/should) combine this with :2029
```
this._layoutBadgeElement = this.title.appendChild(document.createElement(&quot;span&quot;));
```

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:2058
&gt; +        let initiator = this.representedObject.layoutContextType === WI.DOMNode.LayoutContextType.Grid ? WI.GridOverlayDiagnosticEventRecorder.Initiator.Badge : null;

NIT: I&apos;d either inline this
```
WI.overlayManager.toggleOverlay(this.representedObject, {
    initiator: this.representedObject.layoutContextType === WI.DOMNode.LayoutContextType.Grid ? WI.GridOverlayDiagnosticEventRecorder.Initiator.Badge : null,
});
```
or make it so that you don&apos;t even create the property unless it has a value
```
let options = {};
if (this.representedObject.layoutContextType === WI.DOMNode.LayoutContextType.Grid)
    options.initiator = WI.GridOverlayDiagnosticEventRecorder.Initiator.Badge;
WI.overlayManager.toggleOverlay(this.representedObject, options);
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839970</commentid>
    <comment_count>10</comment_count>
      <attachid>451603</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-02-10 14:45:04 -0800</bug_when>
    <thetext>Created attachment 451603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840144</commentid>
    <comment_count>11</comment_count>
      <attachid>451603</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-10 20:03:25 -0800</bug_when>
    <thetext>Comment on attachment 451603
Patch

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

r=me, nice work! I&apos;m glad we were able to do this with a lot less duplicated code.

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:190
&gt; +        console.assert(Object.values(WI.DOMNode.LayoutContextType).includes(domNode.layoutContextType), domNode);

I don&apos;t think this assertion will pass if a node becomes something other than the currently recognized context types of Grid and Flex. Because changing from one context type to any other context type, or null, is valid I don&apos;t think we need an assertion here any more.

&gt; Source/WebInspectorUI/UserInterface/Controllers/OverlayManager.js:220
&gt;          this._nextDefaultGridColorIndex = 0;
&gt; +        this._nextDefaultFlexColorIndex = 0;

As an aside, I think we might have a pre-existing bug where the order of colors is possibly dependent on if the Layout sidebar panel is open when loading a page because only when it is open are all the various layout containers sent to the frontend. If just the DOM tree is visible, only the DOM nodes that have made it from the backend to the frontend will get badges, which means deeply nested child nodes with grid or flex contexts aren&apos;t known about until the tree is expanded, at which point you might have used color 1 before the child somewhere and color 2 after the child somewhere, which means we might use color 3 for the child, which in the document is declared between the first and second nodes that happened to already be visible. In practice I don&apos;t think this is too big of a deal, and given it is an existing potential issue with mild symptoms we certainly don&apos;t need to solve it in this patch. But I thought I&apos;d mention it while it was fresh in my mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840231</commentid>
    <comment_count>12</comment_count>
      <attachid>451650</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2022-02-10 23:56:43 -0800</bug_when>
    <thetext>Created attachment 451650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840250</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-11 00:45:34 -0800</bug_when>
    <thetext>Committed r289610 (247123@main): &lt;https://commits.webkit.org/247123@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451650.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450746</attachid>
            <date>2022-02-03 01:31:11 -0800</date>
            <delta_ts>2022-02-09 00:45:01 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>25900</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGE0NDc1ZDQ1NTk1ZC4uMDFiZjI3YzM5MGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMi0wMi0wMyAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbRmxleGJveF0gU2hvdyBmbGV4IGJhZGdlIG5leHQgdG8gZmxleCBjb250YWluZXJzIGlu
IERPTSBUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvT3ZlcmxheU1hbmFnZXIuanM6CisgICAgICAgIChXSS5PdmVybGF5TWFu
YWdlcik6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2hvd092ZXJsYXkp
OgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLnNob3dGbGV4T3ZlcmxheSk6
CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuaGlkZU92ZXJsYXkpOgorICAg
ICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLmhpZGVGbGV4T3ZlcmxheSk6CisgICAg
ICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuaXNPdmVybGF5VmlzaWJsZSk6CisgICAg
ICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuaXNGbGV4T3ZlcmxheVZpc2libGUpOgor
ICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLnRvZ2dsZU92ZXJsYXkpOgorICAg
ICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLmdldENvbG9yRm9yTm9kZSk6CisgICAg
ICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuZ2V0R3JpZENvbG9yRm9yTm9kZSk6Cisg
ICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuZ2V0RmxleENvbG9yRm9yTm9kZSk6
CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2V0RmxleENvbG9yRm9yTm9k
ZSk6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUxheW91dENv
bnRleHRUeXBlQ2hhbmdlZCk6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUu
X2hhbmRsZU1haW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdl
ci5wcm90b3R5cGUudG9nZ2xlR3JpZE92ZXJsYXkpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAoLnRyZWUtb3V0bGlu
ZS5kb20gLmJhZGdlKToKKyAgICAgICAgKC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS5hY3RpdmF0
ZWQpOgorICAgICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQt
aW5hY3RpdmUpIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhpbiBsaS5zZWxlY3RlZCAuYmFk
Z2UpOgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLnRyZWUt
b3V0bGluZS5kb20gLmJhZGdlKToKKyAgICAgICAgKC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1j
c3MtZ3JpZCk6IERlbGV0ZWQuCisgICAgICAgICgudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UtY3Nz
LWdyaWQuYWN0aXZhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cy13
aXRoaW4gbGkuc2VsZWN0ZWQgLmJhZGdlLWNzcy1ncmlkKTogRGVsZXRlZC4KKyAgICAgICAgKEBt
ZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50cmVlLW91dGxpbmUuZG9tIC5iYWRn
ZS1jc3MtZ3JpZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJ
LkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAgICAgIChXSS5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUub25kZXRhY2gpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlLnVwZGF0ZVRpdGxlKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fdXBkYXRlTGF5b3V0QmFkZ2UpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9sYXlvdXRCYWRnZUNsaWNrZWQpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cyk6CisgICAgICAgIChXSS5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCk6CisgICAg
ICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUdyaWRCYWRnZSk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX2dyaWRCYWRnZUNsaWNr
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9ncmlk
QmFkZ2VEb3VibGVDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZS5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
SS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY3JlYXRlRW5naW5lZXJpbmdTZXR0
aW5nc1ZpZXcpOgorCiAyMDIyLTAxLTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlOiBtb3ZlIFByZXNlcnZlIExvZyBj
aGVja2JveCBuYXZpZ2F0aW9uIGl0ZW0gdG8gYSBnZWFyLXdpdGgtY29udGV4dG1lbnUgdG8gc2F2
ZSBzcGFjZSAoYW5kIG1hdGNoIHRoZSBOZXR3b3JrIFRhYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCAwYWNkZDFhMTM1
ZmMuLmM1Y2ViNzc0M2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpAQCAtMjM5LDYgKzIzOSw3IEBAIFdJLnNldHRpbmdz
ID0gewogICAgIHByb3RvY29sRmlsdGVyTXVsdGlwbGV4aW5nQmFja2VuZE1lc3NhZ2VzOiBuZXcg
V0kuU2V0dGluZygicHJvdG9jb2wtZmlsdGVyLW11bHRpcGxleGluZy1iYWNrZW5kLW1lc3NhZ2Vz
IiwgdHJ1ZSksCiAKICAgICAvLyBFbmdpbmVlcmluZworICAgIGVuZ2luZWVyaW5nRW5hYmxlRmxl
eGJveEluc3BlY3RvcjogbmV3IFdJLkVuZ2luZWVyaW5nU2V0dGluZygiZW5naW5lZXJpbmctZW5h
YmxlLWZsZXhib3gtaW5zcGVjdG9yIiwgZmFsc2UpLAogICAgIGVuZ2luZWVyaW5nU2hvd0ludGVy
bmFsRXhlY3V0aW9uQ29udGV4dHM6IG5ldyBXSS5FbmdpbmVlcmluZ1NldHRpbmcoImVuZ2luZWVy
aW5nLXNob3ctaW50ZXJuYWwtZXhlY3V0aW9uLWNvbnRleHRzIiwgZmFsc2UpLAogICAgIGVuZ2lu
ZWVyaW5nU2hvd0ludGVybmFsU2NyaXB0czogbmV3IFdJLkVuZ2luZWVyaW5nU2V0dGluZygiZW5n
aW5lZXJpbmctc2hvdy1pbnRlcm5hbC1zY3JpcHRzIiwgZmFsc2UpLAogICAgIGVuZ2luZWVyaW5n
UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHM6IG5ldyBXSS5FbmdpbmVlcmluZ1NldHRpbmcoImVuZ2lu
ZWVyaW5nLXBhdXNlLWZvci1pbnRlcm5hbC1zY3JpcHRzIiwgZmFsc2UpLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvT3ZlcmxheU1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9PdmVybGF5TWFuYWdlci5qcwppbmRleCAwMmI3NmYxOGI3NTcuLjQ5YTVmYzUzNDI2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
T3ZlcmxheU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvT3ZlcmxheU1hbmFnZXIuanMKQEAgLTMwLDkgKzMwLDE2IEBAIFdJLk92
ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3ZlcmxheU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVNYXAgPSBu
ZXcgTWFwOworICAgICAgICB0aGlzLl9mbGV4T3ZlcmxheUZvck5vZGVNYXAgPSBuZXcgTWFwOwor
CiAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAwOworICAgICAgICB0
aGlzLl9uZXh0RGVmYXVsdEZsZXhDb2xvckluZGV4ID0gMDsKKwogICAgICAgICB0aGlzLl9ncmlk
Q29sb3JGb3JOb2RlTWFwID0gbmV3IFdlYWtNYXA7CisgICAgICAgIHRoaXMuX2ZsZXhDb2xvckZv
ck5vZGVNYXAgPSBuZXcgV2Vha01hcDsKKwogICAgICAgICB0aGlzLl9ncmlkQ29sb3JTZXR0aW5n
Rm9yTm9kZU1hcCA9IG5ldyBXZWFrTWFwOworICAgICAgICB0aGlzLl9mbGV4Q29sb3JTZXR0aW5n
Rm9yTm9kZU1hcCA9IG5ldyBXZWFrTWFwOwogCiAgICAgICAgIFdJLnNldHRpbmdzLmdyaWRPdmVy
bGF5U2hvd0V4dGVuZGVkR3JpZExpbmVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVu
dC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwogICAgICAg
ICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMuYWRkRXZlbnRMaXN0ZW5lcihX
SS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCwg
dGhpcyk7CkBAIC00NCw2ICs1MSwxOCBAQCBXSS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92ZXJs
YXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAorICAgIHNob3dP
dmVybGF5KGRvbU5vZGUsIHtjb2xvciwgaW5pdGlhdG9yfSA9IHt9KQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKSB7CisgICAgICAgIGNhc2UgV0kuRE9N
Tm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgorICAgICAgICAgICAgdGhpcy5zaG93R3JpZE92
ZXJsYXkoZG9tTm9kZSwge2NvbG9yLCBpbml0aWF0b3J9KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleDoKKyAgICAgICAg
ICAgIHRoaXMuc2hvd0ZsZXhPdmVybGF5KGRvbU5vZGUsIHtjb2xvciwgaW5pdGlhdG9yfSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHNob3dHcmlkT3Zlcmxh
eShkb21Ob2RlLCB7Y29sb3IsIGluaXRpYXRvcn0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFkb21Ob2RlLmRlc3Ryb3llZCwgZG9tTm9kZSk7CkBAIC03OCw2ICs5Nyw0NyBA
QCBXSS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5h
Z2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIG92ZXJsYXkpOwogICAgIH0KIAorICAgIHNob3dG
bGV4T3ZlcmxheShkb21Ob2RlLCB7Y29sb3IsIGluaXRpYXRvcn0gPSB7fSkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCFkb21Ob2RlLmRlc3Ryb3llZCwgZG9tTm9kZSk7CisgICAgICAg
IGlmIChkb21Ob2RlLmRlc3Ryb3llZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBj
b25zb2xlLmFzc2VydChkb21Ob2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgZG9tTm9kZSk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb2xvciB8fCBjb2xvciBpbnN0YW5jZW9mIFdJLkNvbG9y
LCBjb2xvcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUubGF5b3V0Q29udGV4dFR5
cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleCwgZG9tTm9kZS5sYXlvdXRD
b250ZXh0VHlwZSk7CisKKyAgICAgICAgY29sb3IgfHw9IHRoaXMuZ2V0RmxleENvbG9yRm9yTm9k
ZShkb21Ob2RlKTsKKyAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgp
OworICAgICAgICBsZXQgY29tbWFuZEFyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgIG5vZGVJZDog
ZG9tTm9kZS5pZCwKKyAgICAgICAgICAgIGZsZXhDb2xvcjogY29sb3IudG9Qcm90b2NvbCgpLAor
ICAgICAgICB9OworICAgICAgICB0YXJnZXQuRE9NQWdlbnQuc2hvd0ZsZXhPdmVybGF5Lmludm9r
ZShjb21tYW5kQXJndW1lbnRzKTsKKworICAgICAgICBsZXQgb3ZlcmxheSA9IHtkb21Ob2RlLCAu
Li5jb21tYW5kQXJndW1lbnRzLCBpbml0aWF0b3J9OworCisgICAgICAgIC8vIFRoZSBtZXRob2Qg
dG8gc2hvdyB0aGUgb3ZlcmxheSB3aWxsIGJlIGNhbGxlZCByZXBlYXRlZGx5IHdoaWxlIHVwZGF0
aW5nIHRoZSBmbGV4Ym94IG92ZXJsYXkgY29sb3IuIEF2b2lkIGFkZGluZyBkdXBsaWNhdGUgZXZl
bnQgbGlzdGVuZXJzCisgICAgICAgIGlmICghdGhpcy5fZmxleE92ZXJsYXlGb3JOb2RlTWFwLmhh
cyhkb21Ob2RlKSkKKyAgICAgICAgICAgIGRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01O
b2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29u
dGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9mbGV4T3ZlcmxheUZvck5v
ZGVNYXAuc2V0KGRvbU5vZGUsIG92ZXJsYXkpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkZsZXhPdmVybGF5U2hvd24sIG92
ZXJsYXkpOworICAgIH0KKworICAgIGhpZGVPdmVybGF5KGRvbU5vZGUpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5E
T01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICB0aGlzLmhpZGVHcmlk
T3ZlcmxheShkb21Ob2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdJLkRP
TU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleDoKKyAgICAgICAgICAgIHRoaXMuaGlkZUZsZXhP
dmVybGF5KGRvbU5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICBoaWRlR3JpZE92ZXJsYXkoZG9tTm9kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKQEAgLTk3LDIyICsx
NTcsNjYgQEAgV0kuT3ZlcmxheU1hbmFnZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5PdmVy
bGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheUhpZGRlbiwgb3ZlcmxheSk7CiAgICAgfQogCisg
ICAgaGlkZUZsZXhPdmVybGF5KGRvbU5vZGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dChkb21Ob2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgZG9tTm9kZSk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFkb21Ob2RlLmRlc3Ryb3llZCwgZG9tTm9kZSk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29u
dGV4dFR5cGUuRmxleCwgZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSk7CisgICAgICAgIGlmIChk
b21Ob2RlLmRlc3Ryb3llZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgb3Zl
cmxheSA9IHRoaXMuX2ZsZXhPdmVybGF5Rm9yTm9kZU1hcC50YWtlKGRvbU5vZGUpOworICAgICAg
ICBpZiAoIW92ZXJsYXkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHRhcmdl
dCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICB0YXJnZXQuRE9NQWdlbnQuaGlk
ZUZsZXhPdmVybGF5KGRvbU5vZGUuaWQpOworCisgICAgICAgIGRvbU5vZGUucmVtb3ZlRXZlbnRM
aXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5f
aGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuRmxleE92ZXJsYXlI
aWRkZW4sIG92ZXJsYXkpOworICAgIH0KKwogICAgIGhhc1Zpc2libGVHcmlkT3ZlcmxheXMoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1hcC5zaXplID4g
MDsKICAgICB9CiAKKyAgICBpc092ZXJsYXlWaXNpYmxlKGRvbU5vZGUpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5E
T01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5p
c0dyaWRPdmVybGF5VmlzaWJsZShkb21Ob2RlKTsKKyAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxh
eW91dENvbnRleHRUeXBlLkZsZXg6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZsZXhPdmVy
bGF5VmlzaWJsZShkb21Ob2RlKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlzR3JpZE92ZXJs
YXlWaXNpYmxlKGRvbU5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZE92ZXJs
YXlGb3JOb2RlTWFwLmhhcyhkb21Ob2RlKTsKICAgICB9CiAKLSAgICB0b2dnbGVHcmlkT3Zlcmxh
eShkb21Ob2RlLCBvcHRpb25zKQorICAgIGlzRmxleE92ZXJsYXlWaXNpYmxlKGRvbU5vZGUpCiAg
ICAgewotICAgICAgICBpZiAodGhpcy5pc0dyaWRPdmVybGF5VmlzaWJsZShkb21Ob2RlKSkKLSAg
ICAgICAgICAgIHRoaXMuaGlkZUdyaWRPdmVybGF5KGRvbU5vZGUpOworICAgICAgICByZXR1cm4g
dGhpcy5fZmxleE92ZXJsYXlGb3JOb2RlTWFwLmhhcyhkb21Ob2RlKTsKKyAgICB9CisKKyAgICB0
b2dnbGVPdmVybGF5KGRvbU5vZGUsIG9wdGlvbnMpCisgICAgeworICAgICAgICBpZiAodGhpcy5p
c092ZXJsYXlWaXNpYmxlKGRvbU5vZGUpKQorICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheShk
b21Ob2RlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5zaG93R3JpZE92ZXJsYXko
ZG9tTm9kZSwgb3B0aW9ucyk7CisgICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KGRvbU5vZGUs
IG9wdGlvbnMpOworICAgIH0KKworICAgIGdldENvbG9yRm9yTm9kZShkb21Ob2RlKQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKSB7CisgICAgICAgIGNh
c2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgorICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZ2V0R3JpZENvbG9yRm9yTm9kZShkb21Ob2RlKTsKKyAgICAgICAgY2FzZSBXSS5ET01O
b2RlLkxheW91dENvbnRleHRUeXBlLkZsZXg6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRG
bGV4Q29sb3JGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZ2V0R3Jp
ZENvbG9yRm9yTm9kZShkb21Ob2RlKQpAQCAtMTIxLDE4ICsyMjUsMTAgQEAgV0kuT3ZlcmxheU1h
bmFnZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBp
ZiAoY29sb3IpCiAgICAgICAgICAgICByZXR1cm4gY29sb3I7CiAKLSAgICAgICAgY29uc3QgZGVm
YXVsdEdyaWRIU0xDb2xvcnMgPSBbCi0gICAgICAgICAgICBbMzI5LCA5MSwgNzBdLAotICAgICAg
ICAgICAgWzIwNywgOTYsIDY5XSwKLSAgICAgICAgICAgIFs5MiwgOTAsIDY0XSwKLSAgICAgICAg
ICAgIFsyOTEsIDczLCA2OF0sCi0gICAgICAgICAgICBbNDAsIDk3LCA1N10sCi0gICAgICAgIF07
Ci0KICAgICAgICAgbGV0IGNvbG9yU2V0dGluZyA9IHRoaXMuX2dyaWRDb2xvclNldHRpbmdGb3JO
b2RlTWFwLmdldChkb21Ob2RlKTsKICAgICAgICAgaWYgKCFjb2xvclNldHRpbmcpIHsKLSAgICAg
ICAgICAgIGxldCBkZWZhdWx0Q29sb3IgPSBkZWZhdWx0R3JpZEhTTENvbG9yc1t0aGlzLl9uZXh0
RGVmYXVsdEdyaWRDb2xvckluZGV4XTsKLSAgICAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3Jp
ZENvbG9ySW5kZXggPSAodGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleCArIDEpICUgZGVm
YXVsdEdyaWRIU0xDb2xvcnMubGVuZ3RoOworICAgICAgICAgICAgbGV0IGRlZmF1bHRDb2xvciA9
IFdJLk92ZXJsYXlNYW5hZ2VyLmRlZmF1bHRIU0xDb2xvcnNbdGhpcy5fbmV4dERlZmF1bHRHcmlk
Q29sb3JJbmRleF07CisgICAgICAgICAgICB0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4
ID0gKHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggKyAxKSAlIFdJLk92ZXJsYXlNYW5h
Z2VyLmRlZmF1bHRIU0xDb2xvcnMubGVuZ3RoOwogCiAgICAgICAgICAgICBsZXQgdXJsID0gZG9t
Tm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMIHx8IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5G
cmFtZS51cmw7CiAgICAgICAgICAgICBjb2xvclNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhgZ3Jp
ZC1vdmVybGF5LWNvbG9yLSR7dXJsLmhhc2h9LSR7ZG9tTm9kZS5wYXRoKCkuaGFzaH1gLCBkZWZh
dWx0Q29sb3IpOwpAQCAtMTQ1LDYgKzI0MSwyOCBAQCBXSS5PdmVybGF5TWFuYWdlciA9IGNsYXNz
IE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBjb2xvcjsK
ICAgICB9CiAKKyAgICBnZXRGbGV4Q29sb3JGb3JOb2RlKGRvbU5vZGUpCisgICAgeworICAgICAg
ICBsZXQgY29sb3IgPSB0aGlzLl9mbGV4Q29sb3JGb3JOb2RlTWFwLmdldChkb21Ob2RlKTsKKyAg
ICAgICAgaWYgKGNvbG9yKQorICAgICAgICAgICAgcmV0dXJuIGNvbG9yOworCisgICAgICAgIGxl
dCBjb2xvclNldHRpbmcgPSB0aGlzLl9mbGV4Q29sb3JTZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9t
Tm9kZSk7CisgICAgICAgIGlmICghY29sb3JTZXR0aW5nKSB7CisgICAgICAgICAgICBsZXQgZGVm
YXVsdENvbG9yID0gV0kuT3ZlcmxheU1hbmFnZXIuZGVmYXVsdEhTTENvbG9yc1t0aGlzLl9uZXh0
RGVmYXVsdEZsZXhDb2xvckluZGV4XTsKKyAgICAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3Jp
ZENvbG9ySW5kZXggPSAodGhpcy5fbmV4dERlZmF1bHRGbGV4Q29sb3JJbmRleCArIDEpICUgV0ku
T3ZlcmxheU1hbmFnZXIuZGVmYXVsdEhTTENvbG9ycy5sZW5ndGg7CisKKyAgICAgICAgICAgIGxl
dCB1cmwgPSBkb21Ob2RlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRVUkwgfHwgV0kubmV0d29ya01h
bmFnZXIubWFpbkZyYW1lLnVybDsKKyAgICAgICAgICAgIGNvbG9yU2V0dGluZyA9IG5ldyBXSS5T
ZXR0aW5nKGBmbGV4LW92ZXJsYXktY29sb3ItJHt1cmwuaGFzaH0tJHtkb21Ob2RlLnBhdGgoKS5o
YXNofWAsIGRlZmF1bHRDb2xvcik7CisgICAgICAgICAgICB0aGlzLl9mbGV4Q29sb3JTZXR0aW5n
Rm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgY29sb3JTZXR0aW5nKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGNvbG9yID0gbmV3IFdJLkNvbG9yKFdJLkNvbG9yLkZvcm1hdC5IU0wsIGNvbG9yU2V0dGlu
Zy52YWx1ZSk7CisgICAgICAgIHRoaXMuX2ZsZXhDb2xvckZvck5vZGVNYXAuc2V0KGRvbU5vZGUs
IGNvbG9yKTsKKworICAgICAgICByZXR1cm4gY29sb3I7CisgICAgfQorCiAgICAgc2V0R3JpZENv
bG9yRm9yTm9kZShkb21Ob2RlLCBjb2xvcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGRvbU5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKQEAgLTE1NywxOCArMjc1
LDM1IEBAIFdJLk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3ZlcmxheU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgdGhpcy5fZ3JpZENvbG9yRm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwg
Y29sb3IpOwogICAgIH0KIAorICAgIHNldEZsZXhDb2xvckZvck5vZGUoZG9tTm9kZSwgY29sb3Ip
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlIGluc3RhbmNlb2YgV0kuRE9N
Tm9kZSwgZG9tTm9kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbG9yIGluc3RhbmNlb2Yg
V0kuQ29sb3IsIGNvbG9yKTsKKworICAgICAgICBsZXQgY29sb3JTZXR0aW5nID0gdGhpcy5fZmxl
eENvbG9yU2V0dGluZ0Zvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOworICAgICAgICBjb25zb2xlLmFz
c2VydChjb2xvclNldHRpbmcsICJUaGVyZSBzaG91bGQgYWxyZWFkeSBiZSBhIHNldHRpbmcgY3Jl
YXRlZCBmb3JtIGEgcHJldmlvdXMgY2FsbCB0byBnZXRGbGV4Q29sb3JGb3JOb2RlKCkiKTsKKyAg
ICAgICAgY29sb3JTZXR0aW5nLnZhbHVlID0gY29sb3IuaHNsOworCisgICAgICAgIHRoaXMuX2Zs
ZXhDb2xvckZvck5vZGVNYXAuc2V0KGRvbU5vZGUsIGNvbG9yKTsKKyAgICB9CisKICAgICAvLyBQ
cml2YXRlCiAKICAgICBfaGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkKGV2ZW50KQogICAg
IHsKICAgICAgICAgbGV0IGRvbU5vZGUgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29u
dGV4dFR5cGUuR3JpZCwgZG9tTm9kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUu
bGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCAm
JiBkb21Ob2RlLmxheW91dENvbnRleHRUeXBlICE9PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRU
eXBlLkZsZXgsIGRvbU5vZGUpOwogCiAgICAgICAgIGRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5ET01Ob2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxl
TGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsKIAogICAgICAgICAvLyBXaGVuIHRoZSBj
b250ZXh0IHR5cGUgY2hhbmdlcywgdGhlIG92ZXJsYXkgaXMgYXV0b21hdGljYWxseSBoaWRkZW4g
b24gdGhlIGJhY2tlbmQuIEhlcmUsIHdlIG9ubHkgdXBkYXRlIHRoZSBtYXAgYW5kIG5vdGlmeSBs
aXN0ZW5lcnMuCi0gICAgICAgIGxldCBvdmVybGF5ID0gdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2Rl
TWFwLnRha2UoZG9tTm9kZSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCBvdmVybGF5KTsKKyAg
ICAgICAgaWYgKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0
Q29udGV4dFR5cGUuR3JpZCkgeworICAgICAgICAgICAgbGV0IG92ZXJsYXkgPSB0aGlzLl9ncmlk
T3ZlcmxheUZvck5vZGVNYXAudGFrZShkb21Ob2RlKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlk
ZGVuLCBvdmVybGF5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxldCBvdmVybGF5
ID0gdGhpcy5fZmxleE92ZXJsYXlGb3JOb2RlTWFwLnRha2UoZG9tTm9kZSk7CisgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5PdmVybGF5TWFuYWdlci5FdmVudC5G
bGV4T3ZlcmxheUhpZGRlbiwgb3ZlcmxheSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfaGFu
ZGxlR3JpZFNldHRpbmdDaGFuZ2VkKGV2ZW50KQpAQCAtMTkxLDEwICszMjYsMjEgQEAgV0kuT3Zl
cmxheU1hbmFnZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAvLwogICAgICAgICAvLyBgZG9tTm9kZS5pZGAgaXMgZGlmZmVyZW50IGZvciB0aGUgc2Ft
ZSBET00gZWxlbWVudCBhZnRlciBwYWdlIHJlbG9hZC4KICAgICAgICAgdGhpcy5fbmV4dERlZmF1
bHRHcmlkQ29sb3JJbmRleCA9IDA7CisgICAgICAgIHRoaXMuX25leHREZWZhdWx0RmxleENvbG9y
SW5kZXggPSAwOwogICAgIH0KIH07CiAKK1dJLk92ZXJsYXlNYW5hZ2VyLmRlZmF1bHRIU0xDb2xv
cnMgPSBbCisgICAgWzMyOSwgOTEsIDcwXSwKKyAgICBbMjA3LCA5NiwgNjldLAorICAgIFs5Miwg
OTAsIDY0XSwKKyAgICBbMjkxLCA3MywgNjhdLAorICAgIFs0MCwgOTcsIDU3XSwKK107CisKIFdJ
Lk92ZXJsYXlNYW5hZ2VyLkV2ZW50ID0gewogICAgIEdyaWRPdmVybGF5U2hvd246ICJvdmVybGF5
LW1hbmFnZXItZ3JpZC1vdmVybGF5LXNob3duIiwKICAgICBHcmlkT3ZlcmxheUhpZGRlbjogIm92
ZXJsYXktbWFuYWdlci1ncmlkLW92ZXJsYXktaGlkZGVuIiwKKyAgICBGbGV4T3ZlcmxheVNob3du
OiAib3ZlcmxheS1tYW5hZ2VyLWZsZXgtb3ZlcmxheS1zaG93biIsCisgICAgRmxleE92ZXJsYXlI
aWRkZW46ICJvdmVybGF5LW1hbmFnZXItZmxleC1vdmVybGF5LWhpZGRlbiIsCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVs
ZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZUVsZW1lbnQuY3NzCmluZGV4IDE5ZDY0NzUxYTBjZC4uMGU5ODhkMWMwNzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxl
bWVudC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuY3NzCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLnRyZWUtb3V0bGluZS5kb20gLmJhZGdlLWNzcy1ncmlk
IHsKKy50cmVlLW91dGxpbmUuZG9tIC5iYWRnZSB7CiAgICAgLyogVXNpbmcgc2Fucy1zZXJpZiBT
YW4gRnJhbmNpc2NvIGZvbnQgaGVyZSBjcmVhdGVzIGEgYmFkZ2UgMXB4IHRhbGxlciB0aGFuIHRo
ZSBzZWxlY3RlZAogICAgIGFyZWEuIFVzZSB0aGUgc2FtZSBtb25vc3BhY2UgZm9udCBhcyB0aGUg
cmVzdCBvZiB0aGUgRE9NIHRyZWUgb3V0bGluZS4gKi8KIApAQCAtMzgsMTkgKzM4LDE5IEBACiAg
ICAgYm94LXNoYWRvdzogMCAwIDFweCBoc2xhKDAsIDAlLCAwJSwgMC41KTsKIH0KIAotLnRyZWUt
b3V0bGluZS5kb20gLmJhZGdlLWNzcy1ncmlkLmFjdGl2YXRlZCB7CisudHJlZS1vdXRsaW5lLmRv
bSAuYmFkZ2UuYWN0aXZhdGVkIHsKICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nbHlwaC1jb2xvci1h
Y3RpdmUpOwogICAgIGNvbG9yOiB3aGl0ZTsKIH0KIAotYm9keTpub3QoLndpbmRvdy1pbmFjdGl2
ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhp
biBsaS5zZWxlY3RlZCAuYmFkZ2UtY3NzLWdyaWQgeworYm9keTpub3QoLndpbmRvdy1pbmFjdGl2
ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhp
biBsaS5zZWxlY3RlZCAuYmFkZ2UgewogICAgIC8qIE92ZXJyaWRlIGBsaS5zZWxlY3RlZCAqIHtj
b2xvcjogaW5oZXJpdGVkfWAgZnJvbSBET01UcmVlT3V0bGluZS5jc3MgKi8KICAgICBjb2xvcjog
dmFyKC0tdGV4dC1jb2xvcik7CiB9CiAKIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgewotICAgIC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1jc3MtZ3JpZCB7CisgICAgLnRy
ZWUtb3V0bGluZS5kb20gLmJhZGdlIHsKICAgICAgICAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwg
MzAlLCAwLjgpOwogICAgICAgICBib3JkZXItY29sb3I6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRleCAwZGE0YTNkMmY4NjAuLjViZmQxNmI3
YTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTUxLDcgKzUxLDcgQEAgV0kuRE9NVHJl
ZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAg
ICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkQXR0cmlidXRlcyA9IG5ldyBTZXQ7CiAgICAgICAgIHRo
aXMuX3JlY2VudGx5TW9kaWZpZWRBdHRyaWJ1dGVzID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5f
Y2xvc2VUYWdUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1l
bnQgPSBudWxsOworICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQgPSBudWxsOwogCiAg
ICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkVuYWJsZWRQc2V1
ZG9DbGFzc2VzQ2hhbmdlZCwgdGhpcy5fdXBkYXRlUHNldWRvQ2xhc3NJbmRpY2F0b3IsIHRoaXMp
OwogCkBAIC00NDUsMTkgKzQ0NSwxOSBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2Rl
LkxheW91dENvbnRleHRUeXBlLkdyaWQpIHsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93
biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92
ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3Jp
ZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7CisgICAg
ICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5h
Z2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVz
LCB0aGlzKTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUxh
eW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRDb250ZXh0
VHlwZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcyk7
CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlR3JpZEJhZGdlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0
ZUxheW91dEJhZGdlKCk7CiAgICAgfQogCiAgICAgb25kZXRhY2goKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5v
ZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkgewotICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3Zlcmxh
eVNob3duLCB0aGlzLl91cGRhdGVHcmlkQmFkZ2VTdGF0dXMsIHRoaXMpOwotICAgICAgICAgICAg
V0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5F
dmVudC5HcmlkT3ZlcmxheUhpZGRlbiwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0aGlz
KTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlTGF5b3V0
QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheUhpZGRlbiwg
dGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2
ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29udGV4dFR5
cGVDaGFuZ2VkLCB0aGlzKTsKICAgICB9CkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBXSS5ET01UcmVl
RWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAg
ICAgICAgICAgIHRoaXMudGl0bGUuYXBwZW5kQ2hpbGQodGhpcy5fbm9kZVRpdGxlSW5mbygpLnRp
dGxlRE9NKTsKICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFJlc3VsdCA9IHVuZGVmaW5lZDsK
ICAgICAgICAgfQotICAgICAgICB0aGlzLl91cGRhdGVHcmlkQmFkZ2UoKTsKKyAgICAgICAgdGhp
cy5fdXBkYXRlTGF5b3V0QmFkZ2UoKTsKIAogICAgICAgICAvLyBTZXR0aW5nIHRoaXMudGl0bGUg
d2lsbCBpbXBsaWNpdGx5IHJlbW92ZSBhbGwgY2hpbGRyZW4uIENsZWFyIHRoZQogICAgICAgICAv
LyBzZWxlY3Rpb24gZWxlbWVudCBzbyB0aGF0IHdlIHByb3Blcmx5IHJlY3JlYXRlIGl0IGlmIG5l
Y2Vzc2FyeS4KQEAgLTIwMTAsMzAgKzIwMTAsMzcgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFz
cyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIHRoaXMuX2Fu
aW1hdGluZ0hpZ2hsaWdodCA9IGZhbHNlOwogICAgIH0KIAotICAgIF91cGRhdGVHcmlkQmFkZ2Uo
KQorICAgIF91cGRhdGVMYXlvdXRCYWRnZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMubGlz
dEl0ZW1FbGVtZW50IHx8IHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAodGhpcy5fZ3JpZEJhZGdlRWxlbWVudCkgewotICAgICAgICAgICAg
dGhpcy5fZ3JpZEJhZGdlRWxlbWVudC5yZW1vdmUoKTsKLSAgICAgICAgICAgIHRoaXMuX2dyaWRC
YWRnZUVsZW1lbnQgPSBudWxsOworICAgICAgICBpZiAodGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50
KSB7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQucmVtb3ZlKCk7CisgICAg
ICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJ
LkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkKKyAgICAgICAgbGV0IGlzR3JpZCA9IHRo
aXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5
b3V0Q29udGV4dFR5cGUuR3JpZDsKKyAgICAgICAgbGV0IGlzRmxleCA9IHRoaXMucmVwcmVzZW50
ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5
cGUuRmxleCAmJiBXSS5zZXR0aW5ncy5lbmdpbmVlcmluZ0VuYWJsZUZsZXhib3hJbnNwZWN0b3Iu
dmFsdWU7CisgICAgICAgIGlmICghaXNHcmlkICYmICFpc0ZsZXgpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKLSAgICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudC5jbGFzc05hbWUg
PSAiYmFkZ2UtY3NzLWdyaWQiOwotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnRleHRD
b250ZW50ID0gV0kudW5sb2NhbGl6ZWRTdHJpbmcoImdyaWQiKTsKLSAgICAgICAgdGhpcy5fdXBk
YXRlR3JpZEJhZGdlU3RhdHVzKCk7Ci0gICAgICAgIHRoaXMudGl0bGUuYXBwZW5kKHRoaXMuX2dy
aWRCYWRnZUVsZW1lbnQpOworICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxl
bWVudC5jbGFzc05hbWUgPSAiYmFkZ2UiOwogCi0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ncmlkQmFkZ2VDbGlja2VkLmJpbmQo
dGhpcyksIHRydWUpOwotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZ3JpZEJhZGdlRG91YmxlQ2xpY2tlZCwgdHJ1ZSk7Cisg
ICAgICAgIGlmIChpc0dyaWQpCisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSBXSS51bmxvY2FsaXplZFN0cmluZygiZ3JpZCIpOworICAgICAgICBlbHNl
IGlmIChpc0ZsZXgpCisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQudGV4dENv
bnRlbnQgPSBXSS51bmxvY2FsaXplZFN0cmluZygiZmxleCIpOworCisgICAgICAgIHRoaXMuX3Vw
ZGF0ZUxheW91dEJhZGdlU3RhdHVzKCk7CisgICAgICAgIHRoaXMudGl0bGUuYXBwZW5kKHRoaXMu
X2xheW91dEJhZGdlRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbGF5b3V0QmFkZ2VDbGlja2VkLmJpbmQo
dGhpcyksIHRydWUpOworICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9sYXlvdXRCYWRnZURvdWJsZUNsaWNrZWQsIHRydWUp
OwogICAgIH0KIAotICAgIF9ncmlkQmFkZ2VDbGlja2VkKGV2ZW50KQorICAgIF9sYXlvdXRCYWRn
ZUNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8
IGV2ZW50LmN0cmxLZXkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDQxLDQ0ICsyMDQ4LDQ1
IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5U
cmVlRWxlbWVudAogICAgICAgICAvLyBEb24ndCBleHBhbmQgb3IgY29sbGFwc2UgYSB0cmVlIGVs
ZW1lbnQgd2hlbiBjbGlja2luZyBvbiB0aGUgZ3JpZCBiYWRnZS4KICAgICAgICAgZXZlbnQuc3Rv
cCgpOwogCi0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnRvZ2dsZUdyaWRPdmVybGF5KHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QsIHtpbml0aWF0b3I6IFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIuSW5pdGlhdG9yLkJhZGdlfSk7CisgICAgICAgIGxldCBpbml0aWF0b3IgPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxh
eW91dENvbnRleHRUeXBlLkdyaWQgPyBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29y
ZGVyLkluaXRpYXRvci5CYWRnZSA6IG51bGw7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnRv
Z2dsZU92ZXJsYXkodGhpcy5yZXByZXNlbnRlZE9iamVjdCwge2luaXRpYXRvcn0pOwogICAgIH0K
IAotICAgIF9ncmlkQmFkZ2VEb3VibGVDbGlja2VkKGV2ZW50KQorICAgIF9sYXlvdXRCYWRnZURv
dWJsZUNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgfQog
Ci0gICAgX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cygpCisgICAgX3VwZGF0ZUxheW91dEJhZGdlU3Rh
dHVzKCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fZ3JpZEJhZGdlRWxlbWVudCkKKyAgICAg
ICAgaWYgKCF0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgbGV0IGlzR3JpZFZpc2libGUgPSBXSS5vdmVybGF5TWFuYWdlci5pc0dyaWRPdmVy
bGF5VmlzaWJsZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICAgICAgdGhpcy5fZ3JpZEJh
ZGdlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmF0ZWQiLCBpc0dyaWRWaXNpYmxlKTsK
KyAgICAgICAgbGV0IGlzT3ZlcmxheVZpc2libGUgPSBXSS5vdmVybGF5TWFuYWdlci5pc092ZXJs
YXlWaXNpYmxlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICB0aGlzLl9sYXlvdXRC
YWRnZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZhdGVkIiwgaXNPdmVybGF5VmlzaWJs
ZSk7CiAKLSAgICAgICAgaWYgKGlzR3JpZFZpc2libGUpIHsKLSAgICAgICAgICAgIGxldCBjb2xv
ciA9IFdJLm92ZXJsYXlNYW5hZ2VyLmdldEdyaWRDb2xvckZvck5vZGUodGhpcy5yZXByZXNlbnRl
ZE9iamVjdCk7CisgICAgICAgIGlmIChpc092ZXJsYXlWaXNpYmxlKSB7CisgICAgICAgICAgICBs
ZXQgY29sb3IgPSBXSS5vdmVybGF5TWFuYWdlci5nZXRDb2xvckZvck5vZGUodGhpcy5yZXByZXNl
bnRlZE9iamVjdCk7CiAgICAgICAgICAgICBsZXQgaHVlID0gY29sb3IuaHNsWzBdOwotICAgICAg
ICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudC5zdHlsZS5ib3JkZXJDb2xvciA9IGNvbG9yLnRv
U3RyaW5nKCk7Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnN0eWxlLmJhY2tn
cm91bmRDb2xvciA9IGBoc2woJHtodWV9LCA5MCUsIDk1JSlgOwotICAgICAgICAgICAgdGhpcy5f
Z3JpZEJhZGdlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiY29sb3IiLCBgaHNsKCR7aHVlfSwg
NTUlLCA0MCUpYCk7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUu
Ym9yZGVyQ29sb3IgPSBjb2xvci50b1N0cmluZygpOworICAgICAgICAgICAgdGhpcy5fbGF5b3V0
QmFkZ2VFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtodWV9LCA5MCUsIDk1
JSlgOworICAgICAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LnN0eWxlLnNldFByb3Bl
cnR5KCJjb2xvciIsIGBoc2woJHtodWV9LCA1NSUsIDQwJSlgKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUi
KTsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUo
InN0eWxlIik7CiAgICAgfQogCiAgICAgX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGxldCBkb21Ob2RlID0gZXZlbnQudGFyZ2V0OwotICAgICAg
ICBpZiAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250
ZXh0VHlwZS5HcmlkKSB7Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3Vw
ZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlk
ZGVuLCB0aGlzLl91cGRhdGVHcmlkQmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICBpZiAoZG9t
Tm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5H
cmlkIHx8IGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29u
dGV4dFR5cGUuRmxleCkgeworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl91
cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5
SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUdy
aWRCYWRnZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVu
LCB0aGlzLl91cGRhdGVHcmlkQmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3Zl
cmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5H
cmlkT3ZlcmxheVNob3duLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7Cisg
ICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJs
YXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRn
ZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl91cGRhdGVHcmlkQmFk
Z2UoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2UoKTsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0
aW5nc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwppbmRleCA2MWRiNzY2NmViZWEuLjA0
ODNiOWMwOTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCkBAIC00
NDMsNiArNDQzLDcgQEAgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdz
VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmkKIAogICAgICAgICBsZXQgZWxl
bWVudHNHcm91cCA9IGVuZ2luZWVyaW5nU2V0dGluZ3NWaWV3LmFkZEdyb3VwKFdJLnVubG9jYWxp
emVkU3RyaW5nKCJFbGVtZW50czoiKSk7CiAgICAgICAgIGVsZW1lbnRzR3JvdXAuYWRkU2V0dGlu
ZyhXSS5zZXR0aW5ncy5lbmdpbmVlcmluZ0FsbG93RWRpdGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVz
LCBXSS51bmxvY2FsaXplZFN0cmluZygiQWxsb3cgZWRpdGluZyBVc2VyQWdlbnQgc2hhZG93IHRy
ZWVzIikpOworICAgICAgICBlbGVtZW50c0dyb3VwLmFkZFNldHRpbmcoV0kuc2V0dGluZ3MuZW5n
aW5lZXJpbmdFbmFibGVGbGV4Ym94SW5zcGVjdG9yLCBXSS51bmxvY2FsaXplZFN0cmluZygiRW5h
YmxlIGZsZXhib3ggaW5zcGVjdG9yIikpOwogCiAgICAgICAgIGVuZ2luZWVyaW5nU2V0dGluZ3NW
aWV3LmFkZFNlcGFyYXRvcigpOwogCg==
</data>
<flag name="review"
          id="477247"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="477248"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451344</attachid>
            <date>2022-02-09 00:45:01 -0800</date>
            <delta_ts>2022-02-09 16:50:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>24768</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDcyNTI1ZWJkMGJjMy4uYmFmNzE3OWYyMjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMi0wMi0wMyAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbRmxleGJveF0gU2hvdyBmbGV4IGJhZGdlIG5leHQgdG8gZmxleCBjb250YWluZXJzIGlu
IERPTSBUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFbGVtZW50cyB3aXRoIGBkaXNwbGF5OiBmbGV4YCBhbmQgYGRpc3BsYXk6IGlubGluZS1mbGV4
YCBzaG91bGQgaW5jbHVkZSBhICJmbGV4IiBiYWRnZS4KKyAgICAgICAgQ2xpY2tpbmcgdGhlIGJh
ZGdlIHNob3VsZCB0b2dnbGUgdGhlIG92ZXJsYXkgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1l
bnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlNYW5hZ2VyLmpzOgorICAgICAgICAo
V0kuT3ZlcmxheU1hbmFnZXIpOgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBl
LnNob3dPdmVybGF5KTogQWRkZWQuCisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5
cGUuc2hvd0ZsZXhPdmVybGF5KToKKyAgICAgICAgKFdJLk92ZXJsYXlNYW5hZ2VyLnByb3RvdHlw
ZS5oaWRlT3ZlcmxheSk6IEFkZGVkLgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90
eXBlLmhpZGVGbGV4T3ZlcmxheSk6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5
cGUuaXNPdmVybGF5VmlzaWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIu
cHJvdG90eXBlLmlzRmxleE92ZXJsYXlWaXNpYmxlKToKKyAgICAgICAgKFdJLk92ZXJsYXlNYW5h
Z2VyLnByb3RvdHlwZS50b2dnbGVPdmVybGF5KTogQWRkZWQuCisgICAgICAgIChXSS5PdmVybGF5
TWFuYWdlci5wcm90b3R5cGUuZ2V0Q29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdJLk92ZXJsYXlN
YW5hZ2VyLnByb3RvdHlwZS5nZXRHcmlkQ29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdJLk92ZXJs
YXlNYW5hZ2VyLnByb3RvdHlwZS5nZXRGbGV4Q29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdJLk92
ZXJsYXlNYW5hZ2VyLnByb3RvdHlwZS5zZXRGbGV4Q29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdJ
Lk92ZXJsYXlNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdJLk92ZXJsYXlNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlTWFpblJlc291
cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLk92ZXJsYXlNYW5hZ2VyLnByb3RvdHlwZS50b2dn
bGVHcmlkT3ZlcmxheSk6IFJlcGxhY2VkIGJ5IGB0b2dnbGVPdmVybGF5YC4KKyAgICAgICAgLSBB
ZGRlZCBmbGV4Ym94IG1ldGhvZHMgZm9yIGVhY2ggZ3JpZCBjb3VudGVycGFydC4gRm9yIGV4YW1w
bGUsIG5vdyB3ZSBoYXZlIHNob3dHcmlkT3ZlcmxheSBhbmQgc2hvd0ZsZXhPdmVybGF5CisgICAg
ICAgIC0gQWRkZWQgZ2VuZXJpYyBtZXRob2RzLCBzdWNoIGFzIHNob3dPdmVybGF5LCB0aGF0IHdv
cmtzIHdpdGggYm90aCBmbGV4Ym94IGFuZCBncmlkIGRvbU5vZGUuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC50cmVlLW91dGxp
bmUuZG9tIC5iYWRnZSk6CisgICAgICAgICgudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UuYWN0aXZh
dGVkKToKKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2Vk
LWluYWN0aXZlKSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cy13aXRoaW4gbGkuc2VsZWN0ZWQgLmJh
ZGdlKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50cmVl
LW91dGxpbmUuZG9tIC5iYWRnZSk6CisgICAgICAgICgudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2Ut
Y3NzLWdyaWQpOiBEZWxldGVkLgorICAgICAgICAoLnRyZWUtb3V0bGluZS5kb20gLmJhZGdlLWNz
cy1ncmlkLmFjdGl2YXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChib2R5Om5vdCgud2luZG93LWlu
YWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMt
d2l0aGluIGxpLnNlbGVjdGVkIC5iYWRnZS1jc3MtZ3JpZCk6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAudHJlZS1vdXRsaW5lLmRvbSAuYmFk
Z2UtY3NzLWdyaWQpOiBEZWxldGVkLgorICAgICAgICBSZXBsYWNlZCBgYmFkZ2UtY3NzLWdyaWRg
IHdpdGgganVzdCBgYmFkZ2VgIGJlY2F1c2Ugd2Ugd2FudCBhbGwgYmFkZ2VzIHRvIGJlIHN0eWxl
ZCB0aGUgc2FtZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1l
bnQuanM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlLm9uZGV0YWNoKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZS51cGRhdGVUaXRsZSk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3Vw
ZGF0ZUxheW91dEJhZGdlKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
bGF5b3V0QmFkZ2VDbGlja2VkKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQpOgorICAgICAgICAoV0ku
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVHcmlkQmFkZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9ncmlkQmFkZ2VDbGlja2VkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5fZ3JpZEJhZGdlRG91
YmxlQ2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5
cGUuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZWQgYF9n
cmlkQmFkZ2VFbGVtZW50YCB0byBgX2xheW91dEJhZGdlRWxlbWVudGAuIFdlIGNhbid0IGhhdmUg
Ym90aCAiZmxleCIgYW5kICJncmlkIiBiYWRnZSBvbiB0aGUgc2FtZSBlbGVtZW50LAorICAgICAg
ICBzbyBJIGNhbGxlZCBpdCAibGF5b3V0QmFkZ2UiLiBJIGRpZG4ndCBjYWxsIGl0IHNpbXBseSAi
YmFkZ2UiIGJlY2F1c2Ugd2UgbWF5IGhhdmUgb3RoZXIgYmFkZ2VzIGluIHRoZSBmdXR1cmUuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY3JlYXRlRW5n
aW5lZXJpbmdTZXR0aW5nc1ZpZXcpOgorCiAyMDIyLTAyLTAzICBOaWtpdGEgVmFzaWx5ZXYgIDxu
dmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtGbGV4Ym94XSBB
ZGQgc2V0dGluZyB0byBndWFyZCBGbGV4Ym94IEluc3BlY3RvciBmZWF0dXJlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9PdmVybGF5
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL092ZXJsYXlNYW5hZ2VyLmpzCmluZGV4IDAyYjc2ZjE4Yjc1Ny4uNTVjMWI3MGY5ZjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9PdmVybGF5TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9PdmVybGF5TWFuYWdlci5qcwpAQCAtMzAsOSArMzAsMTMgQEAgV0ku
T3ZlcmxheU1hbmFnZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1hcCA9
IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX2ZsZXhPdmVybGF5Rm9yTm9kZU1hcCA9IG5ldyBNYXA7
CiAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAwOworICAgICAgICB0
aGlzLl9uZXh0RGVmYXVsdEZsZXhDb2xvckluZGV4ID0gMDsKICAgICAgICAgdGhpcy5fZ3JpZENv
bG9yRm9yTm9kZU1hcCA9IG5ldyBXZWFrTWFwOworICAgICAgICB0aGlzLl9mbGV4Q29sb3JGb3JO
b2RlTWFwID0gbmV3IFdlYWtNYXA7CiAgICAgICAgIHRoaXMuX2dyaWRDb2xvclNldHRpbmdGb3JO
b2RlTWFwID0gbmV3IFdlYWtNYXA7CisgICAgICAgIHRoaXMuX2ZsZXhDb2xvclNldHRpbmdGb3JO
b2RlTWFwID0gbmV3IFdlYWtNYXA7CiAKICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlT
aG93RXh0ZW5kZWRHcmlkTGluZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNo
YW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdJ
LnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOYW1lcy5hZGRFdmVudExpc3RlbmVyKFdJLlNl
dHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZFNldHRpbmdDaGFuZ2VkLCB0aGlz
KTsKQEAgLTQ0LDYgKzQ4LDE4IEBAIFdJLk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3ZlcmxheU1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCisgICAgc2hvd092ZXJs
YXkoZG9tTm9kZSwge2NvbG9yLCBpbml0aWF0b3J9ID0ge30pCisgICAgeworICAgICAgICBzd2l0
Y2ggKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5ET01Ob2Rl
LkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICB0aGlzLnNob3dHcmlkT3Zlcmxh
eShkb21Ob2RlLCB7Y29sb3IsIGluaXRpYXRvcn0pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgorICAgICAgICAgICAg
dGhpcy5zaG93RmxleE92ZXJsYXkoZG9tTm9kZSwge2NvbG9yLCBpbml0aWF0b3J9KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCiAgICAgc2hvd0dyaWRPdmVybGF5KGRv
bU5vZGUsIHtjb2xvciwgaW5pdGlhdG9yfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoIWRvbU5vZGUuZGVzdHJveWVkLCBkb21Ob2RlKTsKQEAgLTc4LDYgKzk0LDQ3IEBAIFdJ
Lk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3ZlcmxheU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIu
RXZlbnQuR3JpZE92ZXJsYXlTaG93biwgb3ZlcmxheSk7CiAgICAgfQogCisgICAgc2hvd0ZsZXhP
dmVybGF5KGRvbU5vZGUsIHtjb2xvciwgaW5pdGlhdG9yfSA9IHt9KQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIWRvbU5vZGUuZGVzdHJveWVkLCBkb21Ob2RlKTsKKyAgICAgICAgaWYg
KGRvbU5vZGUuZGVzdHJveWVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoIWNvbG9yIHx8IGNvbG9yIGluc3RhbmNlb2YgV0kuQ29sb3IsIGNv
bG9yKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9
PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4LCBkb21Ob2RlLmxheW91dENvbnRl
eHRUeXBlKTsKKworICAgICAgICBjb2xvciB8fD0gdGhpcy5nZXRGbGV4Q29sb3JGb3JOb2RlKGRv
bU5vZGUpOworICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Cisg
ICAgICAgIGxldCBjb21tYW5kQXJndW1lbnRzID0geworICAgICAgICAgICAgbm9kZUlkOiBkb21O
b2RlLmlkLAorICAgICAgICAgICAgZmxleENvbG9yOiBjb2xvci50b1Byb3RvY29sKCksCisgICAg
ICAgIH07CisgICAgICAgIHRhcmdldC5ET01BZ2VudC5zaG93RmxleE92ZXJsYXkuaW52b2tlKGNv
bW1hbmRBcmd1bWVudHMpOworCisgICAgICAgIGxldCBvdmVybGF5ID0ge2RvbU5vZGUsIC4uLmNv
bW1hbmRBcmd1bWVudHMsIGluaXRpYXRvcn07CisKKyAgICAgICAgLy8gVGhlIG1ldGhvZCB0byBz
aG93IHRoZSBvdmVybGF5IHdpbGwgYmUgY2FsbGVkIHJlcGVhdGVkbHkgd2hpbGUgdXBkYXRpbmcg
dGhlIGZsZXhib3ggb3ZlcmxheSBjb2xvci4gQXZvaWQgYWRkaW5nIGR1cGxpY2F0ZSBldmVudCBs
aXN0ZW5lcnMKKyAgICAgICAgaWYgKCF0aGlzLl9mbGV4T3ZlcmxheUZvck5vZGVNYXAuaGFzKGRv
bU5vZGUpKQorICAgICAgICAgICAgZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUu
RXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRDb250ZXh0
VHlwZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIHRoaXMuX2ZsZXhPdmVybGF5Rm9yTm9kZU1h
cC5zZXQoZG9tTm9kZSwgb3ZlcmxheSk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuRmxleE92ZXJsYXlTaG93biwgb3Zlcmxh
eSk7CisgICAgfQorCisgICAgaGlkZU92ZXJsYXkoZG9tTm9kZSkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSkgeworICAgICAgICBjYXNlIFdJLkRPTU5v
ZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAgICAgICAgICAgIHRoaXMuaGlkZUdyaWRPdmVy
bGF5KGRvbU5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0kuRE9NTm9k
ZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgorICAgICAgICAgICAgdGhpcy5oaWRlRmxleE92ZXJs
YXkoZG9tTm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IGhpZGVHcmlkT3ZlcmxheShkb21Ob2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
ZG9tTm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsIGRvbU5vZGUpOwpAQCAtOTcsMjIgKzE1NCw2
NiBAQCBXSS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlN
YW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCBvdmVybGF5KTsKICAgICB9CiAKKyAgICBo
aWRlRmxleE92ZXJsYXkoZG9tTm9kZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRv
bU5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIWRvbU5vZGUuZGVzdHJveWVkLCBkb21Ob2RlKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0
VHlwZS5GbGV4LCBkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKTsKKyAgICAgICAgaWYgKGRvbU5v
ZGUuZGVzdHJveWVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBvdmVybGF5
ID0gdGhpcy5fZmxleE92ZXJsYXlGb3JOb2RlTWFwLnRha2UoZG9tTm9kZSk7CisgICAgICAgIGlm
ICghb3ZlcmxheSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgdGFyZ2V0ID0g
V0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgIHRhcmdldC5ET01BZ2VudC5oaWRlRmxl
eE92ZXJsYXkoZG9tTm9kZS5pZCk7CisKKyAgICAgICAgZG9tTm9kZS5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5k
bGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOworICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5PdmVybGF5TWFuYWdlci5FdmVudC5GbGV4T3ZlcmxheUhpZGRl
biwgb3ZlcmxheSk7CisgICAgfQorCiAgICAgaGFzVmlzaWJsZUdyaWRPdmVybGF5cygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2RlTWFwLnNpemUgPiAwOwog
ICAgIH0KIAorICAgIGlzT3ZlcmxheVZpc2libGUoZG9tTm9kZSkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSkgeworICAgICAgICBjYXNlIFdJLkRPTU5v
ZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmlzR3Jp
ZE92ZXJsYXlWaXNpYmxlKGRvbU5vZGUpOworICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0
Q29udGV4dFR5cGUuRmxleDoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmxleE92ZXJsYXlW
aXNpYmxlKGRvbU5vZGUpOworICAgICAgICB9CisgICAgfQorCiAgICAgaXNHcmlkT3ZlcmxheVZp
c2libGUoZG9tTm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ncmlkT3ZlcmxheUZv
ck5vZGVNYXAuaGFzKGRvbU5vZGUpOwogICAgIH0KIAotICAgIHRvZ2dsZUdyaWRPdmVybGF5KGRv
bU5vZGUsIG9wdGlvbnMpCisgICAgaXNGbGV4T3ZlcmxheVZpc2libGUoZG9tTm9kZSkKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLmlzR3JpZE92ZXJsYXlWaXNpYmxlKGRvbU5vZGUpKQotICAgICAg
ICAgICAgdGhpcy5oaWRlR3JpZE92ZXJsYXkoZG9tTm9kZSk7CisgICAgICAgIHJldHVybiB0aGlz
Ll9mbGV4T3ZlcmxheUZvck5vZGVNYXAuaGFzKGRvbU5vZGUpOworICAgIH0KKworICAgIHRvZ2ds
ZU92ZXJsYXkoZG9tTm9kZSwgb3B0aW9ucykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzT3Zl
cmxheVZpc2libGUoZG9tTm9kZSkpCisgICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KGRvbU5v
ZGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnNob3dHcmlkT3ZlcmxheShkb21O
b2RlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoZG9tTm9kZSwgb3B0
aW9ucyk7CisgICAgfQorCisgICAgZ2V0Q29sb3JGb3JOb2RlKGRvbU5vZGUpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBX
SS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICByZXR1cm4gdGhp
cy5nZXRHcmlkQ29sb3JGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICBjYXNlIFdJLkRPTU5vZGUu
TGF5b3V0Q29udGV4dFR5cGUuRmxleDoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEZsZXhD
b2xvckZvck5vZGUoZG9tTm9kZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBnZXRHcmlkQ29s
b3JGb3JOb2RlKGRvbU5vZGUpCkBAIC0xMjEsMTggKzIyMiwxMCBAQCBXSS5PdmVybGF5TWFuYWdl
ciA9IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChj
b2xvcikKICAgICAgICAgICAgIHJldHVybiBjb2xvcjsKIAotICAgICAgICBjb25zdCBkZWZhdWx0
R3JpZEhTTENvbG9ycyA9IFsKLSAgICAgICAgICAgIFszMjksIDkxLCA3MF0sCi0gICAgICAgICAg
ICBbMjA3LCA5NiwgNjldLAotICAgICAgICAgICAgWzkyLCA5MCwgNjRdLAotICAgICAgICAgICAg
WzI5MSwgNzMsIDY4XSwKLSAgICAgICAgICAgIFs0MCwgOTcsIDU3XSwKLSAgICAgICAgXTsKLQog
ICAgICAgICBsZXQgY29sb3JTZXR0aW5nID0gdGhpcy5fZ3JpZENvbG9yU2V0dGluZ0Zvck5vZGVN
YXAuZ2V0KGRvbU5vZGUpOwogICAgICAgICBpZiAoIWNvbG9yU2V0dGluZykgewotICAgICAgICAg
ICAgbGV0IGRlZmF1bHRDb2xvciA9IGRlZmF1bHRHcmlkSFNMQ29sb3JzW3RoaXMuX25leHREZWZh
dWx0R3JpZENvbG9ySW5kZXhdOwotICAgICAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29s
b3JJbmRleCA9ICh0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4ICsgMSkgJSBkZWZhdWx0
R3JpZEhTTENvbG9ycy5sZW5ndGg7CisgICAgICAgICAgICBsZXQgZGVmYXVsdENvbG9yID0gV0ku
T3ZlcmxheU1hbmFnZXIuZGVmYXVsdEhTTENvbG9yc1t0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xv
ckluZGV4XTsKKyAgICAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAo
dGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleCArIDEpICUgV0kuT3ZlcmxheU1hbmFnZXIu
ZGVmYXVsdEhTTENvbG9ycy5sZW5ndGg7CiAKICAgICAgICAgICAgIGxldCB1cmwgPSBkb21Ob2Rl
Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRVUkwgfHwgV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
LnVybDsKICAgICAgICAgICAgIGNvbG9yU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKGBncmlkLW92
ZXJsYXktY29sb3ItJHt1cmwuaGFzaH0tJHtkb21Ob2RlLnBhdGgoKS5oYXNofWAsIGRlZmF1bHRD
b2xvcik7CkBAIC0xNDUsNiArMjM4LDI4IEBAIFdJLk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3Zl
cmxheU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAg
IH0KIAorICAgIGdldEZsZXhDb2xvckZvck5vZGUoZG9tTm9kZSkKKyAgICB7CisgICAgICAgIGxl
dCBjb2xvciA9IHRoaXMuX2ZsZXhDb2xvckZvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOworICAgICAg
ICBpZiAoY29sb3IpCisgICAgICAgICAgICByZXR1cm4gY29sb3I7CisKKyAgICAgICAgbGV0IGNv
bG9yU2V0dGluZyA9IHRoaXMuX2ZsZXhDb2xvclNldHRpbmdGb3JOb2RlTWFwLmdldChkb21Ob2Rl
KTsKKyAgICAgICAgaWYgKCFjb2xvclNldHRpbmcpIHsKKyAgICAgICAgICAgIGxldCBkZWZhdWx0
Q29sb3IgPSBXSS5PdmVybGF5TWFuYWdlci5kZWZhdWx0SFNMQ29sb3JzW3RoaXMuX25leHREZWZh
dWx0RmxleENvbG9ySW5kZXhdOworICAgICAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRGbGV4Q29s
b3JJbmRleCA9ICh0aGlzLl9uZXh0RGVmYXVsdEZsZXhDb2xvckluZGV4ICsgMSkgJSBXSS5PdmVy
bGF5TWFuYWdlci5kZWZhdWx0SFNMQ29sb3JzLmxlbmd0aDsKKworICAgICAgICAgICAgbGV0IHVy
bCA9IGRvbU5vZGUub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCB8fCBXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWUudXJsOworICAgICAgICAgICAgY29sb3JTZXR0aW5nID0gbmV3IFdJLlNldHRp
bmcoYGZsZXgtb3ZlcmxheS1jb2xvci0ke3VybC5oYXNofS0ke2RvbU5vZGUucGF0aCgpLmhhc2h9
YCwgZGVmYXVsdENvbG9yKTsKKyAgICAgICAgICAgIHRoaXMuX2ZsZXhDb2xvclNldHRpbmdGb3JO
b2RlTWFwLnNldChkb21Ob2RlLCBjb2xvclNldHRpbmcpOworICAgICAgICB9CisKKyAgICAgICAg
Y29sb3IgPSBuZXcgV0kuQ29sb3IoV0kuQ29sb3IuRm9ybWF0LkhTTCwgY29sb3JTZXR0aW5nLnZh
bHVlKTsKKyAgICAgICAgdGhpcy5fZmxleENvbG9yRm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgY29s
b3IpOworCisgICAgICAgIHJldHVybiBjb2xvcjsKKyAgICB9CisKICAgICBzZXRHcmlkQ29sb3JG
b3JOb2RlKGRvbU5vZGUsIGNvbG9yKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9t
Tm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsIGRvbU5vZGUpOwpAQCAtMTU3LDE4ICsyNzIsMzUg
QEAgV0kuT3ZlcmxheU1hbmFnZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB0aGlzLl9ncmlkQ29sb3JGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBjb2xv
cik7CiAgICAgfQogCisgICAgc2V0RmxleENvbG9yRm9yTm9kZShkb21Ob2RlLCBjb2xvcikKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2Rl
LCBkb21Ob2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29sb3IgaW5zdGFuY2VvZiBXSS5D
b2xvciwgY29sb3IpOworCisgICAgICAgIGxldCBjb2xvclNldHRpbmcgPSB0aGlzLl9mbGV4Q29s
b3JTZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9tTm9kZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGNvbG9yU2V0dGluZywgIlRoZXJlIHNob3VsZCBhbHJlYWR5IGJlIGEgc2V0dGluZyBjcmVhdGVk
IGZvcm0gYSBwcmV2aW91cyBjYWxsIHRvIGdldEZsZXhDb2xvckZvck5vZGUoKSIpOworICAgICAg
ICBjb2xvclNldHRpbmcudmFsdWUgPSBjb2xvci5oc2w7CisKKyAgICAgICAgdGhpcy5fZmxleENv
bG9yRm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgY29sb3IpOworICAgIH0KKwogICAgIC8vIFByaXZh
dGUKIAogICAgIF9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBsZXQgZG9tTm9kZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0
VHlwZS5HcmlkLCBkb21Ob2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZS5sYXlv
dXRDb250ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkICYmIGRv
bU5vZGUubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUu
RmxleCwgZG9tTm9kZSk7CiAKICAgICAgICAgZG9tTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJ
LkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlv
dXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgIC8vIFdoZW4gdGhlIGNvbnRl
eHQgdHlwZSBjaGFuZ2VzLCB0aGUgb3ZlcmxheSBpcyBhdXRvbWF0aWNhbGx5IGhpZGRlbiBvbiB0
aGUgYmFja2VuZC4gSGVyZSwgd2Ugb25seSB1cGRhdGUgdGhlIG1hcCBhbmQgbm90aWZ5IGxpc3Rl
bmVycy4KLSAgICAgICAgbGV0IG92ZXJsYXkgPSB0aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVNYXAu
dGFrZShkb21Ob2RlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIG92ZXJsYXkpOworICAgICAg
ICBpZiAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250
ZXh0VHlwZS5HcmlkKSB7CisgICAgICAgICAgICBsZXQgb3ZlcmxheSA9IHRoaXMuX2dyaWRPdmVy
bGF5Rm9yTm9kZU1hcC50YWtlKGRvbU5vZGUpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4s
IG92ZXJsYXkpOworICAgICAgICB9IGVsc2UgaWYgKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUg
PT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleCkgeworICAgICAgICAgICAgbGV0
IG92ZXJsYXkgPSB0aGlzLl9mbGV4T3ZlcmxheUZvck5vZGVNYXAudGFrZShkb21Ob2RlKTsKKyAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2Vy
LkV2ZW50LkZsZXhPdmVybGF5SGlkZGVuLCBvdmVybGF5KTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIF9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQoZXZlbnQpCkBAIC0xOTEsMTAgKzMyMywyMSBA
QCBXSS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIC8vCiAgICAgICAgIC8vIGBkb21Ob2RlLmlkYCBpcyBkaWZmZXJlbnQgZm9y
IHRoZSBzYW1lIERPTSBlbGVtZW50IGFmdGVyIHBhZ2UgcmVsb2FkLgogICAgICAgICB0aGlzLl9u
ZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRG
bGV4Q29sb3JJbmRleCA9IDA7CiAgICAgfQogfTsKIAorV0kuT3ZlcmxheU1hbmFnZXIuZGVmYXVs
dEhTTENvbG9ycyA9IFsKKyAgICBbMzI5LCA5MSwgNzBdLAorICAgIFsyMDcsIDk2LCA2OV0sCisg
ICAgWzkyLCA5MCwgNjRdLAorICAgIFsyOTEsIDczLCA2OF0sCisgICAgWzQwLCA5NywgNTddLAor
XTsKKwogV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQgPSB7CiAgICAgR3JpZE92ZXJsYXlTaG93bjog
Im92ZXJsYXktbWFuYWdlci1ncmlkLW92ZXJsYXktc2hvd24iLAogICAgIEdyaWRPdmVybGF5SGlk
ZGVuOiAib3ZlcmxheS1tYW5hZ2VyLWdyaWQtb3ZlcmxheS1oaWRkZW4iLAorICAgIEZsZXhPdmVy
bGF5U2hvd246ICJvdmVybGF5LW1hbmFnZXItZmxleC1vdmVybGF5LXNob3duIiwKKyAgICBGbGV4
T3ZlcmxheUhpZGRlbjogIm92ZXJsYXktbWFuYWdlci1mbGV4LW92ZXJsYXktaGlkZGVuIiwKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlRWxlbWVudC5jc3MKaW5kZXggMTlkNjQ3NTFhMGNkLi4wZTk4OGQxYzA3OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVFbGVtZW50LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlRWxlbWVudC5jc3MKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0udHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2Ut
Y3NzLWdyaWQgeworLnRyZWUtb3V0bGluZS5kb20gLmJhZGdlIHsKICAgICAvKiBVc2luZyBzYW5z
LXNlcmlmIFNhbiBGcmFuY2lzY28gZm9udCBoZXJlIGNyZWF0ZXMgYSBiYWRnZSAxcHggdGFsbGVy
IHRoYW4gdGhlIHNlbGVjdGVkCiAgICAgYXJlYS4gVXNlIHRoZSBzYW1lIG1vbm9zcGFjZSBmb250
IGFzIHRoZSByZXN0IG9mIHRoZSBET00gdHJlZSBvdXRsaW5lLiAqLwogCkBAIC0zOCwxOSArMzgs
MTkgQEAKICAgICBib3gtc2hhZG93OiAwIDAgMXB4IGhzbGEoMCwgMCUsIDAlLCAwLjUpOwogfQog
Ci0udHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UtY3NzLWdyaWQuYWN0aXZhdGVkIHsKKy50cmVlLW91
dGxpbmUuZG9tIC5iYWRnZS5hY3RpdmF0ZWQgewogICAgIGJhY2tncm91bmQ6IHZhcigtLWdseXBo
LWNvbG9yLWFjdGl2ZSk7CiAgICAgY29sb3I6IHdoaXRlOwogfQogCi1ib2R5Om5vdCgud2luZG93
LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZS5kb206Zm9j
dXMtd2l0aGluIGxpLnNlbGVjdGVkIC5iYWRnZS1jc3MtZ3JpZCB7Citib2R5Om5vdCgud2luZG93
LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZS5kb206Zm9j
dXMtd2l0aGluIGxpLnNlbGVjdGVkIC5iYWRnZSB7CiAgICAgLyogT3ZlcnJpZGUgYGxpLnNlbGVj
dGVkICoge2NvbG9yOiBpbmhlcml0ZWR9YCBmcm9tIERPTVRyZWVPdXRsaW5lLmNzcyAqLwogICAg
IGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKIH0KIAogCiBAbWVkaWEgKHByZWZlcnMtY29sb3It
c2NoZW1lOiBkYXJrKSB7Ci0gICAgLnRyZWUtb3V0bGluZS5kb20gLmJhZGdlLWNzcy1ncmlkIHsK
KyAgICAudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UgewogICAgICAgICBiYWNrZ3JvdW5kOiBoc2xh
KDAsIDAlLCAzMCUsIDAuOCk7CiAgICAgICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAwJSwgMTAw
JSwgMC4xKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IDBkYTRhM2QyZjg2MC4u
MTI5NGM4MTQxMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAtNTEsNyArNTEsNyBAQCBX
SS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVs
ZW1lbnQKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRBdHRyaWJ1dGVzID0gbmV3IFNldDsKICAg
ICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmllZEF0dHJpYnV0ZXMgPSBuZXcgTWFwOwogICAgICAg
ICB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fZ3JpZEJh
ZGdlRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudCA9IG51
bGw7CiAKICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuRW5h
YmxlZFBzZXVkb0NsYXNzZXNDaGFuZ2VkLCB0aGlzLl91cGRhdGVQc2V1ZG9DbGFzc0luZGljYXRv
ciwgdGhpcyk7CiAKQEAgLTQ0NSwxOSArNDQ1LDE5IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xh
c3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJ
LkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkgewotICAgICAgICAgICAgV0kub3Zlcmxh
eU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3Zl
cmxheVNob3duLCB0aGlzLl91cGRhdGVHcmlkQmFkZ2VTdGF0dXMsIHRoaXMpOwotICAgICAgICAg
ICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5F
dmVudC5HcmlkT3ZlcmxheUhpZGRlbiwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0aGlz
KTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3Zl
cmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlTGF5b3V0QmFk
Z2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheUhpZGRlbiwgdGhpcy5f
dXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91
dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2Vk
LCB0aGlzKTsKIAotICAgICAgICB0aGlzLl91cGRhdGVHcmlkQmFkZ2UoKTsKKyAgICAgICAgdGhp
cy5fdXBkYXRlTGF5b3V0QmFkZ2UoKTsKICAgICB9CiAKICAgICBvbmRldGFjaCgpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlwZSA9PT0g
V0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKSB7Ci0gICAgICAgICAgICBXSS5vdmVy
bGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lkdy
aWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7Ci0gICAg
ICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlN
YW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVHcmlkQmFkZ2VTdGF0
dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl91cGRh
dGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5
SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRP
TU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRD
b250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogICAgIH0KQEAgLTEzMzQsNyArMTMzNCw3IEBAIFdJ
LkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxl
bWVudAogICAgICAgICAgICAgdGhpcy50aXRsZS5hcHBlbmRDaGlsZCh0aGlzLl9ub2RlVGl0bGVJ
bmZvKCkudGl0bGVET00pOwogICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0UmVzdWx0ID0gdW5k
ZWZpbmVkOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZSgpOworICAg
ICAgICB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZSgpOwogCiAgICAgICAgIC8vIFNldHRpbmcgdGhp
cy50aXRsZSB3aWxsIGltcGxpY2l0bHkgcmVtb3ZlIGFsbCBjaGlsZHJlbi4gQ2xlYXIgdGhlCiAg
ICAgICAgIC8vIHNlbGVjdGlvbiBlbGVtZW50IHNvIHRoYXQgd2UgcHJvcGVybHkgcmVjcmVhdGUg
aXQgaWYgbmVjZXNzYXJ5LgpAQCAtMjAxMCwzMCArMjAxMCwzNyBAQCBXSS5ET01UcmVlRWxlbWVu
dCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAg
dGhpcy5fYW5pbWF0aW5nSGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgfQogCi0gICAgX3VwZGF0ZUdy
aWRCYWRnZSgpCisgICAgX3VwZGF0ZUxheW91dEJhZGdlKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5saXN0SXRlbUVsZW1lbnQgfHwgdGhpcy5fZWxlbWVudENsb3NlVGFnKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLl9ncmlkQmFkZ2VFbGVtZW50KSB7Ci0gICAg
ICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnJlbW92ZSgpOwotICAgICAgICAgICAgdGhp
cy5fZ3JpZEJhZGdlRWxlbWVudCA9IG51bGw7CisgICAgICAgIGlmICh0aGlzLl9sYXlvdXRCYWRn
ZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5yZW1vdmUo
KTsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudCA9IG51bGw7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlw
ZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQorICAgICAgICBsZXQgaXNH
cmlkID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9N
Tm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOworICAgICAgICBsZXQgaXNGbGV4ID0gdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRD
b250ZXh0VHlwZS5GbGV4ICYmIFdJLnNldHRpbmdzLmVuZ2luZWVyaW5nRW5hYmxlRmxleGJveElu
c3BlY3Rvci52YWx1ZTsKKyAgICAgICAgaWYgKCFpc0dyaWQgJiYgIWlzRmxleCkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LmNs
YXNzTmFtZSA9ICJiYWRnZS1jc3MtZ3JpZCI7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1l
bnQudGV4dENvbnRlbnQgPSBXSS51bmxvY2FsaXplZFN0cmluZygiZ3JpZCIpOwotICAgICAgICB0
aGlzLl91cGRhdGVHcmlkQmFkZ2VTdGF0dXMoKTsKLSAgICAgICAgdGhpcy50aXRsZS5hcHBlbmQo
dGhpcy5fZ3JpZEJhZGdlRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fbGF5b3V0
QmFkZ2VFbGVtZW50LmNsYXNzTmFtZSA9ICJiYWRnZSI7CiAKLSAgICAgICAgdGhpcy5fZ3JpZEJh
ZGdlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2dyaWRCYWRnZUNsaWNr
ZWQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9ncmlkQmFkZ2VEb3VibGVDbGlja2VkLCB0
cnVlKTsKKyAgICAgICAgaWYgKGlzR3JpZCkKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdl
RWxlbWVudC50ZXh0Q29udGVudCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJncmlkIik7CisgICAg
ICAgIGVsc2UgaWYgKGlzRmxleCkKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVu
dC50ZXh0Q29udGVudCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJmbGV4Iik7CisKKyAgICAgICAg
dGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMoKTsKKyAgICAgICAgdGhpcy50aXRsZS5hcHBl
bmQodGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9sYXlvdXRCYWRn
ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9sYXlvdXRCYWRnZUNsaWNr
ZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX2xheW91dEJhZGdlRG91YmxlQ2xpY2tl
ZCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgX2dyaWRCYWRnZUNsaWNrZWQoZXZlbnQpCisgICAgX2xh
eW91dEJhZGdlQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24g
IT09IDAgfHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwNDEsNDQg
KzIwNDgsNDUgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRl
bmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIC8vIERvbid0IGV4cGFuZCBvciBjb2xsYXBzZSBh
IHRyZWUgZWxlbWVudCB3aGVuIGNsaWNraW5nIG9uIHRoZSBncmlkIGJhZGdlLgogICAgICAgICBl
dmVudC5zdG9wKCk7CiAKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIudG9nZ2xlR3JpZE92ZXJs
YXkodGhpcy5yZXByZXNlbnRlZE9iamVjdCwge2luaXRpYXRvcjogV0kuR3JpZE92ZXJsYXlEaWFn
bm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0b3IuQmFkZ2V9KTsKKyAgICAgICAgbGV0IGluaXRp
YXRvciA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRP
TU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCA/IFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIuSW5pdGlhdG9yLkJhZGdlIDogbnVsbDsKKyAgICAgICAgV0kub3ZlcmxheU1h
bmFnZXIudG9nZ2xlT3ZlcmxheSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlhdG9yfSk7
CiAgICAgfQogCi0gICAgX2dyaWRCYWRnZURvdWJsZUNsaWNrZWQoZXZlbnQpCisgICAgX2xheW91
dEJhZGdlRG91YmxlQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGV2ZW50LnN0b3AoKTsK
ICAgICB9CiAKLSAgICBfdXBkYXRlR3JpZEJhZGdlU3RhdHVzKCkKKyAgICBfdXBkYXRlTGF5b3V0
QmFkZ2VTdGF0dXMoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9ncmlkQmFkZ2VFbGVtZW50
KQorICAgICAgICBpZiAoIXRoaXMuX2xheW91dEJhZGdlRWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBsZXQgaXNHcmlkVmlzaWJsZSA9IFdJLm92ZXJsYXlNYW5hZ2VyLmlz
R3JpZE92ZXJsYXlWaXNpYmxlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwotICAgICAgICB0aGlz
Ll9ncmlkQmFkZ2VFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImFjdGl2YXRlZCIsIGlzR3JpZFZp
c2libGUpOworICAgICAgICBsZXQgaXNPdmVybGF5VmlzaWJsZSA9IFdJLm92ZXJsYXlNYW5hZ2Vy
LmlzT3ZlcmxheVZpc2libGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIHRoaXMu
X2xheW91dEJhZGdlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmF0ZWQiLCBpc092ZXJs
YXlWaXNpYmxlKTsKIAotICAgICAgICBpZiAoaXNHcmlkVmlzaWJsZSkgewotICAgICAgICAgICAg
bGV0IGNvbG9yID0gV0kub3ZlcmxheU1hbmFnZXIuZ2V0R3JpZENvbG9yRm9yTm9kZSh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgaWYgKGlzT3ZlcmxheVZpc2libGUpIHsKKyAgICAg
ICAgICAgIGxldCBjb2xvciA9IFdJLm92ZXJsYXlNYW5hZ2VyLmdldENvbG9yRm9yTm9kZSh0aGlz
LnJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgICAgIGxldCBodWUgPSBjb2xvci5oc2xbMF07
Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnN0eWxlLmJvcmRlckNvbG9yID0g
Y29sb3IudG9TdHJpbmcoKTsKLSAgICAgICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuc3R5
bGUuYmFja2dyb3VuZENvbG9yID0gYGhzbCgke2h1ZX0sIDkwJSwgOTUlKWA7Ci0gICAgICAgICAg
ICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJjb2xvciIsIGBoc2wo
JHtodWV9LCA1NSUsIDQwJSlgKTsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVu
dC5zdHlsZS5ib3JkZXJDb2xvciA9IGNvbG9yLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB0aGlz
Ll9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYGhzbCgke2h1ZX0s
IDkwJSwgOTUlKWA7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUu
c2V0UHJvcGVydHkoImNvbG9yIiwgYGhzbCgke2h1ZX0sIDU1JSwgNDAlKWApOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRl
KCJzdHlsZSIpOworICAgICAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LnJlbW92ZUF0
dHJpYnV0ZSgic3R5bGUiKTsKICAgICB9CiAKICAgICBfaGFuZGxlTGF5b3V0Q29udGV4dFR5cGVD
aGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGRvbU5vZGUgPSBldmVudC50YXJnZXQ7
CiAgICAgICAgIGlmIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxh
eW91dENvbnRleHRUeXBlLkdyaWQpIHsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwg
dGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92
ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAg
ICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2Vy
LkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0
aGlzKTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUxheW91
dEJhZGdlU3RhdHVzLCB0aGlzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFdJLm92
ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQu
R3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAg
ICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3Zlcmxh
eU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0
YXR1cywgdGhpcyk7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExp
c3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3Vw
ZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJs
YXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKICAgICAgICAg
fQogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZSgpOworICAgICAgICB0aGlzLl91cGRh
dGVMYXlvdXRCYWRnZSgpOwogICAgIH0KIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451462</attachid>
            <date>2022-02-09 16:50:44 -0800</date>
            <delta_ts>2022-02-10 14:45:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>37250</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDcyNTI1ZWJkMGJjMy4uZmVjNjU1ZmUwZDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAyMi0wMi0wOSAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbRmxleGJveF0gU2hvdyBmbGV4IGJhZGdlIG5leHQgdG8gZmxleCBjb250YWluZXJzIGlu
IERPTSBUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFbGVtZW50cyB3aXRoIGBkaXNwbGF5OiBmbGV4YCBhbmQgYGRpc3BsYXk6IGlubGluZS1mbGV4
YCBzaG91bGQgaW5jbHVkZSBhICJmbGV4IiBiYWRnZS4KKyAgICAgICAgQ2xpY2tpbmcgdGhlIGJh
ZGdlIHNob3VsZCB0b2dnbGUgdGhlIG92ZXJsYXkgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1l
bnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5Q29u
ZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzOgorICAgICAgICAoV0kuR3JpZE92
ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLnNldHVw
KToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJl
Y29yZGVyLnByb3RvdHlwZS50ZWFyZG93bik6CisgICAgICAgIChXSS5HcmlkT3ZlcmxheUNvbmZp
Z3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuX2hhbmRsZUdyaWRPdmVy
bGF5U2hvd24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJs
YXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qczoKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5RGlh
Z25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLnNldHVwKToKKyAgICAgICAgKFdJLkdyaWRP
dmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLnRlYXJkb3duKToKKyAgICAg
ICAgKFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLl9oYW5k
bGVHcmlkT3ZlcmxheVNob3duKToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvT3Zlcmxh
eU1hbmFnZXIuanM6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlcik6CisgICAgICAgIChXSS5P
dmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2hvd092ZXJsYXkpOgorICAgICAgICAoV0kuT3Zlcmxh
eU1hbmFnZXIucHJvdG90eXBlLmhpZGVPdmVybGF5KToKKyAgICAgICAgKFdJLk92ZXJsYXlNYW5h
Z2VyLnByb3RvdHlwZS5oYXNWaXNpYmxlR3JpZE92ZXJsYXlzKToKKyAgICAgICAgKFdJLk92ZXJs
YXlNYW5hZ2VyLnByb3RvdHlwZS5pc092ZXJsYXlWaXNpYmxlKToKKyAgICAgICAgKFdJLk92ZXJs
YXlNYW5hZ2VyLnByb3RvdHlwZS50b2dnbGVPdmVybGF5KToKKyAgICAgICAgKFdJLk92ZXJsYXlN
YW5hZ2VyLnByb3RvdHlwZS5nZXRDb2xvckZvck5vZGUpOgorICAgICAgICAoV0kuT3ZlcmxheU1h
bmFnZXIucHJvdG90eXBlLnNldENvbG9yRm9yTm9kZSk6CisgICAgICAgIChXSS5PdmVybGF5TWFu
YWdlci5wcm90b3R5cGUuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCk6CisgICAgICAg
IChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCk6
CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZU1haW5SZXNvdXJj
ZURpZENoYW5nZSk6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2hvd0dy
aWRPdmVybGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLk92ZXJsYXlNYW5hZ2VyLnByb3RvdHlw
ZS5oaWRlR3JpZE92ZXJsYXkpOiBEZWxldGVkLgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIu
cHJvdG90eXBlLmlzR3JpZE92ZXJsYXlWaXNpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLk92
ZXJsYXlNYW5hZ2VyLnByb3RvdHlwZS50b2dnbGVHcmlkT3ZlcmxheSk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuZ2V0R3JpZENvbG9yRm9yTm9kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2V0R3JpZENvbG9y
Rm9yTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBncmlkLXNwZWNpZmljIG1ldGhvZHMg
KHN1Y2ggYXMgc2hvd0dyaWRPdmVybGF5KSBhbmQgaW50cm9kdWNlIG1ldGhvZHMgdGhhdCB3b3Jr
IHdpdGgKKyAgICAgICAgYm90aCBHcmlkIGFuZCBGbGV4Ym94IChzdWNoIGFzIHNob3dPdmVybGF5
KS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTR3JpZFNlY3Rpb24uanM6Cisg
ICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbi5wcm90b3R5cGUuYXR0YWNoZWQpOgorICAgICAgICAo
V0kuQ1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLmRldGFjaGVkKToKKyAgICAgICAgKFdJLkNTU0dy
aWRTZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlVG9nZ2xlQWxsQ2hlY2tib3hDaGFuZ2VkKToKKyAg
ICAgICAgKFdJLkNTU0dyaWRTZWN0aW9uLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV0ku
Q1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCk6
CisgICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbi5wcm90b3R5cGUuX3VwZGF0ZVRvZ2dsZUFsbENo
ZWNrYm94KToKKyAgICAgICAgKFdJLkNTU0dyaWRTZWN0aW9uKToKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAoLnRyZWUtb3V0bGlu
ZS5kb20gLmJhZGdlKToKKyAgICAgICAgKC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS5hY3RpdmF0
ZWQpOgorICAgICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQt
aW5hY3RpdmUpIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhpbiBsaS5zZWxlY3RlZCAuYmFk
Z2UpOgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLnRyZWUt
b3V0bGluZS5kb20gLmJhZGdlKToKKyAgICAgICAgKC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1j
c3MtZ3JpZCk6IERlbGV0ZWQuCisgICAgICAgICgudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UtY3Nz
LWdyaWQuYWN0aXZhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cy13
aXRoaW4gbGkuc2VsZWN0ZWQgLmJhZGdlLWNzcy1ncmlkKTogRGVsZXRlZC4KKyAgICAgICAgKEBt
ZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC50cmVlLW91dGxpbmUuZG9tIC5iYWRn
ZS1jc3MtZ3JpZCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2VkIGBiYWRnZS1jc3MtZ3JpZGAg
d2l0aCBqdXN0IGBiYWRnZWAgYmVjYXVzZSB3ZSB3YW50IGFsbCBiYWRnZXMgdG8gYmUgc3R5bGVk
IHRoZSBzYW1lLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVu
dC5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkRPTVRyZWVF
bGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5w
cm90b3R5cGUub25kZXRhY2gpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
LnVwZGF0ZVRpdGxlKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBk
YXRlTGF5b3V0QmFkZ2UpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9s
YXlvdXRCYWRnZUNsaWNrZWQpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cyk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5w
cm90b3R5cGUuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCk6CisgICAgICAgIChXSS5E
T01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUdyaWRCYWRnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX2dyaWRCYWRnZUNsaWNrZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9ncmlkQmFkZ2VEb3Vi
bGVDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgUmVuYW1lZCBgX2dy
aWRCYWRnZUVsZW1lbnRgIHRvIGBfbGF5b3V0QmFkZ2VFbGVtZW50YC4gV2UgY2FuJ3QgaGF2ZSBi
b3RoICJmbGV4IiBhbmQgImdyaWQiIGJhZGdlIG9uIHRoZSBzYW1lIGVsZW1lbnQsCisgICAgICAg
IHNvIEkgY2FsbGVkIGl0ICJsYXlvdXRCYWRnZSIuIEkgZGlkbid0IGNhbGwgaXQgc2ltcGx5ICJi
YWRnZSIgYmVjYXVzZSB3ZSBtYXkgaGF2ZSBvdGhlciBiYWRnZXMgaW4gdGhlIGZ1dHVyZS4KKwog
MjAyMi0wMi0wMyAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBbRmxleGJveF0gQWRkIHNldHRpbmcgdG8gZ3VhcmQgRmxleGJv
eCBJbnNwZWN0b3IgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3Rp
Y0V2ZW50UmVjb3JkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRl
ci5qcwppbmRleCBiOTk0MzgwOTViNGIuLjE2YTlkODc1MWVlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25m
aWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25maWd1cmF0aW9u
RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKQEAgLTUxLDggKzUxLDggQEAgV0kuR3JpZE92ZXJs
YXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIgPSBjbGFzcyBHcmlkT3Zlcmxh
eUNvbmZpZ3VyYXQKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlz
LCBvcHRpb25zKTsKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0
aGlzLCBvcHRpb25zKTsKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMsIG9wdGlvbnMpOwotICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX2hh
bmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOwotICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVu
LCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheUhpZGRlbiwgdGhpcyk7CisgICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zlcmxh
eVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKKyAgICAgICAgV0ku
b3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5P
dmVybGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheUhpZGRlbiwgdGhpcyk7CiAgICAg
fQogCiAgICAgdGVhcmRvd24oKQpAQCAtNjQsMTQgKzY0LDE3IEBAIFdJLkdyaWRPdmVybGF5Q29u
ZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyID0gY2xhc3MgR3JpZE92ZXJsYXlDb25m
aWd1cmF0CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcywg
b3B0aW9ucyk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
dGhpcywgb3B0aW9ucyk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLCBvcHRpb25zKTsKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0
aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKLSAgICAgICAgV0kub3ZlcmxheU1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3Zl
cmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMpOworICAgICAg
ICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2Vy
LkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93biwgdGhpcyk7
CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3Zlcmxh
eU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlIaWRk
ZW4sIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3N0b3BFdmVudFNhbXBsaW5nVGltZXJJZk5lZWRl
ZCgpOwogICAgIH0KIAogICAgIF9oYW5kbGVHcmlkT3ZlcmxheVNob3duKGV2ZW50KQogICAgIHsK
KyAgICAgICAgaWYgKGV2ZW50LmRhdGEuZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAhPT0gV0ku
RE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQorICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgIHRoaXMuX292ZXJsYXlPcHRpb25zLnNob3dUcmFja1NpemVzID0gZXZlbnQuZGF0YS5z
aG93VHJhY2tTaXplczsKICAgICAgICAgdGhpcy5fb3ZlcmxheU9wdGlvbnMuc2hvd0xpbmVOdW1i
ZXJzID0gZXZlbnQuZGF0YS5zaG93TGluZU51bWJlcnM7CiAgICAgICAgIHRoaXMuX292ZXJsYXlP
cHRpb25zLnNob3dMaW5lTmFtZXMgPSBldmVudC5kYXRhLnNob3dMaW5lTmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Hcmlk
T3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNv
cmRlci5qcwppbmRleCA3M2M0NzYyYmFmNDAuLmZmZjk1OTQ1YjgwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlE
aWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVy
LmpzCkBAIC0zNiwxOCArMzYsMjEgQEAgV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNv
cmRlciA9IGNsYXNzIEdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIKIAogICAgIHNl
dHVwKCkKICAgICB7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3Jp
ZE92ZXJsYXlTaG93biwgdGhpcyk7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl9oYW5k
bGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKICAgICB9CiAKICAgICB0ZWFyZG93bigpCiAgICAg
ewotICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJs
YXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5
U2hvd24sIHRoaXMpOworICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3Jp
ZE92ZXJsYXlTaG93biwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2hh
bmRsZUdyaWRPdmVybGF5U2hvd24oZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoZXZlbnQuZGF0
YS5kb21Ob2RlLmxheW91dENvbnRleHRUeXBlICE9PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRU
eXBlLkdyaWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgbGV0IGluaXRpYXRvciA9
IGV2ZW50LmRhdGEuaW5pdGlhdG9yOwogICAgICAgICBpZiAoIWluaXRpYXRvciB8fCAhdGhpcy5f
aW5pdGlhdG9ycy5pbmNsdWRlcyhpbml0aWF0b3IpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
T3ZlcmxheU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9PdmVybGF5TWFuYWdlci5qcwppbmRleCAwMmI3NmYxOGI3NTcuLjIxNDA2Y2U1
N2QyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvT3ZlcmxheU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvT3ZlcmxheU1hbmFnZXIuanMKQEAgLTI5LDEwICsyOSwx
MSBAQCBXSS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0gICAgICAgIHRoaXMuX2dyaWRPdmVy
bGF5Rm9yTm9kZU1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFw
ID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleCA9IDA7
Ci0gICAgICAgIHRoaXMuX2dyaWRDb2xvckZvck5vZGVNYXAgPSBuZXcgV2Vha01hcDsKLSAgICAg
ICAgdGhpcy5fZ3JpZENvbG9yU2V0dGluZ0Zvck5vZGVNYXAgPSBuZXcgV2Vha01hcDsKKyAgICAg
ICAgdGhpcy5fbmV4dERlZmF1bHRGbGV4Q29sb3JJbmRleCA9IDA7CisgICAgICAgIHRoaXMuX2Nv
bG9yRm9yTm9kZU1hcCA9IG5ldyBXZWFrTWFwOworICAgICAgICB0aGlzLl9jb2xvclNldHRpbmdG
b3JOb2RlTWFwID0gbmV3IFdlYWtNYXA7CiAKICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJs
YXlTaG93RXh0ZW5kZWRHcmlkTGluZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50
LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAg
IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOYW1lcy5hZGRFdmVudExpc3RlbmVyKFdJ
LlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZFNldHRpbmdDaGFuZ2VkLCB0
aGlzKTsKQEAgLTQ0LDcgKzQ1LDcgQEAgV0kuT3ZlcmxheU1hbmFnZXIgPSBjbGFzcyBPdmVybGF5
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBzaG93R3Jp
ZE92ZXJsYXkoZG9tTm9kZSwge2NvbG9yLCBpbml0aWF0b3J9ID0ge30pCisgICAgc2hvd092ZXJs
YXkoZG9tTm9kZSwge2NvbG9yLCBpbml0aWF0b3J9ID0ge30pCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydCghZG9tTm9kZS5kZXN0cm95ZWQsIGRvbU5vZGUpOwogICAgICAgICBpZiAoZG9t
Tm9kZS5kZXN0cm95ZWQpCkBAIC01MiwxMDkgKzUzLDEzMSBAQCBXSS5PdmVybGF5TWFuYWdlciA9
IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZG9tTm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsIGRvbU5vZGUpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydCghY29sb3IgfHwgY29sb3IgaW5zdGFuY2VvZiBXSS5Db2xvciwgY29s
b3IpOwotICAgICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlID09
PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQsIGRvbU5vZGUubGF5b3V0Q29udGV4
dFR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlLmxheW91dENvbnRleHRUeXBl
ID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQgfHwgZG9tTm9kZS5sYXlvdXRD
b250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4LCBkb21Ob2Rl
LmxheW91dENvbnRleHRUeXBlKTsKIAotICAgICAgICBjb2xvciB8fD0gdGhpcy5nZXRHcmlkQ29s
b3JGb3JOb2RlKGRvbU5vZGUpOworICAgICAgICBjb2xvciB8fD0gdGhpcy5nZXRDb2xvckZvck5v
ZGUoZG9tTm9kZSk7CiAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQo
KTsKLSAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVudHMgPSB7Ci0gICAgICAgICAgICBub2RlSWQ6
IGRvbU5vZGUuaWQsCi0gICAgICAgICAgICBncmlkQ29sb3I6IGNvbG9yLnRvUHJvdG9jb2woKSwK
LSAgICAgICAgICAgIHNob3dMaW5lTmFtZXM6IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xp
bmVOYW1lcy52YWx1ZSwKLSAgICAgICAgICAgIHNob3dMaW5lTnVtYmVyczogV0kuc2V0dGluZ3Mu
Z3JpZE92ZXJsYXlTaG93TGluZU51bWJlcnMudmFsdWUsCi0gICAgICAgICAgICBzaG93RXh0ZW5k
ZWRHcmlkTGluZXM6IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0V4dGVuZGVkR3JpZExpbmVz
LnZhbHVlLAotICAgICAgICAgICAgc2hvd1RyYWNrU2l6ZXM6IFdJLnNldHRpbmdzLmdyaWRPdmVy
bGF5U2hvd1RyYWNrU2l6ZXMudmFsdWUsCi0gICAgICAgICAgICBzaG93QXJlYU5hbWVzOiBXSS5z
ZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dBcmVhTmFtZXMudmFsdWUsCi0gICAgICAgIH07Ci0gICAg
ICAgIHRhcmdldC5ET01BZ2VudC5zaG93R3JpZE92ZXJsYXkuaW52b2tlKGNvbW1hbmRBcmd1bWVu
dHMpOworICAgICAgICBsZXQgY29tbWFuZEFyZ3VtZW50cyA9IHtub2RlSWQ6IGRvbU5vZGUuaWR9
OworCisgICAgICAgIHN3aXRjaCAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSkgeworICAgICAg
ICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAgICAgICAgICAgIGNv
bW1hbmRBcmd1bWVudHMuZ3JpZENvbG9yID0gY29sb3IudG9Qcm90b2NvbCgpOworICAgICAgICAg
ICAgY29tbWFuZEFyZ3VtZW50cy5zaG93TGluZU5hbWVzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJs
YXlTaG93TGluZU5hbWVzLnZhbHVlOworICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5zaG93
TGluZU51bWJlcnMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTnVtYmVycy52YWx1
ZTsKKyAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMuc2hvd0V4dGVuZGVkR3JpZExpbmVzID0g
V0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93RXh0ZW5kZWRHcmlkTGluZXMudmFsdWU7CisgICAg
ICAgICAgICBjb21tYW5kQXJndW1lbnRzLnNob3dUcmFja1NpemVzID0gV0kuc2V0dGluZ3MuZ3Jp
ZE92ZXJsYXlTaG93VHJhY2tTaXplcy52YWx1ZTsKKyAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVu
dHMuc2hvd0FyZWFOYW1lcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0FyZWFOYW1lcy52
YWx1ZTsKKyAgICAgICAgICAgIHRhcmdldC5ET01BZ2VudC5zaG93R3JpZE92ZXJsYXkuaW52b2tl
KGNvbW1hbmRBcmd1bWVudHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0ku
RE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgorICAgICAgICAgICAgY29tbWFuZEFyZ3Vt
ZW50cy5mbGV4Q29sb3IgPSBjb2xvci50b1Byb3RvY29sKCk7CisgICAgICAgICAgICB0YXJnZXQu
RE9NQWdlbnQuc2hvd0ZsZXhPdmVybGF5Lmludm9rZShjb21tYW5kQXJndW1lbnRzKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgbGV0IG92ZXJsYXkgPSB7ZG9tTm9k
ZSwgLi4uY29tbWFuZEFyZ3VtZW50cywgaW5pdGlhdG9yfTsKIAogICAgICAgICAvLyBUaGUgbWV0
aG9kIHRvIHNob3cgdGhlIG92ZXJsYXkgd2lsbCBiZSBjYWxsZWQgcmVwZWF0ZWRseSB3aGlsZSB1
cGRhdGluZyB0aGUgZ3JpZCBvdmVybGF5IGNvbG9yLiBBdm9pZCBhZGRpbmcgZHVwbGljYXRlIGV2
ZW50IGxpc3RlbmVycwotICAgICAgICBpZiAoIXRoaXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1hcC5o
YXMoZG9tTm9kZSkpCisgICAgICAgIGlmICghdGhpcy5fb3ZlcmxheUZvck5vZGVNYXAuaGFzKGRv
bU5vZGUpKQogICAgICAgICAgICAgZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUu
RXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRDb250ZXh0
VHlwZUNoYW5nZWQsIHRoaXMpOwogCi0gICAgICAgIHRoaXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1h
cC5zZXQoZG9tTm9kZSwgb3ZlcmxheSk7CisgICAgICAgIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFw
LnNldChkb21Ob2RlLCBvdmVybGF5KTsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCBvdmVybGF5
KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFn
ZXIuRXZlbnQuT3ZlcmxheVNob3duLCBvdmVybGF5KTsKICAgICB9CiAKLSAgICBoaWRlR3JpZE92
ZXJsYXkoZG9tTm9kZSkKKyAgICBoaWRlT3ZlcmxheShkb21Ob2RlKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZG9tTm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsIGRvbU5vZGUpOwog
ICAgICAgICBjb25zb2xlLmFzc2VydCghZG9tTm9kZS5kZXN0cm95ZWQsIGRvbU5vZGUpOwotICAg
ICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01O
b2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQsIGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpOwog
ICAgICAgICBpZiAoZG9tTm9kZS5kZXN0cm95ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbGV0IG92ZXJsYXkgPSB0aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVNYXAudGFrZShkb21O
b2RlKTsKKyAgICAgICAgbGV0IG92ZXJsYXkgPSB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcC50YWtl
KGRvbU5vZGUpOwogICAgICAgICBpZiAoIW92ZXJsYXkpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwotICAgICAgICB0
YXJnZXQuRE9NQWdlbnQuaGlkZUdyaWRPdmVybGF5KGRvbU5vZGUuaWQpOworCisgICAgICAgIHN3
aXRjaCAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSkgeworICAgICAgICBjYXNlIFdJLkRPTU5v
ZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAgICAgICAgICAgIHRhcmdldC5ET01BZ2VudC5o
aWRlR3JpZE92ZXJsYXkoZG9tTm9kZS5pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkZsZXg6CisgICAgICAgICAgICB0YXJn
ZXQuRE9NQWdlbnQuaGlkZUZsZXhPdmVybGF5KGRvbU5vZGUuaWQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwg
ZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSk7CisgICAgICAgIH0KIAogICAgICAgICBkb21Ob2Rl
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRDb250ZXh0VHlwZUNo
YW5nZWQsIHRoaXMuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcyk7Ci0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50
LkdyaWRPdmVybGF5SGlkZGVuLCBvdmVybGF5KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgb3Zlcmxh
eSk7CiAgICAgfQogCiAgICAgaGFzVmlzaWJsZUdyaWRPdmVybGF5cygpCiAgICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2RlTWFwLnNpemUgPiAwOworICAgICAgICBm
b3IgKGxldCBkb21Ob2RlIG9mIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwLmtleXMoKSkgeworICAg
ICAgICAgICAgaWYgKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5
b3V0Q29udGV4dFR5cGUuR3JpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaXNHcmlkT3ZlcmxheVZp
c2libGUoZG9tTm9kZSkKKyAgICBpc092ZXJsYXlWaXNpYmxlKGRvbU5vZGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2RlTWFwLmhhcyhkb21Ob2RlKTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwLmhhcyhkb21Ob2RlKTsKICAgICB9
CiAKLSAgICB0b2dnbGVHcmlkT3ZlcmxheShkb21Ob2RlLCBvcHRpb25zKQorICAgIHRvZ2dsZU92
ZXJsYXkoZG9tTm9kZSwgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzR3JpZE92
ZXJsYXlWaXNpYmxlKGRvbU5vZGUpKQotICAgICAgICAgICAgdGhpcy5oaWRlR3JpZE92ZXJsYXko
ZG9tTm9kZSk7CisgICAgICAgIGlmICh0aGlzLmlzT3ZlcmxheVZpc2libGUoZG9tTm9kZSkpCisg
ICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KGRvbU5vZGUpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0aGlzLnNob3dHcmlkT3ZlcmxheShkb21Ob2RlLCBvcHRpb25zKTsKKyAgICAgICAg
ICAgIHRoaXMuc2hvd092ZXJsYXkoZG9tTm9kZSwgb3B0aW9ucyk7CiAgICAgfQogCi0gICAgZ2V0
R3JpZENvbG9yRm9yTm9kZShkb21Ob2RlKQorICAgIGdldENvbG9yRm9yTm9kZShkb21Ob2RlKQog
ICAgIHsKLSAgICAgICAgbGV0IGNvbG9yID0gdGhpcy5fZ3JpZENvbG9yRm9yTm9kZU1hcC5nZXQo
ZG9tTm9kZSk7CisgICAgICAgIGxldCBjb2xvciA9IHRoaXMuX2NvbG9yRm9yTm9kZU1hcC5nZXQo
ZG9tTm9kZSk7CiAgICAgICAgIGlmIChjb2xvcikKICAgICAgICAgICAgIHJldHVybiBjb2xvcjsK
IAotICAgICAgICBjb25zdCBkZWZhdWx0R3JpZEhTTENvbG9ycyA9IFsKLSAgICAgICAgICAgIFsz
MjksIDkxLCA3MF0sCi0gICAgICAgICAgICBbMjA3LCA5NiwgNjldLAotICAgICAgICAgICAgWzky
LCA5MCwgNjRdLAotICAgICAgICAgICAgWzI5MSwgNzMsIDY4XSwKLSAgICAgICAgICAgIFs0MCwg
OTcsIDU3XSwKLSAgICAgICAgXTsKLQotICAgICAgICBsZXQgY29sb3JTZXR0aW5nID0gdGhpcy5f
Z3JpZENvbG9yU2V0dGluZ0Zvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOworICAgICAgICBsZXQgY29s
b3JTZXR0aW5nID0gdGhpcy5fY29sb3JTZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9tTm9kZSk7CiAg
ICAgICAgIGlmICghY29sb3JTZXR0aW5nKSB7Ci0gICAgICAgICAgICBsZXQgZGVmYXVsdENvbG9y
ID0gZGVmYXVsdEdyaWRIU0xDb2xvcnNbdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleF07
Ci0gICAgICAgICAgICB0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4ID0gKHRoaXMuX25l
eHREZWZhdWx0R3JpZENvbG9ySW5kZXggKyAxKSAlIGRlZmF1bHRHcmlkSFNMQ29sb3JzLmxlbmd0
aDsKKyAgICAgICAgICAgIGxldCBuZXh0Q29sb3JJbmRleDsKKyAgICAgICAgICAgIHN3aXRjaCAo
ZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSkgeworICAgICAgICAgICAgY2FzZSBXSS5ET01Ob2Rl
LkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICAgICAgbmV4dENvbG9ySW5kZXgg
PSB0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4OworICAgICAgICAgICAgICAgIHRoaXMu
X25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAobmV4dENvbG9ySW5kZXggKyAxKSAlIFdJLk92
ZXJsYXlNYW5hZ2VyLmRlZmF1bHRIU0xDb2xvcnMubGVuZ3RoOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkZsZXg6
CisgICAgICAgICAgICAgICAgbmV4dENvbG9ySW5kZXggPSB0aGlzLl9uZXh0RGVmYXVsdEZsZXhD
b2xvckluZGV4OworICAgICAgICAgICAgICAgIHRoaXMuX25leHREZWZhdWx0RmxleENvbG9ySW5k
ZXggPSAobmV4dENvbG9ySW5kZXggKyAxKSAlIFdJLk92ZXJsYXlNYW5hZ2VyLmRlZmF1bHRIU0xD
b2xvcnMubGVuZ3RoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbGV0IGRlZmF1bHRDb2xvciA9IFdJLk92ZXJsYXlNYW5hZ2VyLmRlZmF1bHRIU0xD
b2xvcnNbbmV4dENvbG9ySW5kZXhdOwogCiAgICAgICAgICAgICBsZXQgdXJsID0gZG9tTm9kZS5v
d25lckRvY3VtZW50LmRvY3VtZW50VVJMIHx8IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZS51
cmw7Ci0gICAgICAgICAgICBjb2xvclNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhgZ3JpZC1vdmVy
bGF5LWNvbG9yLSR7dXJsLmhhc2h9LSR7ZG9tTm9kZS5wYXRoKCkuaGFzaH1gLCBkZWZhdWx0Q29s
b3IpOwotICAgICAgICAgICAgdGhpcy5fZ3JpZENvbG9yU2V0dGluZ0Zvck5vZGVNYXAuc2V0KGRv
bU5vZGUsIGNvbG9yU2V0dGluZyk7CisgICAgICAgICAgICBjb2xvclNldHRpbmcgPSBuZXcgV0ku
U2V0dGluZyhgb3ZlcmxheS1jb2xvci0ke3VybC5oYXNofS0ke2RvbU5vZGUucGF0aCgpLmhhc2h9
YCwgZGVmYXVsdENvbG9yKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbG9yU2V0dGluZ0Zvck5vZGVN
YXAuc2V0KGRvbU5vZGUsIGNvbG9yU2V0dGluZyk7CiAgICAgICAgIH0KIAogICAgICAgICBjb2xv
ciA9IG5ldyBXSS5Db2xvcihXSS5Db2xvci5Gb3JtYXQuSFNMLCBjb2xvclNldHRpbmcudmFsdWUp
OwotICAgICAgICB0aGlzLl9ncmlkQ29sb3JGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBjb2xvcik7
CisgICAgICAgIHRoaXMuX2NvbG9yRm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgY29sb3IpOwogCiAg
ICAgICAgIHJldHVybiBjb2xvcjsKICAgICB9CiAKLSAgICBzZXRHcmlkQ29sb3JGb3JOb2RlKGRv
bU5vZGUsIGNvbG9yKQorICAgIHNldENvbG9yRm9yTm9kZShkb21Ob2RlLCBjb2xvcikKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCBk
b21Ob2RlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29sb3IgaW5zdGFuY2VvZiBXSS5Db2xv
ciwgY29sb3IpOwogCi0gICAgICAgIGxldCBjb2xvclNldHRpbmcgPSB0aGlzLl9ncmlkQ29sb3JT
ZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9tTm9kZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNv
bG9yU2V0dGluZywgIlRoZXJlIHNob3VsZCBhbHJlYWR5IGJlIGEgc2V0dGluZyBjcmVhdGVkIGZv
cm0gYSBwcmV2aW91cyBjYWxsIHRvIGdldEdyaWRDb2xvckZvck5vZGUoKSIpOworICAgICAgICBs
ZXQgY29sb3JTZXR0aW5nID0gdGhpcy5fY29sb3JTZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9tTm9k
ZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbG9yU2V0dGluZywgIlRoZXJlIHNob3VsZCBh
bHJlYWR5IGJlIGEgc2V0dGluZyBjcmVhdGVkIGZvcm0gYSBwcmV2aW91cyBjYWxsIHRvIGdldENv
bG9yRm9yTm9kZSgpIik7CiAgICAgICAgIGNvbG9yU2V0dGluZy52YWx1ZSA9IGNvbG9yLmhzbDsK
IAotICAgICAgICB0aGlzLl9ncmlkQ29sb3JGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBjb2xvcik7
CisgICAgICAgIHRoaXMuX2NvbG9yRm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgY29sb3IpOwogICAg
IH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTE2MiwyMCArMTg1LDIxIEBAIFdJLk92ZXJsYXlNYW5h
Z2VyID0gY2xhc3MgT3ZlcmxheU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBfaGFuZGxl
TGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGRvbU5v
ZGUgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUubGF5b3V0
Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCwgZG9tTm9k
ZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgIT09
IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCAmJiBkb21Ob2RlLmxheW91dENvbnRl
eHRUeXBlICE9PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkZsZXgsIGRvbU5vZGUpOwog
CiAgICAgICAgIGRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50Lkxh
eW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFu
Z2VkLCB0aGlzKTsKIAotICAgICAgICAvLyBXaGVuIHRoZSBjb250ZXh0IHR5cGUgY2hhbmdlcywg
dGhlIG92ZXJsYXkgaXMgYXV0b21hdGljYWxseSBoaWRkZW4gb24gdGhlIGJhY2tlbmQuIEhlcmUs
IHdlIG9ubHkgdXBkYXRlIHRoZSBtYXAgYW5kIG5vdGlmeSBsaXN0ZW5lcnMuCi0gICAgICAgIGxl
dCBvdmVybGF5ID0gdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2RlTWFwLnRha2UoZG9tTm9kZSk7Ci0g
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2
ZW50LkdyaWRPdmVybGF5SGlkZGVuLCBvdmVybGF5KTsKKyAgICAgICAgLy8gV2hlbiB0aGUgY29u
dGV4dCB0eXBlIGNoYW5nZXMsIHRoZSBvdmVybGF5IGlzIGF1dG9tYXRpY2FsbHkgaGlkZGVuIG9u
IHRoZSBiYWNrZW5kIChldmVuIGlmIGl0IGNoYW5nZXMgZnJvbSBHcmlkIHRvIEZsZXgsIG9yIHZp
Y2UtdmVyc2EpLgorICAgICAgICAvLyBIZXJlLCB3ZSBvbmx5IHVwZGF0ZSB0aGUgbWFwIGFuZCBu
b3RpZnkgbGlzdGVuZXJzLgorICAgICAgICBsZXQgb3ZlcmxheSA9IHRoaXMuX292ZXJsYXlGb3JO
b2RlTWFwLnRha2UoZG9tTm9kZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRkZW4sIG92ZXJsYXkpOwogICAg
IH0KIAogICAgIF9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQoZXZlbnQpCiAgICAgewotICAgICAg
ICBmb3IgKGxldCBbZG9tTm9kZSwgb3ZlcmxheV0gb2YgdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2Rl
TWFwKSB7Ci0gICAgICAgICAgICAvLyBSZWZyZXNoIGFsbCBzaG93biBvdmVybGF5cy4gTGF0ZXN0
IHNldHRpbmdzIHZhbHVlcyB3aWxsIGJlIHVzZWQuCi0gICAgICAgICAgICB0aGlzLnNob3dHcmlk
T3ZlcmxheShkb21Ob2RlLCB7Y29sb3I6IG92ZXJsYXkuY29sb3IsIGluaXRpYXRvcjogb3Zlcmxh
eS5pbml0aWF0b3J9KTsKKyAgICAgICAgZm9yIChsZXQgW2RvbU5vZGUsIG92ZXJsYXldIG9mIHRo
aXMuX292ZXJsYXlGb3JOb2RlTWFwKSB7CisgICAgICAgICAgICBpZiAoZG9tTm9kZS5sYXlvdXRD
b250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQorICAgICAg
ICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoZG9tTm9kZSwge2NvbG9yOiBvdmVybGF5LmNvbG9y
LCBpbml0aWF0b3I6IG92ZXJsYXkuaW5pdGlhdG9yfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTE5MSwxMCArMjE1LDE5IEBAIFdJLk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3ZlcmxheU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8KICAgICAgICAgLy8gYGRvbU5vZGUuaWRg
IGlzIGRpZmZlcmVudCBmb3IgdGhlIHNhbWUgRE9NIGVsZW1lbnQgYWZ0ZXIgcGFnZSByZWxvYWQu
CiAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAwOworICAgICAgICB0
aGlzLl9uZXh0RGVmYXVsdEZsZXhDb2xvckluZGV4ID0gMDsKICAgICB9CiB9OwogCitXSS5PdmVy
bGF5TWFuYWdlci5kZWZhdWx0SFNMQ29sb3JzID0gWworICAgIFszMjksIDkxLCA3MF0sCisgICAg
WzIwNywgOTYsIDY5XSwKKyAgICBbOTIsIDkwLCA2NF0sCisgICAgWzI5MSwgNzMsIDY4XSwKKyAg
ICBbNDAsIDk3LCA1N10sCitdOworCiBXSS5PdmVybGF5TWFuYWdlci5FdmVudCA9IHsKLSAgICBH
cmlkT3ZlcmxheVNob3duOiAib3ZlcmxheS1tYW5hZ2VyLWdyaWQtb3ZlcmxheS1zaG93biIsCi0g
ICAgR3JpZE92ZXJsYXlIaWRkZW46ICJvdmVybGF5LW1hbmFnZXItZ3JpZC1vdmVybGF5LWhpZGRl
biIsCisgICAgT3ZlcmxheVNob3duOiAib3ZlcmxheS1tYW5hZ2VyLW92ZXJsYXktc2hvd24iLAor
ICAgIE92ZXJsYXlIaWRkZW46ICJvdmVybGF5LW1hbmFnZXItb3ZlcmxheS1oaWRkZW4iLAogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U0dyaWRTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTR3JpZFNlY3Rpb24uanMKaW5kZXggMTY0MzgwMWQ1NDgwLi4wYWJhNGYxYzBhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU0dy
aWRTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU0dyaWRTZWN0aW9uLmpzCkBAIC01MywxNCArNTMsMTQgQEAgV0kuQ1NTR3JpZFNlY3Rp
b24gPSBjbGFzcyBDU1NHcmlkU2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKICAgICB7CiAgICAgICAg
IHN1cGVyLmF0dGFjaGVkKCk7CiAKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl9o
YW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLm92ZXJsYXlN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJs
YXlIaWRkZW4sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdl
ci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U3RhdGVDaGFuZ2Vk
LCB0aGlzKTsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5P
dmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3Zlcmxh
eVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQogCiAgICAgZGV0YWNoZWQoKQogICAgIHsKLSAg
ICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFu
YWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRl
Q2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX2hh
bmRsZUdyaWRPdmVybGF5U3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kub3ZlcmxheU1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5
U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAg
ICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdl
ci5FdmVudC5PdmVybGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdl
ZCwgdGhpcyk7CiAKICAgICAgICAgc3VwZXIuZGV0YWNoZWQoKTsKICAgICB9CkBAIC05OSw5ICs5
OSw5IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3MgQ1NTR3JpZFNlY3Rpb24gZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgIHRoaXMuX3N1cHByZXNzVXBkYXRlVG9nZ2xlQWxsQ2hlY2tib3ggPSB0
cnVlOwogICAgICAgICBmb3IgKGxldCBkb21Ob2RlIG9mIHRoaXMuX2dyaWROb2RlU2V0KSB7CiAg
ICAgICAgICAgICBpZiAoaXNDaGVja2VkKQotICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5h
Z2VyLnNob3dHcmlkT3ZlcmxheShkb21Ob2RlLCB7aW5pdGlhdG9yOiBXSS5HcmlkT3ZlcmxheURp
YWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvci5QYW5lbH0pOworICAgICAgICAgICAgICAg
IFdJLm92ZXJsYXlNYW5hZ2VyLnNob3dPdmVybGF5KGRvbU5vZGUsIHtpbml0aWF0b3I6IFdJLkdy
aWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuSW5pdGlhdG9yLlBhbmVsfSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuaGlkZUdyaWRP
dmVybGF5KGRvbU5vZGUpOworICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmhpZGVP
dmVybGF5KGRvbU5vZGUpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX3N1cHByZXNzVXBkYXRl
VG9nZ2xlQWxsQ2hlY2tib3ggPSBmYWxzZTsKICAgICB9CkBAIC0xMjAsNyArMTIwLDcgQEAgV0ku
Q1NTR3JpZFNlY3Rpb24gPSBjbGFzcyBDU1NHcmlkU2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKICAg
ICAgICAgICAgIGxldCBsYWJlbEVsZW1lbnQgPSBpdGVtQ29udGFpbmVyRWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKICAgICAgICAgICAgIGxldCBj
aGVja2JveEVsZW1lbnQgPSBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaW5wdXQiKSk7CiAgICAgICAgICAgICBjaGVja2JveEVsZW1lbnQudHlwZSA9ICJj
aGVja2JveCI7Ci0gICAgICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IFdJLm92ZXJs
YXlNYW5hZ2VyLmlzR3JpZE92ZXJsYXlWaXNpYmxlKGRvbU5vZGUpOworICAgICAgICAgICAgY2hl
Y2tib3hFbGVtZW50LmNoZWNrZWQgPSBXSS5vdmVybGF5TWFuYWdlci5pc092ZXJsYXlWaXNpYmxl
KGRvbU5vZGUpOwogCiAgICAgICAgICAgICBjb25zdCBub2RlRGlzcGxheU5hbWUgPSBsYWJlbEVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKICAgICAg
ICAgICAgIG5vZGVEaXNwbGF5TmFtZS5jbGFzc0xpc3QuYWRkKCJub2RlLWRpc3BsYXktbmFtZSIp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBjbGFzcyBDU1NHcmlk
U2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICAgICAgY2hlY2tib3hFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgIGlm
IChjaGVja2JveEVsZW1lbnQuY2hlY2tlZCkKLSAgICAgICAgICAgICAgICAgICAgV0kub3Zlcmxh
eU1hbmFnZXIuc2hvd0dyaWRPdmVybGF5KGRvbU5vZGUsIHtjb2xvcjogc3dhdGNoLnZhbHVlLCBp
bml0aWF0b3I6IFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuSW5pdGlhdG9y
LlBhbmVsfSk7CisgICAgICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNob3dPdmVy
bGF5KGRvbU5vZGUsIHtjb2xvcjogc3dhdGNoLnZhbHVlLCBpbml0aWF0b3I6IFdJLkdyaWRPdmVy
bGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuSW5pdGlhdG9yLlBhbmVsfSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5oaWRlR3Jp
ZE92ZXJsYXkoZG9tTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2Vy
LmhpZGVPdmVybGF5KGRvbU5vZGUpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGxl
dCBncmlkQ29sb3IgPSBXSS5vdmVybGF5TWFuYWdlci5nZXRHcmlkQ29sb3JGb3JOb2RlKGRvbU5v
ZGUpOworICAgICAgICAgICAgbGV0IGdyaWRDb2xvciA9IFdJLm92ZXJsYXlNYW5hZ2VyLmdldENv
bG9yRm9yTm9kZShkb21Ob2RlKTsKICAgICAgICAgICAgIGxldCBzd2F0Y2ggPSBuZXcgV0kuSW5s
aW5lU3dhdGNoKFdJLklubGluZVN3YXRjaC5UeXBlLkNvbG9yLCBncmlkQ29sb3IpOwogICAgICAg
ICAgICAgc3dhdGNoLnNoaWZ0Q2xpY2tDb2xvckVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IGl0ZW1Db250YWluZXJFbGVtZW50LmFwcGVuZChzd2F0Y2guZWxlbWVudCk7CkBAIC0xNDQsNyAr
MTQ0LDcgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBjbGFzcyBDU1NHcmlkU2VjdGlvbiBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFdoaWxlIGNoYW5naW5nIHRoZSBvdmVybGF5IGNvbG9yLCBX
SS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duIGlzIGRpc3BhdGNoZWQgd2l0
aCBoaWdoIGZyZXF1ZW5jeS4KICAgICAgICAgICAgICAgICAgICAgLy8gQW4gaW5pdGlhdG9yIGlz
IG5vdCBwcm92aWRlZCBzbyBhcyBub3QgdG8gc2tldyB1c2FnZSBjb3VudCBvZiBvdmVybGF5IG9w
dGlvbnMgd2hlbiBsb2dnaW5nIGRpYWdub3N0aWNzIGluIFdJLkdyaWRPdmVybGF5RGlhZ25vc3Rp
Y0V2ZW50UmVjb3JkZXIuCi0gICAgICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNo
b3dHcmlkT3ZlcmxheShkb21Ob2RlLCB7Y29sb3I6IGV2ZW50LmRhdGEudmFsdWV9KTsKKyAgICAg
ICAgICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuc2hvd092ZXJsYXkoZG9tTm9kZSwge2Nv
bG9yOiBldmVudC5kYXRhLnZhbHVlfSk7CiAgICAgICAgICAgICB9LCBzd2F0Y2gpOwogCiAgICAg
ICAgICAgICBzd2F0Y2guYWRkRXZlbnRMaXN0ZW5lcihXSS5JbmxpbmVTd2F0Y2guRXZlbnQuRGVh
Y3RpdmF0ZWQsIChldmVudCkgPT4gewpAQCAtMTUyLDcgKzE1Miw3IEBAIFdJLkNTU0dyaWRTZWN0
aW9uID0gY2xhc3MgQ1NTR3JpZFNlY3Rpb24gZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgIGdyaWRDb2xvciA9IGV2ZW50LnRhcmdl
dC52YWx1ZTsKLSAgICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zZXRHcmlkQ29sb3JG
b3JOb2RlKGRvbU5vZGUsIGdyaWRDb2xvcik7CisgICAgICAgICAgICAgICAgV0kub3ZlcmxheU1h
bmFnZXIuc2V0Q29sb3JGb3JOb2RlKGRvbU5vZGUsIGdyaWRDb2xvcik7CiAgICAgICAgICAgICB9
LCBzd2F0Y2gpOwogCiAgICAgICAgICAgICBsZXQgYnV0dG9uRWxlbWVudCA9IGl0ZW1Db250YWlu
ZXJFbGVtZW50LmFwcGVuZENoaWxkKFdJLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpKTsKQEAgLTE2
NywxMSArMTY3LDE0IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3MgQ1NTR3JpZFNlY3Rpb24g
ZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBfaGFuZGxlR3JpZE92ZXJsYXlTdGF0ZUNoYW5nZWQoZXZl
bnQpCiAgICAgeworICAgICAgICBpZiAoZXZlbnQuZGF0YS5kb21Ob2RlLmxheW91dENvbnRleHRU
eXBlICE9PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpCisgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgbGV0IGNoZWNrYm94RWxlbWVudCA9IHRoaXMuX2NoZWNrYm94RWxl
bWVudEJ5Tm9kZU1hcC5nZXQoZXZlbnQuZGF0YS5kb21Ob2RlKTsKICAgICAgICAgaWYgKCFjaGVj
a2JveEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY2hlY2tib3hFbGVt
ZW50LmNoZWNrZWQgPSBldmVudC50eXBlID09PSBXSS5PdmVybGF5TWFuYWdlci5FdmVudC5Hcmlk
T3ZlcmxheVNob3duOworICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGV2ZW50LnR5
cGUgPT09IFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93bjsKICAgICAgICAgdGhp
cy5fdXBkYXRlVG9nZ2xlQWxsQ2hlY2tib3goKTsKICAgICB9CiAKQEAgLTE4Myw3ICsxODYsNyBA
QCBXSS5DU1NHcmlkU2VjdGlvbiA9IGNsYXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmll
dwogICAgICAgICBsZXQgaGFzVmlzaWJsZSA9IGZhbHNlOwogICAgICAgICBsZXQgaGFzSGlkZGVu
ID0gZmFsc2U7CiAgICAgICAgIGZvciAobGV0IGRvbU5vZGUgb2YgdGhpcy5fZ3JpZE5vZGVTZXQp
IHsKLSAgICAgICAgICAgIGxldCBpc1Zpc2libGUgPSBXSS5vdmVybGF5TWFuYWdlci5pc0dyaWRP
dmVybGF5VmlzaWJsZShkb21Ob2RlKTsKKyAgICAgICAgICAgIGxldCBpc1Zpc2libGUgPSBXSS5v
dmVybGF5TWFuYWdlci5pc092ZXJsYXlWaXNpYmxlKGRvbU5vZGUpOwogICAgICAgICAgICAgaWYg
KGlzVmlzaWJsZSkKICAgICAgICAgICAgICAgICBoYXNWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAg
ICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzcwppbmRleCAxOWQ2NDc1MWEwY2QuLjBlOTg4
ZDFjMDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzcwpAQCAtMjMsNyArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS50cmVlLW91dGxpbmUuZG9t
IC5iYWRnZS1jc3MtZ3JpZCB7CisudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UgewogICAgIC8qIFVz
aW5nIHNhbnMtc2VyaWYgU2FuIEZyYW5jaXNjbyBmb250IGhlcmUgY3JlYXRlcyBhIGJhZGdlIDFw
eCB0YWxsZXIgdGhhbiB0aGUgc2VsZWN0ZWQKICAgICBhcmVhLiBVc2UgdGhlIHNhbWUgbW9ub3Nw
YWNlIGZvbnQgYXMgdGhlIHJlc3Qgb2YgdGhlIERPTSB0cmVlIG91dGxpbmUuICovCiAKQEAgLTM4
LDE5ICszOCwxOSBAQAogICAgIGJveC1zaGFkb3c6IDAgMCAxcHggaHNsYSgwLCAwJSwgMCUsIDAu
NSk7CiB9CiAKLS50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1jc3MtZ3JpZC5hY3RpdmF0ZWQgewor
LnRyZWUtb3V0bGluZS5kb20gLmJhZGdlLmFjdGl2YXRlZCB7CiAgICAgYmFja2dyb3VuZDogdmFy
KC0tZ2x5cGgtY29sb3ItYWN0aXZlKTsKICAgICBjb2xvcjogd2hpdGU7CiB9CiAKLWJvZHk6bm90
KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5l
LmRvbTpmb2N1cy13aXRoaW4gbGkuc2VsZWN0ZWQgLmJhZGdlLWNzcy1ncmlkIHsKK2JvZHk6bm90
KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5l
LmRvbTpmb2N1cy13aXRoaW4gbGkuc2VsZWN0ZWQgLmJhZGdlIHsKICAgICAvKiBPdmVycmlkZSBg
bGkuc2VsZWN0ZWQgKiB7Y29sb3I6IGluaGVyaXRlZH1gIGZyb20gRE9NVHJlZU91dGxpbmUuY3Nz
ICovCiAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogfQogCiAKIEBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UtY3Nz
LWdyaWQgeworICAgIC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZSB7CiAgICAgICAgIGJhY2tncm91
bmQ6IGhzbGEoMCwgMCUsIDMwJSwgMC44KTsKICAgICAgICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAs
IDAlLCAxMDAlLCAwLjEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggMGRhNGEz
ZDJmODYwLi43ZGMxMWJmOGJjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC01MSw3ICs1
MSw3IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5UcmVlRWxlbWVudAogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEF0dHJpYnV0ZXMgPSBuZXcg
U2V0OwogICAgICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkQXR0cmlidXRlcyA9IG5ldyBNYXA7
CiAgICAgICAgIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlz
Ll9ncmlkQmFkZ2VFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVt
ZW50ID0gbnVsbDsKIAogICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5F
dmVudC5FbmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQsIHRoaXMuX3VwZGF0ZVBzZXVkb0NsYXNz
SW5kaWNhdG9yLCB0aGlzKTsKIApAQCAtNDQ0LDIwICs0NDQsMjAgQEAgV0kuRE9NVHJlZUVsZW1l
bnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAg
ICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCB0
aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmxh
eW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpIHsK
LSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3Zlcmxh
eU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3Rh
dHVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0
ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LmxheW91dENvbnRleHRUeXBlKSB7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhp
cy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3Zlcmxh
eU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5
SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5v
ZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRDb250
ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZSgp
OworICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZSgpOwogICAgIH0KIAogICAgIG9uZGV0
YWNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENv
bnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpIHsKLSAgICAg
ICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1h
bmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVz
LCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0
ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwg
dGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3Zl
cmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5P
dmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAg
ICAgIH0KICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVM
YXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogICAgIH0KQEAgLTEzMzQsNyArMTMzNCw3
IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5U
cmVlRWxlbWVudAogICAgICAgICAgICAgdGhpcy50aXRsZS5hcHBlbmRDaGlsZCh0aGlzLl9ub2Rl
VGl0bGVJbmZvKCkudGl0bGVET00pOwogICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0UmVzdWx0
ID0gdW5kZWZpbmVkOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZSgp
OworICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZSgpOwogCiAgICAgICAgIC8vIFNldHRp
bmcgdGhpcy50aXRsZSB3aWxsIGltcGxpY2l0bHkgcmVtb3ZlIGFsbCBjaGlsZHJlbi4gQ2xlYXIg
dGhlCiAgICAgICAgIC8vIHNlbGVjdGlvbiBlbGVtZW50IHNvIHRoYXQgd2UgcHJvcGVybHkgcmVj
cmVhdGUgaXQgaWYgbmVjZXNzYXJ5LgpAQCAtMjAxMCwzMCArMjAxMCw0NCBAQCBXSS5ET01UcmVl
RWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAg
ICAgICAgdGhpcy5fYW5pbWF0aW5nSGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgfQogCi0gICAgX3Vw
ZGF0ZUdyaWRCYWRnZSgpCisgICAgX3VwZGF0ZUxheW91dEJhZGdlKCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5saXN0SXRlbUVsZW1lbnQgfHwgdGhpcy5fZWxlbWVudENsb3NlVGFnKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLl9ncmlkQmFkZ2VFbGVtZW50KSB7
Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnJlbW92ZSgpOwotICAgICAgICAg
ICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudCA9IG51bGw7CisgICAgICAgIGlmICh0aGlzLl9sYXlv
dXRCYWRnZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5y
ZW1vdmUoKTsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudCA9IG51bGw7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250
ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQorICAgICAgICBp
ZiAoIXRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29u
dGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleCAmJiAhV0kuc2V0
dGluZ3MuZW5naW5lZXJpbmdFbmFibGVGbGV4Ym94SW5zcGVjdG9yLnZhbHVlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuY2xh
c3NOYW1lID0gImJhZGdlLWNzcy1ncmlkIjsKLSAgICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVu
dC50ZXh0Q29udGVudCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJncmlkIik7Ci0gICAgICAgIHRo
aXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cygpOwotICAgICAgICB0aGlzLnRpdGxlLmFwcGVuZCh0
aGlzLl9ncmlkQmFkZ2VFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlzLl9sYXlvdXRC
YWRnZUVsZW1lbnQuY2xhc3NOYW1lID0gImJhZGdlIjsKKworICAgICAgICBzd2l0Y2ggKHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5E
T01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRC
YWRnZUVsZW1lbnQudGV4dENvbnRlbnQgPSBXSS51bmxvY2FsaXplZFN0cmluZygiZ3JpZCIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0
VHlwZS5GbGV4OgorICAgICAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LnRleHRDb250
ZW50ID0gV0kudW5sb2NhbGl6ZWRTdHJpbmcoImZsZXgiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUpOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMoKTsKKyAgICAgICAgdGhpcy50aXRsZS5h
cHBlbmQodGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9ncmlkQmFk
Z2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ3JpZEJhZGdlQ2xpY2tl
ZC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX2dyaWRCYWRnZURvdWJsZUNsaWNrZWQsIHRy
dWUpOworICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9sYXlvdXRCYWRnZUNsaWNrZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAg
ICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIs
IHRoaXMuX2xheW91dEJhZGdlRG91YmxlQ2xpY2tlZCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgX2dy
aWRCYWRnZUNsaWNrZWQoZXZlbnQpCisgICAgX2xheW91dEJhZGdlQ2xpY2tlZChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIwNDEsNDQgKzIwNTUsNDUgQEAgV0kuRE9NVHJlZUVsZW1l
bnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAg
IC8vIERvbid0IGV4cGFuZCBvciBjb2xsYXBzZSBhIHRyZWUgZWxlbWVudCB3aGVuIGNsaWNraW5n
IG9uIHRoZSBncmlkIGJhZGdlLgogICAgICAgICBldmVudC5zdG9wKCk7CiAKLSAgICAgICAgV0ku
b3ZlcmxheU1hbmFnZXIudG9nZ2xlR3JpZE92ZXJsYXkodGhpcy5yZXByZXNlbnRlZE9iamVjdCwg
e2luaXRpYXRvcjogV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0
b3IuQmFkZ2V9KTsKKyAgICAgICAgbGV0IGluaXRpYXRvciA9IHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3Jp
ZCA/IFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuSW5pdGlhdG9yLkJhZGdl
IDogbnVsbDsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIudG9nZ2xlT3ZlcmxheSh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LCB7aW5pdGlhdG9yfSk7CiAgICAgfQogCi0gICAgX2dyaWRCYWRnZURv
dWJsZUNsaWNrZWQoZXZlbnQpCisgICAgX2xheW91dEJhZGdlRG91YmxlQ2xpY2tlZChldmVudCkK
ICAgICB7CiAgICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICB9CiAKLSAgICBfdXBkYXRlR3JpZEJh
ZGdlU3RhdHVzKCkKKyAgICBfdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMoKQogICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9ncmlkQmFkZ2VFbGVtZW50KQorICAgICAgICBpZiAoIXRoaXMuX2xheW91
dEJhZGdlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgaXNHcmlk
VmlzaWJsZSA9IFdJLm92ZXJsYXlNYW5hZ2VyLmlzR3JpZE92ZXJsYXlWaXNpYmxlKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QpOwotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoImFjdGl2YXRlZCIsIGlzR3JpZFZpc2libGUpOworICAgICAgICBsZXQgaXNPdmVy
bGF5VmlzaWJsZSA9IFdJLm92ZXJsYXlNYW5hZ2VyLmlzT3ZlcmxheVZpc2libGUodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdCk7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5jbGFzc0xp
c3QudG9nZ2xlKCJhY3RpdmF0ZWQiLCBpc092ZXJsYXlWaXNpYmxlKTsKIAotICAgICAgICBpZiAo
aXNHcmlkVmlzaWJsZSkgewotICAgICAgICAgICAgbGV0IGNvbG9yID0gV0kub3ZlcmxheU1hbmFn
ZXIuZ2V0R3JpZENvbG9yRm9yTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAg
aWYgKGlzT3ZlcmxheVZpc2libGUpIHsKKyAgICAgICAgICAgIGxldCBjb2xvciA9IFdJLm92ZXJs
YXlNYW5hZ2VyLmdldENvbG9yRm9yTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAg
ICAgICAgIGxldCBodWUgPSBjb2xvci5oc2xbMF07Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQmFk
Z2VFbGVtZW50LnN0eWxlLmJvcmRlckNvbG9yID0gY29sb3IudG9TdHJpbmcoKTsKLSAgICAgICAg
ICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYGhzbCgk
e2h1ZX0sIDkwJSwgOTUlKWA7Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnN0
eWxlLnNldFByb3BlcnR5KCJjb2xvciIsIGBoc2woJHtodWV9LCA1NSUsIDQwJSlgKTsKKyAgICAg
ICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5zdHlsZS5ib3JkZXJDb2xvciA9IGNvbG9y
LnRvU3RyaW5nKCk7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gYGhzbCgke2h1ZX0sIDkwJSwgOTUlKWA7CisgICAgICAgICAgICB0
aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoImNvbG9yIiwgYGhzbCgk
e2h1ZX0sIDU1JSwgNDAlKWApOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2dy
aWRCYWRnZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpOworICAgICAgICAgICAgdGhp
cy5fbGF5b3V0QmFkZ2VFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKTsKICAgICB9CiAK
ICAgICBfaGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgbGV0IGRvbU5vZGUgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGlmIChkb21Ob2RlLmxheW91
dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpIHsKLSAg
ICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1h
bmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVz
LCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdy
aWRCYWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgIGlmIChkb21Ob2RlLmxheW91dENvbnRleHRU
eXBlKSB7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
Lk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlTGF5b3V0QmFk
Z2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVuLCB0aGlzLl91cGRh
dGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2Vy
LkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhp
cyk7Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJ
Lk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVHcmlk
QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMu
X3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zlcmxh
eUhpZGRlbiwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwogICAgICAgICB9
CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlR3JpZEJhZGdlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0
ZUxheW91dEJhZGdlKCk7CiAgICAgfQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451603</attachid>
            <date>2022-02-10 14:45:04 -0800</date>
            <delta_ts>2022-02-10 23:56:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>37135</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDcyNTI1ZWJkMGJjMy4uMzNmNTQ4ODA2Yjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAyMi0wMi0xMCAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbRmxleGJveF0gU2hvdyBmbGV4IGJhZGdlIG5leHQgdG8gZmxleCBjb250YWluZXJzIGlu
IERPTSBUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFbGVtZW50cyB3aXRoIGBkaXNwbGF5OiBmbGV4YCBhbmQgYGRpc3BsYXk6IGlubGluZS1mbGV4
YCBzaG91bGQgaW5jbHVkZSBhICJmbGV4IiBiYWRnZS4KKyAgICAgICAgQ2xpY2tpbmcgdGhlIGJh
ZGdlIHNob3VsZCB0b2dnbGUgdGhlIG92ZXJsYXkgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1l
bnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5Q29u
ZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzOgorICAgICAgICAoV0kuR3JpZE92
ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLnNldHVw
KToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJl
Y29yZGVyLnByb3RvdHlwZS50ZWFyZG93bik6CisgICAgICAgIChXSS5HcmlkT3ZlcmxheUNvbmZp
Z3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuX2hhbmRsZUdyaWRPdmVy
bGF5U2hvd24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJs
YXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qczoKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5RGlh
Z25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLnNldHVwKToKKyAgICAgICAgKFdJLkdyaWRP
dmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLnRlYXJkb3duKToKKyAgICAg
ICAgKFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLl9oYW5k
bGVHcmlkT3ZlcmxheVNob3duKToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvT3Zlcmxh
eU1hbmFnZXIuanM6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlcik6CisgICAgICAgIChXSS5P
dmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2hvd092ZXJsYXkpOgorICAgICAgICAoV0kuT3Zlcmxh
eU1hbmFnZXIucHJvdG90eXBlLmhpZGVPdmVybGF5KToKKyAgICAgICAgKFdJLk92ZXJsYXlNYW5h
Z2VyLnByb3RvdHlwZS5oYXNWaXNpYmxlR3JpZE92ZXJsYXlzKToKKyAgICAgICAgKFdJLk92ZXJs
YXlNYW5hZ2VyLnByb3RvdHlwZS5oYXNWaXNpYmxlT3ZlcmxheSk6CisgICAgICAgIChXSS5PdmVy
bGF5TWFuYWdlci5wcm90b3R5cGUudG9nZ2xlT3ZlcmxheSk6CisgICAgICAgIChXSS5PdmVybGF5
TWFuYWdlci5wcm90b3R5cGUuZ2V0Q29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdJLk92ZXJsYXlN
YW5hZ2VyLnByb3RvdHlwZS5zZXRDb2xvckZvck5vZGUpOgorICAgICAgICAoV0kuT3ZlcmxheU1h
bmFnZXIucHJvdG90eXBlLl9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQpOgorICAgICAg
ICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQp
OgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVNYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLnNob3dH
cmlkT3ZlcmxheSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5
cGUuaGlkZUdyaWRPdmVybGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLk92ZXJsYXlNYW5hZ2Vy
LnByb3RvdHlwZS5pc0dyaWRPdmVybGF5VmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5P
dmVybGF5TWFuYWdlci5wcm90b3R5cGUudG9nZ2xlR3JpZE92ZXJsYXkpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLmdldEdyaWRDb2xvckZvck5vZGUpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIucHJvdG90eXBlLnNldEdyaWRDb2xv
ckZvck5vZGUpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgZ3JpZC1zcGVjaWZpYyBtZXRob2Rz
IChzdWNoIGFzIHNob3dHcmlkT3ZlcmxheSkgYW5kIGludHJvZHVjZSBtZXRob2RzIHRoYXQgd29y
ayB3aXRoCisgICAgICAgIGJvdGggR3JpZCBhbmQgRmxleGJveCAoc3VjaCBhcyBzaG93T3Zlcmxh
eSkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU0dyaWRTZWN0aW9uLmpzOgor
ICAgICAgICAoV0kuQ1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLmF0dGFjaGVkKToKKyAgICAgICAg
KFdJLkNTU0dyaWRTZWN0aW9uLnByb3RvdHlwZS5kZXRhY2hlZCk6CisgICAgICAgIChXSS5DU1NH
cmlkU2VjdGlvbi5wcm90b3R5cGUuX2hhbmRsZVRvZ2dsZUFsbENoZWNrYm94Q2hhbmdlZCk6Cisg
ICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbi5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJ
LkNTU0dyaWRTZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlR3JpZE92ZXJsYXlTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAoV0kuQ1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLl91cGRhdGVUb2dnbGVBbGxD
aGVja2JveCk6CisgICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbik6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5jc3M6CisgICAgICAgICgudHJlZS1vdXRsaW5l
LmRvbSAubGF5b3V0LWJhZGdlKToKKyAgICAgICAgKC50cmVlLW91dGxpbmUuZG9tIC5sYXlvdXQt
YmFkZ2UuYWN0aXZhdGVkKToKKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53
aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cy13aXRoaW4gbGku
c2VsZWN0ZWQgLmxheW91dC1iYWRnZSk6CisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3It
c2NoZW1lOiBkYXJrKSAudHJlZS1vdXRsaW5lLmRvbSAubGF5b3V0LWJhZGdlKToKKyAgICAgICAg
KC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1jc3MtZ3JpZCk6IERlbGV0ZWQuCisgICAgICAgICgu
dHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UtY3NzLWdyaWQuYWN0aXZhdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZl
KSAudHJlZS1vdXRsaW5lLmRvbTpmb2N1cy13aXRoaW4gbGkuc2VsZWN0ZWQgLmJhZGdlLWNzcy1n
cmlkKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1jc3MtZ3JpZCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0ku
RE9NVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
YXR0YWNoKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRldGFjaCk6
CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlVGl0bGUpOgorICAg
ICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVMYXlvdXRCYWRnZSk6Cisg
ICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX2xheW91dEJhZGdlQ2xpY2tlZCk6
CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUxheW91dEJhZGdl
U3RhdHVzKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5faGFuZGxlTGF5
b3V0Q29udGV4dFR5cGVDaGFuZ2VkKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fdXBkYXRlR3JpZEJhZGdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fZ3JpZEJhZGdlQ2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5E
T01UcmVlRWxlbWVudC5wcm90b3R5cGUuX2dyaWRCYWRnZURvdWJsZUNsaWNrZWQpOiBEZWxldGVk
LgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVHcmlkQmFkZ2VT
dGF0dXMpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWVkIGBfZ3JpZEJhZGdlRWxlbWVudGAgdG8g
YF9sYXlvdXRCYWRnZUVsZW1lbnRgLiBXZSBjYW4ndCBoYXZlIGJvdGggImZsZXgiIGFuZCAiZ3Jp
ZCIgYmFkZ2Ugb24gdGhlIHNhbWUgZWxlbWVudCwKKyAgICAgICAgc28gSSBjYWxsZWQgaXQgImxh
eW91dEJhZGdlIi4gSSBkaWRuJ3QgY2FsbCBpdCBzaW1wbHkgImJhZGdlIiBiZWNhdXNlIHdlIG1h
eSBoYXZlIG90aGVyIGJhZGdlcyBpbiB0aGUgZnV0dXJlLgorCiAyMDIyLTAyLTAzICBOaWtpdGEg
VmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFtGbGV4Ym94XSBBZGQgc2V0dGluZyB0byBndWFyZCBGbGV4Ym94IEluc3BlY3RvciBmZWF0dXJl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVy
bGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzCmluZGV4IGI5OTQzODA5
NWI0Yi4uMTZhOWQ4NzUxZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGlj
RXZlbnRSZWNvcmRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNv
cmRlci5qcwpAQCAtNTEsOCArNTEsOCBAQCBXSS5HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFn
bm9zdGljRXZlbnRSZWNvcmRlciA9IGNsYXNzIEdyaWRPdmVybGF5Q29uZmlndXJhdAogICAgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMsIG9wdGlvbnMpOwogICAgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMsIG9wdGlvbnMpOwogICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcywgb3B0aW9ucyk7
Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1h
bmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93
biwgdGhpcyk7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX2hhbmRsZUdyaWRP
dmVybGF5SGlkZGVuLCB0aGlzKTsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRs
ZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOworICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRkZW4sIHRoaXMu
X2hhbmRsZUdyaWRPdmVybGF5SGlkZGVuLCB0aGlzKTsKICAgICB9CiAKICAgICB0ZWFyZG93bigp
CkBAIC02NCwxNCArNjQsMTcgQEAgV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3Rp
Y0V2ZW50UmVjb3JkZXIgPSBjbGFzcyBHcmlkT3ZlcmxheUNvbmZpZ3VyYXQKICAgICAgICAgd2lu
ZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAg
d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLCBvcHRpb25zKTsKICAg
ICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMsIG9wdGlv
bnMpOwotICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92
ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVy
bGF5U2hvd24sIHRoaXMpOwotICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExp
c3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl9o
YW5kbGVHcmlkT3ZlcmxheUhpZGRlbiwgdGhpcyk7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3du
LCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKKyAgICAgICAgV0kub3Zlcmxh
eU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVy
bGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheUhpZGRlbiwgdGhpcyk7CiAKICAgICAg
ICAgdGhpcy5fc3RvcEV2ZW50U2FtcGxpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgfQogCiAgICAg
X2hhbmRsZUdyaWRPdmVybGF5U2hvd24oZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5kb21Ob2RlLmxheW91dENvbnRleHRUeXBlICE9PSBXSS5ET01Ob2RlLkxheW91dENvbnRl
eHRUeXBlLkdyaWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgdGhpcy5fb3Zlcmxh
eU9wdGlvbnMuc2hvd1RyYWNrU2l6ZXMgPSBldmVudC5kYXRhLnNob3dUcmFja1NpemVzOwogICAg
ICAgICB0aGlzLl9vdmVybGF5T3B0aW9ucy5zaG93TGluZU51bWJlcnMgPSBldmVudC5kYXRhLnNo
b3dMaW5lTnVtYmVyczsKICAgICAgICAgdGhpcy5fb3ZlcmxheU9wdGlvbnMuc2hvd0xpbmVOYW1l
cyA9IGV2ZW50LmRhdGEuc2hvd0xpbmVOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5RGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzCmluZGV4IDczYzQ3
NjJiYWY0MC4uZmZmOTU5NDViODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29y
ZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0dyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKQEAgLTM2LDE4ICszNiwy
MSBAQCBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyID0gY2xhc3MgR3JpZE92
ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlcgogCiAgICAgc2V0dXAoKQogICAgIHsKLSAgICAg
ICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5F
dmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlz
KTsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5
TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24s
IHRoaXMpOwogICAgIH0KIAogICAgIHRlYXJkb3duKCkKICAgICB7Ci0gICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3Jp
ZE92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93biwgdGhpcyk7CisgICAg
ICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFn
ZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlz
KTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKICAgICBfaGFuZGxlR3JpZE92ZXJsYXlTaG93
bihldmVudCkKICAgICB7CisgICAgICAgIGlmIChldmVudC5kYXRhLmRvbU5vZGUubGF5b3V0Q29u
dGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKwogICAgICAgICBsZXQgaW5pdGlhdG9yID0gZXZlbnQuZGF0YS5pbml0aWF0
b3I7CiAgICAgICAgIGlmICghaW5pdGlhdG9yIHx8ICF0aGlzLl9pbml0aWF0b3JzLmluY2x1ZGVz
KGluaXRpYXRvcikpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9PdmVybGF5TWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlN
YW5hZ2VyLmpzCmluZGV4IDAyYjc2ZjE4Yjc1Ny4uZjJmYTljYWQ2YmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9PdmVybGF5TWFu
YWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9PdmVybGF5TWFuYWdlci5qcwpAQCAtMjksMTAgKzI5LDExIEBAIFdJLk92ZXJsYXlNYW5h
Z2VyID0gY2xhc3MgT3ZlcmxheU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAg
ICAgIHN1cGVyKCk7CiAKLSAgICAgICAgdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2RlTWFwID0gbmV3
IE1hcDsKKyAgICAgICAgdGhpcy5fb3ZlcmxheUZvck5vZGVNYXAgPSBuZXcgTWFwOwogICAgICAg
ICB0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5fZ3Jp
ZENvbG9yRm9yTm9kZU1hcCA9IG5ldyBXZWFrTWFwOwotICAgICAgICB0aGlzLl9ncmlkQ29sb3JT
ZXR0aW5nRm9yTm9kZU1hcCA9IG5ldyBXZWFrTWFwOworICAgICAgICB0aGlzLl9uZXh0RGVmYXVs
dEZsZXhDb2xvckluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fY29sb3JGb3JOb2RlTWFwID0gbmV3
IFdlYWtNYXA7CisgICAgICAgIHRoaXMuX2NvbG9yU2V0dGluZ0Zvck5vZGVNYXAgPSBuZXcgV2Vh
a01hcDsKIAogICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dFeHRlbmRlZEdyaWRM
aW5lcy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFu
ZGxlR3JpZFNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92
ZXJsYXlTaG93TGluZU5hbWVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFu
Z2VkLCB0aGlzLl9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwpAQCAtNDQsNyArNDUs
NyBAQCBXSS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHNob3dHcmlkT3ZlcmxheShkb21Ob2RlLCB7
Y29sb3IsIGluaXRpYXRvcn0gPSB7fSkKKyAgICBzaG93T3ZlcmxheShkb21Ob2RlLCB7Y29sb3Is
IGluaXRpYXRvcn0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkb21Ob2Rl
LmRlc3Ryb3llZCwgZG9tTm9kZSk7CiAgICAgICAgIGlmIChkb21Ob2RlLmRlc3Ryb3llZCkKQEAg
LTUyLDEwOSArNTMsMTMzIEBAIFdJLk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3ZlcmxheU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlIGlu
c3RhbmNlb2YgV0kuRE9NTm9kZSwgZG9tTm9kZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFj
b2xvciB8fCBjb2xvciBpbnN0YW5jZW9mIFdJLkNvbG9yLCBjb2xvcik7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0
Q29udGV4dFR5cGUuR3JpZCwgZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZSku
aW5jbHVkZXMoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSksIGRvbU5vZGUpOwogCi0gICAgICAg
IGNvbG9yIHx8PSB0aGlzLmdldEdyaWRDb2xvckZvck5vZGUoZG9tTm9kZSk7CisgICAgICAgIGNv
bG9yIHx8PSB0aGlzLmdldENvbG9yRm9yTm9kZShkb21Ob2RlKTsKICAgICAgICAgbGV0IHRhcmdl
dCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwotICAgICAgICBsZXQgY29tbWFuZEFyZ3VtZW50
cyA9IHsKLSAgICAgICAgICAgIG5vZGVJZDogZG9tTm9kZS5pZCwKLSAgICAgICAgICAgIGdyaWRD
b2xvcjogY29sb3IudG9Qcm90b2NvbCgpLAotICAgICAgICAgICAgc2hvd0xpbmVOYW1lczogV0ku
c2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93TGluZU5hbWVzLnZhbHVlLAotICAgICAgICAgICAgc2hv
d0xpbmVOdW1iZXJzOiBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTnVtYmVycy52YWx1
ZSwKLSAgICAgICAgICAgIHNob3dFeHRlbmRlZEdyaWRMaW5lczogV0kuc2V0dGluZ3MuZ3JpZE92
ZXJsYXlTaG93RXh0ZW5kZWRHcmlkTGluZXMudmFsdWUsCi0gICAgICAgICAgICBzaG93VHJhY2tT
aXplczogV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93VHJhY2tTaXplcy52YWx1ZSwKLSAgICAg
ICAgICAgIHNob3dBcmVhTmFtZXM6IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0FyZWFOYW1l
cy52YWx1ZSwKLSAgICAgICAgfTsKLSAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNob3dHcmlkT3Zl
cmxheS5pbnZva2UoY29tbWFuZEFyZ3VtZW50cyk7CisgICAgICAgIGxldCBjb21tYW5kQXJndW1l
bnRzID0ge25vZGVJZDogZG9tTm9kZS5pZH07CisKKyAgICAgICAgc3dpdGNoIChkb21Ob2RlLmxh
eW91dENvbnRleHRUeXBlKSB7CisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0
VHlwZS5HcmlkOgorICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5ncmlkQ29sb3IgPSBjb2xv
ci50b1Byb3RvY29sKCk7CisgICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLnNob3dMaW5lTmFt
ZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMudmFsdWU7CisgICAgICAg
ICAgICBjb21tYW5kQXJndW1lbnRzLnNob3dMaW5lTnVtYmVycyA9IFdJLnNldHRpbmdzLmdyaWRP
dmVybGF5U2hvd0xpbmVOdW1iZXJzLnZhbHVlOworICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50
cy5zaG93RXh0ZW5kZWRHcmlkTGluZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dFeHRl
bmRlZEdyaWRMaW5lcy52YWx1ZTsKKyAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMuc2hvd1Ry
YWNrU2l6ZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dUcmFja1NpemVzLnZhbHVlOwor
ICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5zaG93QXJlYU5hbWVzID0gV0kuc2V0dGluZ3Mu
Z3JpZE92ZXJsYXlTaG93QXJlYU5hbWVzLnZhbHVlOworICAgICAgICAgICAgdGFyZ2V0LkRPTUFn
ZW50LnNob3dHcmlkT3ZlcmxheS5pbnZva2UoY29tbWFuZEFyZ3VtZW50cyk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxl
eDoKKyAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMuZmxleENvbG9yID0gY29sb3IudG9Qcm90
b2NvbCgpOworICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNob3dGbGV4T3ZlcmxheS5pbnZv
a2UoY29tbWFuZEFyZ3VtZW50cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAg
ICAgICAgIGxldCBvdmVybGF5ID0ge2RvbU5vZGUsIC4uLmNvbW1hbmRBcmd1bWVudHMsIGluaXRp
YXRvcn07CiAKICAgICAgICAgLy8gVGhlIG1ldGhvZCB0byBzaG93IHRoZSBvdmVybGF5IHdpbGwg
YmUgY2FsbGVkIHJlcGVhdGVkbHkgd2hpbGUgdXBkYXRpbmcgdGhlIGdyaWQgb3ZlcmxheSBjb2xv
ci4gQXZvaWQgYWRkaW5nIGR1cGxpY2F0ZSBldmVudCBsaXN0ZW5lcnMKLSAgICAgICAgaWYgKCF0
aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVNYXAuaGFzKGRvbU5vZGUpKQorICAgICAgICBpZiAoIXRo
aXMuX292ZXJsYXlGb3JOb2RlTWFwLmhhcyhkb21Ob2RlKSkKICAgICAgICAgICAgIGRvbU5vZGUu
YWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdl
ZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsKIAotICAgICAg
ICB0aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVNYXAuc2V0KGRvbU5vZGUsIG92ZXJsYXkpOworICAg
ICAgICB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgb3ZlcmxheSk7CiAKLSAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZl
bnQuR3JpZE92ZXJsYXlTaG93biwgb3ZlcmxheSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgb3Zlcmxh
eSk7CiAgICAgfQogCi0gICAgaGlkZUdyaWRPdmVybGF5KGRvbU5vZGUpCisgICAgaGlkZU92ZXJs
YXkoZG9tTm9kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFu
Y2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWRvbU5v
ZGUuZGVzdHJveWVkLCBkb21Ob2RlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZS5s
YXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkLCBk
b21Ob2RlLmxheW91dENvbnRleHRUeXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0
LnZhbHVlcyhXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlKS5pbmNsdWRlcyhkb21Ob2RlLmxh
eW91dENvbnRleHRUeXBlKSwgZG9tTm9kZSk7CiAgICAgICAgIGlmIChkb21Ob2RlLmRlc3Ryb3ll
ZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgb3ZlcmxheSA9IHRoaXMuX2dy
aWRPdmVybGF5Rm9yTm9kZU1hcC50YWtlKGRvbU5vZGUpOworICAgICAgICBsZXQgb3ZlcmxheSA9
IHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwLnRha2UoZG9tTm9kZSk7CiAgICAgICAgIGlmICghb3Zl
cmxheSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNz
dW1pbmdNYWluVGFyZ2V0KCk7Ci0gICAgICAgIHRhcmdldC5ET01BZ2VudC5oaWRlR3JpZE92ZXJs
YXkoZG9tTm9kZS5pZCk7CisKKyAgICAgICAgc3dpdGNoIChkb21Ob2RlLmxheW91dENvbnRleHRU
eXBlKSB7CisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgor
ICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LmhpZGVHcmlkT3ZlcmxheShkb21Ob2RlLmlkKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250
ZXh0VHlwZS5GbGV4OgorICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LmhpZGVGbGV4T3Zlcmxh
eShkb21Ob2RlLmlkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAg
ZG9tTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4
dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMp
OwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5PdmVybGF5TWFuYWdl
ci5FdmVudC5HcmlkT3ZlcmxheUhpZGRlbiwgb3ZlcmxheSk7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRkZW4s
IG92ZXJsYXkpOwogICAgIH0KIAogICAgIGhhc1Zpc2libGVHcmlkT3ZlcmxheXMoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1hcC5zaXplID4gMDsKKyAg
ICAgICAgZm9yIChsZXQgZG9tTm9kZSBvZiB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcC5rZXlzKCkp
IHsKKyAgICAgICAgICAgIGlmIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01O
b2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlzR3JpZE92
ZXJsYXlWaXNpYmxlKGRvbU5vZGUpCisgICAgaGFzVmlzaWJsZU92ZXJsYXkoZG9tTm9kZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVNYXAuaGFzKGRvbU5v
ZGUpOworICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheUZvck5vZGVNYXAuaGFzKGRvbU5vZGUp
OwogICAgIH0KIAotICAgIHRvZ2dsZUdyaWRPdmVybGF5KGRvbU5vZGUsIG9wdGlvbnMpCisgICAg
dG9nZ2xlT3ZlcmxheShkb21Ob2RlLCBvcHRpb25zKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
aXNHcmlkT3ZlcmxheVZpc2libGUoZG9tTm9kZSkpCi0gICAgICAgICAgICB0aGlzLmhpZGVHcmlk
T3ZlcmxheShkb21Ob2RlKTsKKyAgICAgICAgaWYgKHRoaXMuaGFzVmlzaWJsZU92ZXJsYXkoZG9t
Tm9kZSkpCisgICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KGRvbU5vZGUpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0aGlzLnNob3dHcmlkT3ZlcmxheShkb21Ob2RlLCBvcHRpb25zKTsK
KyAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoZG9tTm9kZSwgb3B0aW9ucyk7CiAgICAgfQog
Ci0gICAgZ2V0R3JpZENvbG9yRm9yTm9kZShkb21Ob2RlKQorICAgIGdldENvbG9yRm9yTm9kZShk
b21Ob2RlKQogICAgIHsKLSAgICAgICAgbGV0IGNvbG9yID0gdGhpcy5fZ3JpZENvbG9yRm9yTm9k
ZU1hcC5nZXQoZG9tTm9kZSk7CisgICAgICAgIGxldCBjb2xvciA9IHRoaXMuX2NvbG9yRm9yTm9k
ZU1hcC5nZXQoZG9tTm9kZSk7CiAgICAgICAgIGlmIChjb2xvcikKICAgICAgICAgICAgIHJldHVy
biBjb2xvcjsKIAotICAgICAgICBjb25zdCBkZWZhdWx0R3JpZEhTTENvbG9ycyA9IFsKLSAgICAg
ICAgICAgIFszMjksIDkxLCA3MF0sCi0gICAgICAgICAgICBbMjA3LCA5NiwgNjldLAotICAgICAg
ICAgICAgWzkyLCA5MCwgNjRdLAotICAgICAgICAgICAgWzI5MSwgNzMsIDY4XSwKLSAgICAgICAg
ICAgIFs0MCwgOTcsIDU3XSwKLSAgICAgICAgXTsKLQotICAgICAgICBsZXQgY29sb3JTZXR0aW5n
ID0gdGhpcy5fZ3JpZENvbG9yU2V0dGluZ0Zvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOworICAgICAg
ICBsZXQgY29sb3JTZXR0aW5nID0gdGhpcy5fY29sb3JTZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9t
Tm9kZSk7CiAgICAgICAgIGlmICghY29sb3JTZXR0aW5nKSB7Ci0gICAgICAgICAgICBsZXQgZGVm
YXVsdENvbG9yID0gZGVmYXVsdEdyaWRIU0xDb2xvcnNbdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29s
b3JJbmRleF07Ci0gICAgICAgICAgICB0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4ID0g
KHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggKyAxKSAlIGRlZmF1bHRHcmlkSFNMQ29s
b3JzLmxlbmd0aDsKKyAgICAgICAgICAgIGxldCBuZXh0Q29sb3JJbmRleDsKKyAgICAgICAgICAg
IHN3aXRjaCAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSkgeworICAgICAgICAgICAgY2FzZSBX
SS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICAgICAgbmV4dENv
bG9ySW5kZXggPSB0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4OworICAgICAgICAgICAg
ICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAobmV4dENvbG9ySW5kZXggKyAx
KSAlIFdJLk92ZXJsYXlNYW5hZ2VyLl9kZWZhdWx0SFNMQ29sb3JzLmxlbmd0aDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRl
eHRUeXBlLkZsZXg6CisgICAgICAgICAgICAgICAgbmV4dENvbG9ySW5kZXggPSB0aGlzLl9uZXh0
RGVmYXVsdEZsZXhDb2xvckluZGV4OworICAgICAgICAgICAgICAgIHRoaXMuX25leHREZWZhdWx0
RmxleENvbG9ySW5kZXggPSAobmV4dENvbG9ySW5kZXggKyAxKSAlIFdJLk92ZXJsYXlNYW5hZ2Vy
Ll9kZWZhdWx0SFNMQ29sb3JzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGxldCBkZWZhdWx0Q29sb3IgPSBXSS5PdmVybGF5TWFuYWdl
ci5fZGVmYXVsdEhTTENvbG9yc1tuZXh0Q29sb3JJbmRleF07CiAKICAgICAgICAgICAgIGxldCB1
cmwgPSBkb21Ob2RlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRVUkwgfHwgV0kubmV0d29ya01hbmFn
ZXIubWFpbkZyYW1lLnVybDsKLSAgICAgICAgICAgIGNvbG9yU2V0dGluZyA9IG5ldyBXSS5TZXR0
aW5nKGBncmlkLW92ZXJsYXktY29sb3ItJHt1cmwuaGFzaH0tJHtkb21Ob2RlLnBhdGgoKS5oYXNo
fWAsIGRlZmF1bHRDb2xvcik7Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQ29sb3JTZXR0aW5nRm9y
Tm9kZU1hcC5zZXQoZG9tTm9kZSwgY29sb3JTZXR0aW5nKTsKKyAgICAgICAgICAgIGNvbG9yU2V0
dGluZyA9IG5ldyBXSS5TZXR0aW5nKGBvdmVybGF5LWNvbG9yLSR7dXJsLmhhc2h9LSR7ZG9tTm9k
ZS5wYXRoKCkuaGFzaH1gLCBkZWZhdWx0Q29sb3IpOworICAgICAgICAgICAgdGhpcy5fY29sb3JT
ZXR0aW5nRm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgY29sb3JTZXR0aW5nKTsKICAgICAgICAgfQog
CiAgICAgICAgIGNvbG9yID0gbmV3IFdJLkNvbG9yKFdJLkNvbG9yLkZvcm1hdC5IU0wsIGNvbG9y
U2V0dGluZy52YWx1ZSk7Ci0gICAgICAgIHRoaXMuX2dyaWRDb2xvckZvck5vZGVNYXAuc2V0KGRv
bU5vZGUsIGNvbG9yKTsKKyAgICAgICAgdGhpcy5fY29sb3JGb3JOb2RlTWFwLnNldChkb21Ob2Rl
LCBjb2xvcik7CiAKICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgIH0KIAotICAgIHNldEdyaWRD
b2xvckZvck5vZGUoZG9tTm9kZSwgY29sb3IpCisgICAgc2V0Q29sb3JGb3JOb2RlKGRvbU5vZGUs
IGNvbG9yKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZSBpbnN0YW5jZW9m
IFdJLkRPTU5vZGUsIGRvbU5vZGUpOwogICAgICAgICBjb25zb2xlLmFzc2VydChjb2xvciBpbnN0
YW5jZW9mIFdJLkNvbG9yLCBjb2xvcik7CiAKLSAgICAgICAgbGV0IGNvbG9yU2V0dGluZyA9IHRo
aXMuX2dyaWRDb2xvclNldHRpbmdGb3JOb2RlTWFwLmdldChkb21Ob2RlKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoY29sb3JTZXR0aW5nLCAiVGhlcmUgc2hvdWxkIGFscmVhZHkgYmUgYSBzZXR0
aW5nIGNyZWF0ZWQgZm9ybSBhIHByZXZpb3VzIGNhbGwgdG8gZ2V0R3JpZENvbG9yRm9yTm9kZSgp
Iik7CisgICAgICAgIGxldCBjb2xvclNldHRpbmcgPSB0aGlzLl9jb2xvclNldHRpbmdGb3JOb2Rl
TWFwLmdldChkb21Ob2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29sb3JTZXR0aW5nLCAi
VGhlcmUgc2hvdWxkIGFscmVhZHkgYmUgYSBzZXR0aW5nIGNyZWF0ZWQgZm9ybSBhIHByZXZpb3Vz
IGNhbGwgdG8gZ2V0Q29sb3JGb3JOb2RlKCkiKTsKICAgICAgICAgY29sb3JTZXR0aW5nLnZhbHVl
ID0gY29sb3IuaHNsOwogCi0gICAgICAgIHRoaXMuX2dyaWRDb2xvckZvck5vZGVNYXAuc2V0KGRv
bU5vZGUsIGNvbG9yKTsKKyAgICAgICAgdGhpcy5fY29sb3JGb3JOb2RlTWFwLnNldChkb21Ob2Rl
LCBjb2xvcik7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpAQCAtMTYyLDIwICsxODcsMjEgQEAg
V0kuT3ZlcmxheU1hbmFnZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgIF9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICBsZXQgZG9tTm9kZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
ZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlw
ZS5HcmlkLCBkb21Ob2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhX
SS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlKS5pbmNsdWRlcyhkb21Ob2RlLmxheW91dENvbnRl
eHRUeXBlKSwgZG9tTm9kZSk7CiAKICAgICAgICAgZG9tTm9kZS5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVM
YXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogCi0gICAgICAgIC8vIFdoZW4gdGhlIGNv
bnRleHQgdHlwZSBjaGFuZ2VzLCB0aGUgb3ZlcmxheSBpcyBhdXRvbWF0aWNhbGx5IGhpZGRlbiBv
biB0aGUgYmFja2VuZC4gSGVyZSwgd2Ugb25seSB1cGRhdGUgdGhlIG1hcCBhbmQgbm90aWZ5IGxp
c3RlbmVycy4KLSAgICAgICAgbGV0IG92ZXJsYXkgPSB0aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVN
YXAudGFrZShkb21Ob2RlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIG92ZXJsYXkpOworICAg
ICAgICAvLyBXaGVuIHRoZSBjb250ZXh0IHR5cGUgY2hhbmdlcywgdGhlIG92ZXJsYXkgaXMgYXV0
b21hdGljYWxseSBoaWRkZW4gb24gdGhlIGJhY2tlbmQgKGV2ZW4gaWYgaXQgY2hhbmdlcyBmcm9t
IEdyaWQgdG8gRmxleCwgb3IgdmljZS12ZXJzYSkuCisgICAgICAgIC8vIEhlcmUsIHdlIG9ubHkg
dXBkYXRlIHRoZSBtYXAgYW5kIG5vdGlmeSBsaXN0ZW5lcnMuCisgICAgICAgIGxldCBvdmVybGF5
ID0gdGhpcy5fb3ZlcmxheUZvck5vZGVNYXAudGFrZShkb21Ob2RlKTsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhp
ZGRlbiwgb3ZlcmxheSk7CiAgICAgfQogCiAgICAgX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZChl
dmVudCkKICAgICB7Ci0gICAgICAgIGZvciAobGV0IFtkb21Ob2RlLCBvdmVybGF5XSBvZiB0aGlz
Ll9ncmlkT3ZlcmxheUZvck5vZGVNYXApIHsKLSAgICAgICAgICAgIC8vIFJlZnJlc2ggYWxsIHNo
b3duIG92ZXJsYXlzLiBMYXRlc3Qgc2V0dGluZ3MgdmFsdWVzIHdpbGwgYmUgdXNlZC4KLSAgICAg
ICAgICAgIHRoaXMuc2hvd0dyaWRPdmVybGF5KGRvbU5vZGUsIHtjb2xvcjogb3ZlcmxheS5jb2xv
ciwgaW5pdGlhdG9yOiBvdmVybGF5LmluaXRpYXRvcn0pOworICAgICAgICBmb3IgKGxldCBbZG9t
Tm9kZSwgb3ZlcmxheV0gb2YgdGhpcy5fb3ZlcmxheUZvck5vZGVNYXApIHsKKyAgICAgICAgICAg
IGlmIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRl
eHRUeXBlLkdyaWQpCisgICAgICAgICAgICAgICAgdGhpcy5zaG93T3ZlcmxheShkb21Ob2RlLCB7
Y29sb3I6IG92ZXJsYXkuY29sb3IsIGluaXRpYXRvcjogb3ZlcmxheS5pbml0aWF0b3J9KTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTkxLDEwICsyMTcsMTkgQEAgV0kuT3ZlcmxheU1hbmFnZXIg
PSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAvLwogICAg
ICAgICAvLyBgZG9tTm9kZS5pZGAgaXMgZGlmZmVyZW50IGZvciB0aGUgc2FtZSBET00gZWxlbWVu
dCBhZnRlciBwYWdlIHJlbG9hZC4KICAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJ
bmRleCA9IDA7CisgICAgICAgIHRoaXMuX25leHREZWZhdWx0RmxleENvbG9ySW5kZXggPSAwOwog
ICAgIH0KIH07CiAKK1dJLk92ZXJsYXlNYW5hZ2VyLl9kZWZhdWx0SFNMQ29sb3JzID0gWworICAg
IFszMjksIDkxLCA3MF0sCisgICAgWzIwNywgOTYsIDY5XSwKKyAgICBbOTIsIDkwLCA2NF0sCisg
ICAgWzI5MSwgNzMsIDY4XSwKKyAgICBbNDAsIDk3LCA1N10sCitdOworCiBXSS5PdmVybGF5TWFu
YWdlci5FdmVudCA9IHsKLSAgICBHcmlkT3ZlcmxheVNob3duOiAib3ZlcmxheS1tYW5hZ2VyLWdy
aWQtb3ZlcmxheS1zaG93biIsCi0gICAgR3JpZE92ZXJsYXlIaWRkZW46ICJvdmVybGF5LW1hbmFn
ZXItZ3JpZC1vdmVybGF5LWhpZGRlbiIsCisgICAgT3ZlcmxheVNob3duOiAib3ZlcmxheS1tYW5h
Z2VyLW92ZXJsYXktc2hvd24iLAorICAgIE92ZXJsYXlIaWRkZW46ICJvdmVybGF5LW1hbmFnZXIt
b3ZlcmxheS1oaWRkZW4iLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU0dyaWRTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTR3JpZFNlY3Rpb24uanMKaW5kZXggMTY0MzgwMWQ1
NDgwLi42NGM2ZThmODZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU0dyaWRTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU0dyaWRTZWN0aW9uLmpzCkBAIC01MywxNCArNTMs
MTQgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBjbGFzcyBDU1NHcmlkU2VjdGlvbiBleHRlbmRzIFdJ
LlZpZXcKICAgICB7CiAgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CiAKLSAgICAgICAgV0kub3Zl
cmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5Hcmlk
T3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7
Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1h
bmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U3Rh
dGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdy
aWRPdmVybGF5U3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVuLCB0
aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQogCiAgICAg
ZGV0YWNoZWQoKQogICAgIHsKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl9o
YW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLm92ZXJsYXlN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92
ZXJsYXlIaWRkZW4sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U3RhdGVDaGFuZ2VkLCB0aGlzKTsK
KyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5
TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U3RhdGVD
aGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVH
cmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgc3VwZXIuZGV0YWNoZWQo
KTsKICAgICB9CkBAIC05OSw5ICs5OSw5IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3MgQ1NT
R3JpZFNlY3Rpb24gZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX3N1cHByZXNzVXBkYXRl
VG9nZ2xlQWxsQ2hlY2tib3ggPSB0cnVlOwogICAgICAgICBmb3IgKGxldCBkb21Ob2RlIG9mIHRo
aXMuX2dyaWROb2RlU2V0KSB7CiAgICAgICAgICAgICBpZiAoaXNDaGVja2VkKQotICAgICAgICAg
ICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNob3dHcmlkT3ZlcmxheShkb21Ob2RlLCB7aW5pdGlh
dG9yOiBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvci5QYW5l
bH0pOworICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNob3dPdmVybGF5KGRvbU5v
ZGUsIHtpbml0aWF0b3I6IFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuSW5p
dGlhdG9yLlBhbmVsfSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgV0kub3Zl
cmxheU1hbmFnZXIuaGlkZUdyaWRPdmVybGF5KGRvbU5vZGUpOworICAgICAgICAgICAgICAgIFdJ
Lm92ZXJsYXlNYW5hZ2VyLmhpZGVPdmVybGF5KGRvbU5vZGUpOwogICAgICAgICB9CiAgICAgICAg
IHRoaXMuX3N1cHByZXNzVXBkYXRlVG9nZ2xlQWxsQ2hlY2tib3ggPSBmYWxzZTsKICAgICB9CkBA
IC0xMjAsNyArMTIwLDcgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBjbGFzcyBDU1NHcmlkU2VjdGlv
biBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIGxldCBsYWJlbEVsZW1lbnQgPSBpdGVtQ29u
dGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIp
KTsKICAgICAgICAgICAgIGxldCBjaGVja2JveEVsZW1lbnQgPSBsYWJlbEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7CiAgICAgICAgICAgICBjaGVj
a2JveEVsZW1lbnQudHlwZSA9ICJjaGVja2JveCI7Ci0gICAgICAgICAgICBjaGVja2JveEVsZW1l
bnQuY2hlY2tlZCA9IFdJLm92ZXJsYXlNYW5hZ2VyLmlzR3JpZE92ZXJsYXlWaXNpYmxlKGRvbU5v
ZGUpOworICAgICAgICAgICAgY2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSBXSS5vdmVybGF5TWFu
YWdlci5oYXNWaXNpYmxlT3ZlcmxheShkb21Ob2RlKTsKIAogICAgICAgICAgICAgY29uc3Qgbm9k
ZURpc3BsYXlOYW1lID0gbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKSk7CiAgICAgICAgICAgICBub2RlRGlzcGxheU5hbWUuY2xhc3NMaXN0LmFk
ZCgibm9kZS1kaXNwbGF5LW5hbWUiKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFdJLkNTU0dyaWRT
ZWN0aW9uID0gY2xhc3MgQ1NTR3JpZFNlY3Rpb24gZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAg
ICAgIGNoZWNrYm94RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCAoZXZlbnQpID0+
IHsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpCi0gICAgICAg
ICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNob3dHcmlkT3ZlcmxheShkb21Ob2RlLCB7
Y29sb3I6IHN3YXRjaC52YWx1ZSwgaW5pdGlhdG9yOiBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNF
dmVudFJlY29yZGVyLkluaXRpYXRvci5QYW5lbH0pOworICAgICAgICAgICAgICAgICAgICBXSS5v
dmVybGF5TWFuYWdlci5zaG93T3ZlcmxheShkb21Ob2RlLCB7Y29sb3I6IHN3YXRjaC52YWx1ZSwg
aW5pdGlhdG9yOiBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRv
ci5QYW5lbH0pOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgV0ku
b3ZlcmxheU1hbmFnZXIuaGlkZUdyaWRPdmVybGF5KGRvbU5vZGUpOworICAgICAgICAgICAgICAg
ICAgICBXSS5vdmVybGF5TWFuYWdlci5oaWRlT3ZlcmxheShkb21Ob2RlKTsKICAgICAgICAgICAg
IH0pOwogCi0gICAgICAgICAgICBsZXQgZ3JpZENvbG9yID0gV0kub3ZlcmxheU1hbmFnZXIuZ2V0
R3JpZENvbG9yRm9yTm9kZShkb21Ob2RlKTsKKyAgICAgICAgICAgIGxldCBncmlkQ29sb3IgPSBX
SS5vdmVybGF5TWFuYWdlci5nZXRDb2xvckZvck5vZGUoZG9tTm9kZSk7CiAgICAgICAgICAgICBs
ZXQgc3dhdGNoID0gbmV3IFdJLklubGluZVN3YXRjaChXSS5JbmxpbmVTd2F0Y2guVHlwZS5Db2xv
ciwgZ3JpZENvbG9yKTsKICAgICAgICAgICAgIHN3YXRjaC5zaGlmdENsaWNrQ29sb3JFbmFibGVk
ID0gZmFsc2U7CiAgICAgICAgICAgICBpdGVtQ29udGFpbmVyRWxlbWVudC5hcHBlbmQoc3dhdGNo
LmVsZW1lbnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3Mg
Q1NTR3JpZFNlY3Rpb24gZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNr
Ym94RWxlbWVudC5jaGVja2VkKQogICAgICAgICAgICAgICAgICAgICAvLyBXaGlsZSBjaGFuZ2lu
ZyB0aGUgb3ZlcmxheSBjb2xvciwgV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlT
aG93biBpcyBkaXNwYXRjaGVkIHdpdGggaGlnaCBmcmVxdWVuY3kuCiAgICAgICAgICAgICAgICAg
ICAgIC8vIEFuIGluaXRpYXRvciBpcyBub3QgcHJvdmlkZWQgc28gYXMgbm90IHRvIHNrZXcgdXNh
Z2UgY291bnQgb2Ygb3ZlcmxheSBvcHRpb25zIHdoZW4gbG9nZ2luZyBkaWFnbm9zdGljcyBpbiBX
SS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLgotICAgICAgICAgICAgICAgICAg
ICBXSS5vdmVybGF5TWFuYWdlci5zaG93R3JpZE92ZXJsYXkoZG9tTm9kZSwge2NvbG9yOiBldmVu
dC5kYXRhLnZhbHVlfSk7CisgICAgICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNo
b3dPdmVybGF5KGRvbU5vZGUsIHtjb2xvcjogZXZlbnQuZGF0YS52YWx1ZX0pOwogICAgICAgICAg
ICAgfSwgc3dhdGNoKTsKIAogICAgICAgICAgICAgc3dhdGNoLmFkZEV2ZW50TGlzdGVuZXIoV0ku
SW5saW5lU3dhdGNoLkV2ZW50LkRlYWN0aXZhdGVkLCAoZXZlbnQpID0+IHsKQEAgLTE1Miw3ICsx
NTIsNyBAQCBXSS5DU1NHcmlkU2VjdGlvbiA9IGNsYXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMg
V0kuVmlldwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICBn
cmlkQ29sb3IgPSBldmVudC50YXJnZXQudmFsdWU7Ci0gICAgICAgICAgICAgICAgV0kub3Zlcmxh
eU1hbmFnZXIuc2V0R3JpZENvbG9yRm9yTm9kZShkb21Ob2RlLCBncmlkQ29sb3IpOworICAgICAg
ICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNldENvbG9yRm9yTm9kZShkb21Ob2RlLCBncmlk
Q29sb3IpOwogICAgICAgICAgICAgfSwgc3dhdGNoKTsKIAogICAgICAgICAgICAgbGV0IGJ1dHRv
bkVsZW1lbnQgPSBpdGVtQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChXSS5jcmVhdGVHb1Rv
QXJyb3dCdXR0b24oKSk7CkBAIC0xNjcsMTEgKzE2NywxNCBAQCBXSS5DU1NHcmlkU2VjdGlvbiA9
IGNsYXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogCiAgICAgX2hhbmRsZUdyaWRP
dmVybGF5U3RhdGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEu
ZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlw
ZS5HcmlkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGxldCBjaGVja2JveEVsZW1l
bnQgPSB0aGlzLl9jaGVja2JveEVsZW1lbnRCeU5vZGVNYXAuZ2V0KGV2ZW50LmRhdGEuZG9tTm9k
ZSk7CiAgICAgICAgIGlmICghY2hlY2tib3hFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2VkID0gZXZlbnQudHlwZSA9PT0gV0kuT3Zl
cmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93bjsKKyAgICAgICAgY2hlY2tib3hFbGVt
ZW50LmNoZWNrZWQgPSBldmVudC50eXBlID09PSBXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVy
bGF5U2hvd247CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRvZ2dsZUFsbENoZWNrYm94KCk7CiAgICAg
fQogCkBAIC0xODMsNyArMTg2LDcgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBjbGFzcyBDU1NHcmlk
U2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgbGV0IGhhc1Zpc2libGUgPSBmYWxzZTsK
ICAgICAgICAgbGV0IGhhc0hpZGRlbiA9IGZhbHNlOwogICAgICAgICBmb3IgKGxldCBkb21Ob2Rl
IG9mIHRoaXMuX2dyaWROb2RlU2V0KSB7Ci0gICAgICAgICAgICBsZXQgaXNWaXNpYmxlID0gV0ku
b3ZlcmxheU1hbmFnZXIuaXNHcmlkT3ZlcmxheVZpc2libGUoZG9tTm9kZSk7CisgICAgICAgICAg
ICBsZXQgaXNWaXNpYmxlID0gV0kub3ZlcmxheU1hbmFnZXIuaGFzVmlzaWJsZU92ZXJsYXkoZG9t
Tm9kZSk7CiAgICAgICAgICAgICBpZiAoaXNWaXNpYmxlKQogICAgICAgICAgICAgICAgIGhhc1Zp
c2libGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuY3NzCmlu
ZGV4IDE5ZDY0NzUxYTBjZC4uMTE4MDc3Yzk5ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5jc3MKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuY3Nz
CkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotLnRyZWUtb3V0bGluZS5kb20gLmJhZGdlLWNzcy1ncmlkIHsKKy50cmVlLW91dGxpbmUu
ZG9tIC5sYXlvdXQtYmFkZ2UgewogICAgIC8qIFVzaW5nIHNhbnMtc2VyaWYgU2FuIEZyYW5jaXNj
byBmb250IGhlcmUgY3JlYXRlcyBhIGJhZGdlIDFweCB0YWxsZXIgdGhhbiB0aGUgc2VsZWN0ZWQK
ICAgICBhcmVhLiBVc2UgdGhlIHNhbWUgbW9ub3NwYWNlIGZvbnQgYXMgdGhlIHJlc3Qgb2YgdGhl
IERPTSB0cmVlIG91dGxpbmUuICovCiAKQEAgLTM4LDE5ICszOCwxOSBAQAogICAgIGJveC1zaGFk
b3c6IDAgMCAxcHggaHNsYSgwLCAwJSwgMCUsIDAuNSk7CiB9CiAKLS50cmVlLW91dGxpbmUuZG9t
IC5iYWRnZS1jc3MtZ3JpZC5hY3RpdmF0ZWQgeworLnRyZWUtb3V0bGluZS5kb20gLmxheW91dC1i
YWRnZS5hY3RpdmF0ZWQgewogICAgIGJhY2tncm91bmQ6IHZhcigtLWdseXBoLWNvbG9yLWFjdGl2
ZSk7CiAgICAgY29sb3I6IHdoaXRlOwogfQogCi1ib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMtd2l0aGluIGxp
LnNlbGVjdGVkIC5iYWRnZS1jc3MtZ3JpZCB7Citib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZS5kb206Zm9jdXMtd2l0aGluIGxp
LnNlbGVjdGVkIC5sYXlvdXQtYmFkZ2UgewogICAgIC8qIE92ZXJyaWRlIGBsaS5zZWxlY3RlZCAq
IHtjb2xvcjogaW5oZXJpdGVkfWAgZnJvbSBET01UcmVlT3V0bGluZS5jc3MgKi8KICAgICBjb2xv
cjogdmFyKC0tdGV4dC1jb2xvcik7CiB9CiAKIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVt
ZTogZGFyaykgewotICAgIC50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1jc3MtZ3JpZCB7CisgICAg
LnRyZWUtb3V0bGluZS5kb20gLmxheW91dC1iYWRnZSB7CiAgICAgICAgIGJhY2tncm91bmQ6IGhz
bGEoMCwgMCUsIDMwJSwgMC44KTsKICAgICAgICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCAx
MDAlLCAwLjEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggMGRhNGEzZDJmODYw
Li4xYjViN2UyM2IyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC01MSw3ICs1MSw3IEBA
IFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVl
RWxlbWVudAogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZEF0dHJpYnV0ZXMgPSBuZXcgU2V0Owog
ICAgICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkQXR0cmlidXRlcyA9IG5ldyBNYXA7CiAgICAg
ICAgIHRoaXMuX2Nsb3NlVGFnVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9ncmlk
QmFkZ2VFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50ID0g
bnVsbDsKIAogICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5F
bmFibGVkUHNldWRvQ2xhc3Nlc0NoYW5nZWQsIHRoaXMuX3VwZGF0ZVBzZXVkb0NsYXNzSW5kaWNh
dG9yLCB0aGlzKTsKIApAQCAtNDQ0LDIwICs0NDQsMjAgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBj
bGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgICAgICB0
aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCB0aGlzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENv
bnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpIHsKLSAgICAg
ICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFn
ZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0
aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdyaWRC
YWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmxh
eW91dENvbnRleHRUeXBlKSB7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5fdXBk
YXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVu
LCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0KICAgICAg
ICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZl
bnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRDb250ZXh0VHlw
ZUNoYW5nZWQsIHRoaXMpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZSgpOworICAg
ICAgICB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZSgpOwogICAgIH0KIAogICAgIG9uZGV0YWNoKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENvbnRleHRU
eXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpIHsKLSAgICAgICAgICAg
IFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIu
RXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0aGlz
KTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdyaWRC
YWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5f
dXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5
SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRP
TU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRD
b250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogICAgIH0KQEAgLTEzMzQsNyArMTMzNCw3IEBAIFdJ
LkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxl
bWVudAogICAgICAgICAgICAgdGhpcy50aXRsZS5hcHBlbmRDaGlsZCh0aGlzLl9ub2RlVGl0bGVJ
bmZvKCkudGl0bGVET00pOwogICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0UmVzdWx0ID0gdW5k
ZWZpbmVkOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZSgpOworICAg
ICAgICB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZSgpOwogCiAgICAgICAgIC8vIFNldHRpbmcgdGhp
cy50aXRsZSB3aWxsIGltcGxpY2l0bHkgcmVtb3ZlIGFsbCBjaGlsZHJlbi4gQ2xlYXIgdGhlCiAg
ICAgICAgIC8vIHNlbGVjdGlvbiBlbGVtZW50IHNvIHRoYXQgd2UgcHJvcGVybHkgcmVjcmVhdGUg
aXQgaWYgbmVjZXNzYXJ5LgpAQCAtMjAxMCwzMCArMjAxMCw0NiBAQCBXSS5ET01UcmVlRWxlbWVu
dCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAg
dGhpcy5fYW5pbWF0aW5nSGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgfQogCi0gICAgX3VwZGF0ZUdy
aWRCYWRnZSgpCisgICAgX3VwZGF0ZUxheW91dEJhZGdlKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5saXN0SXRlbUVsZW1lbnQgfHwgdGhpcy5fZWxlbWVudENsb3NlVGFnKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLl9ncmlkQmFkZ2VFbGVtZW50KSB7Ci0gICAg
ICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnJlbW92ZSgpOwotICAgICAgICAgICAgdGhp
cy5fZ3JpZEJhZGdlRWxlbWVudCA9IG51bGw7CisgICAgICAgIGlmICh0aGlzLl9sYXlvdXRCYWRn
ZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5yZW1vdmUo
KTsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudCA9IG51bGw7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlw
ZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQorICAgICAgICBpZiAoIXRo
aXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5
cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleCAmJiAhV0kuc2V0dGluZ3Mu
ZW5naW5lZXJpbmdFbmFibGVGbGV4Ym94SW5zcGVjdG9yLnZhbHVlKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuY2xhc3NOYW1l
ID0gImJhZGdlLWNzcy1ncmlkIjsKLSAgICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudC50ZXh0
Q29udGVudCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJncmlkIik7Ci0gICAgICAgIHRoaXMuX3Vw
ZGF0ZUdyaWRCYWRnZVN0YXR1cygpOwotICAgICAgICB0aGlzLnRpdGxlLmFwcGVuZCh0aGlzLl9n
cmlkQmFkZ2VFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50ID0gdGhp
cy50aXRsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpOworICAg
ICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuY2xhc3NOYW1lID0gImxheW91dC1iYWRnZSI7
CisKKyAgICAgICAgc3dpdGNoICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENvbnRleHRU
eXBlKSB7CisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgor
ICAgICAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LnRleHRDb250ZW50ID0gV0kudW5s
b2NhbGl6ZWRTdHJpbmcoImdyaWQiKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgorICAgICAgICAgICAgdGhpcy5f
bGF5b3V0QmFkZ2VFbGVtZW50LnRleHRDb250ZW50ID0gV0kudW5sb2NhbGl6ZWRTdHJpbmcoImZs
ZXgiKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChmYWxzZSwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250
ZXh0VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzKCk7CiAKLSAgICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2dyaWRCYWRnZUNsaWNrZWQuYmlu
ZCh0aGlzKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9ncmlkQmFkZ2VEb3VibGVDbGlja2VkLCB0cnVlKTsK
KyAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fbGF5b3V0QmFkZ2VDbGlja2VkLmJpbmQodGhpcyksIHRydWUpOworICAgICAgICB0
aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlz
Ll9sYXlvdXRCYWRnZURvdWJsZUNsaWNrZWQsIHRydWUpOwogICAgIH0KIAotICAgIF9ncmlkQmFk
Z2VDbGlja2VkKGV2ZW50KQorICAgIF9sYXlvdXRCYWRnZUNsaWNrZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0cmxLZXkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yMDQxLDQ0ICsyMDU3LDQ2IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0g
Y2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICAvLyBE
b24ndCBleHBhbmQgb3IgY29sbGFwc2UgYSB0cmVlIGVsZW1lbnQgd2hlbiBjbGlja2luZyBvbiB0
aGUgZ3JpZCBiYWRnZS4KICAgICAgICAgZXZlbnQuc3RvcCgpOwogCi0gICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLnRvZ2dsZUdyaWRPdmVybGF5KHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIHtpbml0
aWF0b3I6IFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuSW5pdGlhdG9yLkJh
ZGdlfSk7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnRvZ2dsZU92ZXJsYXkodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdCwgeworICAgICAgICAgICAgaW5pdGlhdG9yOiB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBl
LkdyaWQgPyBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvci5C
YWRnZSA6IG51bGwsCisgICAgICAgIH0pOwogICAgIH0KIAotICAgIF9ncmlkQmFkZ2VEb3VibGVD
bGlja2VkKGV2ZW50KQorICAgIF9sYXlvdXRCYWRnZURvdWJsZUNsaWNrZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgfQogCi0gICAgX3VwZGF0ZUdyaWRCYWRnZVN0
YXR1cygpCisgICAgX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzKCkKICAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fZ3JpZEJhZGdlRWxlbWVudCkKKyAgICAgICAgaWYgKCF0aGlzLl9sYXlvdXRCYWRn
ZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGlzR3JpZFZpc2li
bGUgPSBXSS5vdmVybGF5TWFuYWdlci5pc0dyaWRPdmVybGF5VmlzaWJsZSh0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0KTsKLSAgICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudC5jbGFzc0xpc3QudG9n
Z2xlKCJhY3RpdmF0ZWQiLCBpc0dyaWRWaXNpYmxlKTsKKyAgICAgICAgbGV0IGhhc1Zpc2libGVP
dmVybGF5ID0gV0kub3ZlcmxheU1hbmFnZXIuaGFzVmlzaWJsZU92ZXJsYXkodGhpcy5yZXByZXNl
bnRlZE9iamVjdCk7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5jbGFzc0xpc3Qu
dG9nZ2xlKCJhY3RpdmF0ZWQiLCBoYXNWaXNpYmxlT3ZlcmxheSk7CiAKLSAgICAgICAgaWYgKGlz
R3JpZFZpc2libGUpIHsKLSAgICAgICAgICAgIGxldCBjb2xvciA9IFdJLm92ZXJsYXlNYW5hZ2Vy
LmdldEdyaWRDb2xvckZvck5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIGlm
IChoYXNWaXNpYmxlT3ZlcmxheSkgeworICAgICAgICAgICAgbGV0IGNvbG9yID0gV0kub3Zlcmxh
eU1hbmFnZXIuZ2V0Q29sb3JGb3JOb2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAg
ICAgICAgbGV0IGh1ZSA9IGNvbG9yLmhzbFswXTsKLSAgICAgICAgICAgIHRoaXMuX2dyaWRCYWRn
ZUVsZW1lbnQuc3R5bGUuYm9yZGVyQ29sb3IgPSBjb2xvci50b1N0cmluZygpOwotICAgICAgICAg
ICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBgaHNsKCR7
aHVlfSwgOTAlLCA5NSUpYDsKLSAgICAgICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuc3R5
bGUuc2V0UHJvcGVydHkoImNvbG9yIiwgYGhzbCgke2h1ZX0sIDU1JSwgNDAlKWApOworICAgICAg
ICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LnN0eWxlLmJvcmRlckNvbG9yID0gY29sb3Iu
dG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5zdHlsZS5i
YWNrZ3JvdW5kQ29sb3IgPSBgaHNsKCR7aHVlfSwgOTAlLCA5NSUpYDsKKyAgICAgICAgICAgIHRo
aXMuX2xheW91dEJhZGdlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiY29sb3IiLCBgaHNsKCR7
aHVlfSwgNTUlLCA0MCUpYCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5fZ3Jp
ZEJhZGdlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIik7CisgICAgICAgICAgICB0aGlz
Ll9sYXlvdXRCYWRnZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpOwogICAgIH0KIAog
ICAgIF9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICBsZXQgZG9tTm9kZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgaWYgKGRvbU5vZGUubGF5b3V0
Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkgewotICAg
ICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFu
YWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl91cGRhdGVHcmlkQmFkZ2VTdGF0dXMs
IHRoaXMpOwotICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5PdmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheUhpZGRlbiwgdGhpcy5fdXBkYXRlR3Jp
ZEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgaWYgKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5
cGUpIHsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRn
ZVN0YXR1cywgdGhpcyk7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0
ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIu
RXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0aGlz
KTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdyaWRC
YWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5f
dXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5
SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0K
IAotICAgICAgICB0aGlzLl91cGRhdGVHcmlkQmFkZ2UoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRl
TGF5b3V0QmFkZ2UoKTsKICAgICB9CiB9OwogCg==
</data>
<flag name="review"
          id="478379"
          type_id="1"
          status="+"
          setter="pangle"
    />
    <flag name="commit-queue"
          id="478380"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451650</attachid>
            <date>2022-02-10 23:56:43 -0800</date>
            <delta_ts>2022-02-11 00:45:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>37019</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDcyNTI1ZWJkMGJjMy4uODc4NmMyMDhmYzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAyMi0wMi0xMCAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbRmxleGJveF0gU2hvdyBmbGV4IGJhZGdlIG5leHQgdG8gZmxleCBjb250YWluZXJzIGlu
IERPTSBUcmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBQYXRyaWNrIEFuZ2xlLgorCisgICAgICAg
IEVsZW1lbnRzIHdpdGggYGRpc3BsYXk6IGZsZXhgIGFuZCBgZGlzcGxheTogaW5saW5lLWZsZXhg
IHNob3VsZCBpbmNsdWRlIGEgImZsZXgiIGJhZGdlLgorICAgICAgICBDbGlja2luZyB0aGUgYmFk
Z2Ugc2hvdWxkIHRvZ2dsZSB0aGUgb3ZlcmxheSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVu
dC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25m
aWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanM6CisgICAgICAgIChXSS5HcmlkT3Zl
cmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuc2V0dXAp
OgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVj
b3JkZXIucHJvdG90eXBlLnRlYXJkb3duKToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5Q29uZmln
dXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLnByb3RvdHlwZS5faGFuZGxlR3JpZE92ZXJs
YXlTaG93bik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3Zlcmxh
eURpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzOgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlEaWFn
bm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuc2V0dXApOgorICAgICAgICAoV0kuR3JpZE92
ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUudGVhcmRvd24pOgorICAgICAg
ICAoV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuX2hhbmRs
ZUdyaWRPdmVybGF5U2hvd24pOgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZl
bnRSZWNvcmRlcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9PdmVybGF5
TWFuYWdlci5qczoKKyAgICAgICAgKFdJLk92ZXJsYXlNYW5hZ2VyKToKKyAgICAgICAgKFdJLk92
ZXJsYXlNYW5hZ2VyLnByb3RvdHlwZS5zaG93T3ZlcmxheSk6CisgICAgICAgIChXSS5PdmVybGF5
TWFuYWdlci5wcm90b3R5cGUuaGlkZU92ZXJsYXkpOgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFn
ZXIucHJvdG90eXBlLmhhc1Zpc2libGVHcmlkT3ZlcmxheXMpOgorICAgICAgICAoV0kuT3Zlcmxh
eU1hbmFnZXIucHJvdG90eXBlLmhhc1Zpc2libGVPdmVybGF5KToKKyAgICAgICAgKFdJLk92ZXJs
YXlNYW5hZ2VyLnByb3RvdHlwZS50b2dnbGVPdmVybGF5KToKKyAgICAgICAgKFdJLk92ZXJsYXlN
YW5hZ2VyLnByb3RvdHlwZS5nZXRDb2xvckZvck5vZGUpOgorICAgICAgICAoV0kuT3ZlcmxheU1h
bmFnZXIucHJvdG90eXBlLnNldENvbG9yRm9yTm9kZSk6CisgICAgICAgIChXSS5PdmVybGF5TWFu
YWdlci5wcm90b3R5cGUuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCk6CisgICAgICAg
IChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCk6
CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZU1haW5SZXNvdXJj
ZURpZENoYW5nZSk6CisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2hvd0dy
aWRPdmVybGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLk92ZXJsYXlNYW5hZ2VyLnByb3RvdHlw
ZS5oaWRlR3JpZE92ZXJsYXkpOiBEZWxldGVkLgorICAgICAgICAoV0kuT3ZlcmxheU1hbmFnZXIu
cHJvdG90eXBlLmlzR3JpZE92ZXJsYXlWaXNpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLk92
ZXJsYXlNYW5hZ2VyLnByb3RvdHlwZS50b2dnbGVHcmlkT3ZlcmxheSk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuZ2V0R3JpZENvbG9yRm9yTm9kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5PdmVybGF5TWFuYWdlci5wcm90b3R5cGUuc2V0R3JpZENvbG9y
Rm9yTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBncmlkLXNwZWNpZmljIG1ldGhvZHMg
KHN1Y2ggYXMgc2hvd0dyaWRPdmVybGF5KSBhbmQgaW50cm9kdWNlIG1ldGhvZHMgdGhhdCB3b3Jr
IHdpdGgKKyAgICAgICAgYm90aCBHcmlkIGFuZCBGbGV4Ym94IChzdWNoIGFzIHNob3dPdmVybGF5
KS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTR3JpZFNlY3Rpb24uanM6Cisg
ICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbi5wcm90b3R5cGUuYXR0YWNoZWQpOgorICAgICAgICAo
V0kuQ1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLmRldGFjaGVkKToKKyAgICAgICAgKFdJLkNTU0dy
aWRTZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlVG9nZ2xlQWxsQ2hlY2tib3hDaGFuZ2VkKToKKyAg
ICAgICAgKFdJLkNTU0dyaWRTZWN0aW9uLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV0ku
Q1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCk6
CisgICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbi5wcm90b3R5cGUuX3VwZGF0ZVRvZ2dsZUFsbENo
ZWNrYm94KToKKyAgICAgICAgKFdJLkNTU0dyaWRTZWN0aW9uKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC50cmVlLW91dGxpbmUu
ZG9tIC5sYXlvdXQtYmFkZ2UpOgorICAgICAgICAoLnRyZWUtb3V0bGluZS5kb20gLmxheW91dC1i
YWRnZS5hY3RpdmF0ZWQpOgorICAgICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndp
bmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhpbiBsaS5z
ZWxlY3RlZCAubGF5b3V0LWJhZGdlKToKKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIC50cmVlLW91dGxpbmUuZG9tIC5sYXlvdXQtYmFkZ2UpOgorICAgICAgICAo
LnRyZWUtb3V0bGluZS5kb20gLmJhZGdlLWNzcy1ncmlkKTogRGVsZXRlZC4KKyAgICAgICAgKC50
cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1jc3MtZ3JpZC5hY3RpdmF0ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
IC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhpbiBsaS5zZWxlY3RlZCAuYmFkZ2UtY3NzLWdy
aWQpOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgLnRyZWUtb3V0bGluZS5kb20gLmJhZGdlLWNzcy1ncmlkKTogRGVsZXRlZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5E
T01UcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUub25h
dHRhY2gpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGV0YWNoKToK
KyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVUaXRsZSk6CisgICAg
ICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUxheW91dEJhZGdlKToKKyAg
ICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5fbGF5b3V0QmFkZ2VDbGlja2VkKToK
KyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlTGF5b3V0QmFkZ2VT
dGF0dXMpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9oYW5kbGVMYXlv
dXRDb250ZXh0VHlwZUNoYW5nZWQpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlLl91cGRhdGVHcmlkQmFkZ2UpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1l
bnQucHJvdG90eXBlLl9ncmlkQmFkZ2VDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRP
TVRyZWVFbGVtZW50LnByb3RvdHlwZS5fZ3JpZEJhZGdlRG91YmxlQ2xpY2tlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUdyaWRCYWRnZVN0
YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZWQgYF9ncmlkQmFkZ2VFbGVtZW50YCB0byBg
X2xheW91dEJhZGdlRWxlbWVudGAuIFdlIGNhbid0IGhhdmUgYm90aCAiZmxleCIgYW5kICJncmlk
IiBiYWRnZSBvbiB0aGUgc2FtZSBlbGVtZW50LAorICAgICAgICBzbyBJIGNhbGxlZCBpdCAibGF5
b3V0QmFkZ2UiLiBJIGRpZG4ndCBjYWxsIGl0IHNpbXBseSAiYmFkZ2UiIGJlY2F1c2Ugd2UgbWF5
IGhhdmUgb3RoZXIgYmFkZ2VzIGluIHRoZSBmdXR1cmUuCisKIDIwMjItMDItMDMgIE5pa2l0YSBW
YXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
W0ZsZXhib3hdIEFkZCBzZXR0aW5nIHRvIGd1YXJkIEZsZXhib3ggSW5zcGVjdG9yIGZlYXR1cmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJs
YXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKaW5kZXggYjk5NDM4MDk1
YjRiLi4xNmE5ZDg3NTFlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNF
dmVudFJlY29yZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29y
ZGVyLmpzCkBAIC01MSw4ICs1MSw4IEBAIFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdu
b3N0aWNFdmVudFJlY29yZGVyID0gY2xhc3MgR3JpZE92ZXJsYXlDb25maWd1cmF0CiAgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcywgb3B0aW9ucyk7CiAgICAg
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLCBvcHRpb25zKTsK
LSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFu
YWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3du
LCB0aGlzKTsKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5P
dmVybGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92
ZXJsYXlIaWRkZW4sIHRoaXMpOworICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxl
R3JpZE92ZXJsYXlTaG93biwgdGhpcyk7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhpcy5f
aGFuZGxlR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMpOwogICAgIH0KIAogICAgIHRlYXJkb3duKCkK
QEAgLTY0LDE0ICs2NCwxNyBAQCBXSS5HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGlj
RXZlbnRSZWNvcmRlciA9IGNsYXNzIEdyaWRPdmVybGF5Q29uZmlndXJhdAogICAgICAgICB3aW5k
b3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgICB3
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMsIG9wdGlvbnMpOwogICAg
ICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcywgb3B0aW9u
cyk7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3Zl
cmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJs
YXlTaG93biwgdGhpcyk7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX2hh
bmRsZUdyaWRPdmVybGF5SGlkZGVuLCB0aGlzKTsKKyAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24s
IHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOworICAgICAgICBXSS5vdmVybGF5
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJs
YXlIaWRkZW4sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5SGlkZGVuLCB0aGlzKTsKIAogICAgICAg
ICB0aGlzLl9zdG9wRXZlbnRTYW1wbGluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB9CiAKICAgICBf
aGFuZGxlR3JpZE92ZXJsYXlTaG93bihldmVudCkKICAgICB7CisgICAgICAgIGlmIChldmVudC5k
YXRhLmRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4
dFR5cGUuR3JpZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICB0aGlzLl9vdmVybGF5
T3B0aW9ucy5zaG93VHJhY2tTaXplcyA9IGV2ZW50LmRhdGEuc2hvd1RyYWNrU2l6ZXM7CiAgICAg
ICAgIHRoaXMuX292ZXJsYXlPcHRpb25zLnNob3dMaW5lTnVtYmVycyA9IGV2ZW50LmRhdGEuc2hv
d0xpbmVOdW1iZXJzOwogICAgICAgICB0aGlzLl9vdmVybGF5T3B0aW9ucy5zaG93TGluZU5hbWVz
ID0gZXZlbnQuZGF0YS5zaG93TGluZU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZl
bnRSZWNvcmRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0dyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKaW5kZXggNzNjNDc2
MmJhZjQwLi5mZmY5NTk0NWI4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3Jk
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcwpAQCAtMzYsMTggKzM2LDIx
IEBAIFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIgPSBjbGFzcyBHcmlkT3Zl
cmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyCiAKICAgICBzZXR1cCgpCiAgICAgewotICAgICAg
ICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2
ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMp
OworICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlN
YW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93biwg
dGhpcyk7CiAgICAgfQogCiAgICAgdGVhcmRvd24oKQogICAgIHsKLSAgICAgICAgV0kub3Zlcmxh
eU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5Hcmlk
T3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKKyAgICAg
ICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdl
ci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMp
OwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAogICAgIF9oYW5kbGVHcmlkT3ZlcmxheVNob3du
KGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEuZG9tTm9kZS5sYXlvdXRDb250
ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQorICAgICAgICAg
ICAgcmV0dXJuOworCiAgICAgICAgIGxldCBpbml0aWF0b3IgPSBldmVudC5kYXRhLmluaXRpYXRv
cjsKICAgICAgICAgaWYgKCFpbml0aWF0b3IgfHwgIXRoaXMuX2luaXRpYXRvcnMuaW5jbHVkZXMo
aW5pdGlhdG9yKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvT3ZlcmxheU1h
bmFnZXIuanMKaW5kZXggMDJiNzZmMThiNzU3Li4wNzhlMWZhNzFiMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL092ZXJsYXlNYW5hZ2VyLmpzCkBAIC0yOSwxMCArMjksMTEgQEAgV0kuT3ZlcmxheU1hbmFn
ZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAg
ICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9ncmlkT3ZlcmxheUZvck5vZGVNYXAgPSBuZXcg
TWFwOworICAgICAgICB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcCA9IG5ldyBNYXA7CiAgICAgICAg
IHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAwOwotICAgICAgICB0aGlzLl9ncmlk
Q29sb3JGb3JOb2RlTWFwID0gbmV3IFdlYWtNYXA7Ci0gICAgICAgIHRoaXMuX2dyaWRDb2xvclNl
dHRpbmdGb3JOb2RlTWFwID0gbmV3IFdlYWtNYXA7CisgICAgICAgIHRoaXMuX25leHREZWZhdWx0
RmxleENvbG9ySW5kZXggPSAwOworICAgICAgICB0aGlzLl9jb2xvckZvck5vZGVNYXAgPSBuZXcg
V2Vha01hcDsKKyAgICAgICAgdGhpcy5fY29sb3JTZXR0aW5nRm9yTm9kZU1hcCA9IG5ldyBXZWFr
TWFwOwogCiAgICAgICAgIFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0V4dGVuZGVkR3JpZExp
bmVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5k
bGVHcmlkU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwogICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3Zl
cmxheVNob3dMaW5lTmFtZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5n
ZWQsIHRoaXMuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CkBAIC00NCw3ICs0NSw3
IEBAIFdJLk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3ZlcmxheU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAgc2hvd0dyaWRPdmVybGF5KGRvbU5vZGUsIHtj
b2xvciwgaW5pdGlhdG9yfSA9IHt9KQorICAgIHNob3dPdmVybGF5KGRvbU5vZGUsIHtjb2xvciwg
aW5pdGlhdG9yfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWRvbU5vZGUu
ZGVzdHJveWVkLCBkb21Ob2RlKTsKICAgICAgICAgaWYgKGRvbU5vZGUuZGVzdHJveWVkKQpAQCAt
NTIsMTA5ICs1MywxMzMgQEAgV0kuT3ZlcmxheU1hbmFnZXIgPSBjbGFzcyBPdmVybGF5TWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5z
dGFuY2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNv
bG9yIHx8IGNvbG9yIGluc3RhbmNlb2YgV0kuQ29sb3IsIGNvbG9yKTsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRD
b250ZXh0VHlwZS5HcmlkLCBkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlKS5p
bmNsdWRlcyhkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKSwgZG9tTm9kZSk7CiAKLSAgICAgICAg
Y29sb3IgfHw9IHRoaXMuZ2V0R3JpZENvbG9yRm9yTm9kZShkb21Ob2RlKTsKKyAgICAgICAgY29s
b3IgfHw9IHRoaXMuZ2V0Q29sb3JGb3JOb2RlKGRvbU5vZGUpOwogICAgICAgICBsZXQgdGFyZ2V0
ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Ci0gICAgICAgIGxldCBjb21tYW5kQXJndW1lbnRz
ID0gewotICAgICAgICAgICAgbm9kZUlkOiBkb21Ob2RlLmlkLAotICAgICAgICAgICAgZ3JpZENv
bG9yOiBjb2xvci50b1Byb3RvY29sKCksCi0gICAgICAgICAgICBzaG93TGluZU5hbWVzOiBXSS5z
ZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMudmFsdWUsCi0gICAgICAgICAgICBzaG93
TGluZU51bWJlcnM6IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOdW1iZXJzLnZhbHVl
LAotICAgICAgICAgICAgc2hvd0V4dGVuZGVkR3JpZExpbmVzOiBXSS5zZXR0aW5ncy5ncmlkT3Zl
cmxheVNob3dFeHRlbmRlZEdyaWRMaW5lcy52YWx1ZSwKLSAgICAgICAgICAgIHNob3dUcmFja1Np
emVzOiBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dUcmFja1NpemVzLnZhbHVlLAotICAgICAg
ICAgICAgc2hvd0FyZWFOYW1lczogV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93QXJlYU5hbWVz
LnZhbHVlLAotICAgICAgICB9OwotICAgICAgICB0YXJnZXQuRE9NQWdlbnQuc2hvd0dyaWRPdmVy
bGF5Lmludm9rZShjb21tYW5kQXJndW1lbnRzKTsKKyAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVu
dHMgPSB7bm9kZUlkOiBkb21Ob2RlLmlkfTsKKworICAgICAgICBzd2l0Y2ggKGRvbU5vZGUubGF5
b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRU
eXBlLkdyaWQ6CisgICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLmdyaWRDb2xvciA9IGNvbG9y
LnRvUHJvdG9jb2woKTsKKyAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMuc2hvd0xpbmVOYW1l
cyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOYW1lcy52YWx1ZTsKKyAgICAgICAg
ICAgIGNvbW1hbmRBcmd1bWVudHMuc2hvd0xpbmVOdW1iZXJzID0gV0kuc2V0dGluZ3MuZ3JpZE92
ZXJsYXlTaG93TGluZU51bWJlcnMudmFsdWU7CisgICAgICAgICAgICBjb21tYW5kQXJndW1lbnRz
LnNob3dFeHRlbmRlZEdyaWRMaW5lcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0V4dGVu
ZGVkR3JpZExpbmVzLnZhbHVlOworICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5zaG93VHJh
Y2tTaXplcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd1RyYWNrU2l6ZXMudmFsdWU7Cisg
ICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLnNob3dBcmVhTmFtZXMgPSBXSS5zZXR0aW5ncy5n
cmlkT3ZlcmxheVNob3dBcmVhTmFtZXMudmFsdWU7CisgICAgICAgICAgICB0YXJnZXQuRE9NQWdl
bnQuc2hvd0dyaWRPdmVybGF5Lmludm9rZShjb21tYW5kQXJndW1lbnRzKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4
OgorICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5mbGV4Q29sb3IgPSBjb2xvci50b1Byb3Rv
Y29sKCk7CisgICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQuc2hvd0ZsZXhPdmVybGF5Lmludm9r
ZShjb21tYW5kQXJndW1lbnRzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAg
ICAgICAgbGV0IG92ZXJsYXkgPSB7ZG9tTm9kZSwgLi4uY29tbWFuZEFyZ3VtZW50cywgaW5pdGlh
dG9yfTsKIAogICAgICAgICAvLyBUaGUgbWV0aG9kIHRvIHNob3cgdGhlIG92ZXJsYXkgd2lsbCBi
ZSBjYWxsZWQgcmVwZWF0ZWRseSB3aGlsZSB1cGRhdGluZyB0aGUgZ3JpZCBvdmVybGF5IGNvbG9y
LiBBdm9pZCBhZGRpbmcgZHVwbGljYXRlIGV2ZW50IGxpc3RlbmVycwotICAgICAgICBpZiAoIXRo
aXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1hcC5oYXMoZG9tTm9kZSkpCisgICAgICAgIGlmICghdGhp
cy5fb3ZlcmxheUZvck5vZGVNYXAuaGFzKGRvbU5vZGUpKQogICAgICAgICAgICAgZG9tTm9kZS5h
ZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2Vk
LCB0aGlzLl9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogCi0gICAgICAg
IHRoaXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgb3ZlcmxheSk7CisgICAg
ICAgIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBvdmVybGF5KTsKIAotICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5PdmVybGF5TWFuYWdlci5FdmVu
dC5HcmlkT3ZlcmxheVNob3duLCBvdmVybGF5KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCBvdmVybGF5
KTsKICAgICB9CiAKLSAgICBoaWRlR3JpZE92ZXJsYXkoZG9tTm9kZSkKKyAgICBoaWRlT3Zlcmxh
eShkb21Ob2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZSBpbnN0YW5j
ZW9mIFdJLkRPTU5vZGUsIGRvbU5vZGUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghZG9tTm9k
ZS5kZXN0cm95ZWQsIGRvbU5vZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlLmxh
eW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQsIGRv
bU5vZGUubGF5b3V0Q29udGV4dFR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3Qu
dmFsdWVzKFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUpLmluY2x1ZGVzKGRvbU5vZGUubGF5
b3V0Q29udGV4dFR5cGUpLCBkb21Ob2RlKTsKICAgICAgICAgaWYgKGRvbU5vZGUuZGVzdHJveWVk
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBvdmVybGF5ID0gdGhpcy5fZ3Jp
ZE92ZXJsYXlGb3JOb2RlTWFwLnRha2UoZG9tTm9kZSk7CisgICAgICAgIGxldCBvdmVybGF5ID0g
dGhpcy5fb3ZlcmxheUZvck5vZGVNYXAudGFrZShkb21Ob2RlKTsKICAgICAgICAgaWYgKCFvdmVy
bGF5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1
bWluZ01haW5UYXJnZXQoKTsKLSAgICAgICAgdGFyZ2V0LkRPTUFnZW50LmhpZGVHcmlkT3Zlcmxh
eShkb21Ob2RlLmlkKTsKKworICAgICAgICBzd2l0Y2ggKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5
cGUpIHsKKyAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6Cisg
ICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQuaGlkZUdyaWRPdmVybGF5KGRvbU5vZGUuaWQpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRl
eHRUeXBlLkZsZXg6CisgICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQuaGlkZUZsZXhPdmVybGF5
KGRvbU5vZGUuaWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBk
b21Ob2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRDb250ZXh0
VHlwZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcyk7
Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2Vy
LkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCBvdmVybGF5KTsKKyAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwg
b3ZlcmxheSk7CiAgICAgfQogCiAgICAgaGFzVmlzaWJsZUdyaWRPdmVybGF5cygpCiAgICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2RlTWFwLnNpemUgPiAwOworICAg
ICAgICBmb3IgKGxldCBkb21Ob2RlIG9mIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwLmtleXMoKSkg
eworICAgICAgICAgICAgaWYgKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5v
ZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaXNHcmlkT3Zl
cmxheVZpc2libGUoZG9tTm9kZSkKKyAgICBoYXNWaXNpYmxlT3ZlcmxheShkb21Ob2RlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWRPdmVybGF5Rm9yTm9kZU1hcC5oYXMoZG9tTm9k
ZSk7CisgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcC5oYXMoZG9tTm9kZSk7
CiAgICAgfQogCi0gICAgdG9nZ2xlR3JpZE92ZXJsYXkoZG9tTm9kZSwgb3B0aW9ucykKKyAgICB0
b2dnbGVPdmVybGF5KGRvbU5vZGUsIG9wdGlvbnMpCiAgICAgewotICAgICAgICBpZiAodGhpcy5p
c0dyaWRPdmVybGF5VmlzaWJsZShkb21Ob2RlKSkKLSAgICAgICAgICAgIHRoaXMuaGlkZUdyaWRP
dmVybGF5KGRvbU5vZGUpOworICAgICAgICBpZiAodGhpcy5oYXNWaXNpYmxlT3ZlcmxheShkb21O
b2RlKSkKKyAgICAgICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoZG9tTm9kZSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXMuc2hvd0dyaWRPdmVybGF5KGRvbU5vZGUsIG9wdGlvbnMpOwor
ICAgICAgICAgICAgdGhpcy5zaG93T3ZlcmxheShkb21Ob2RlLCBvcHRpb25zKTsKICAgICB9CiAK
LSAgICBnZXRHcmlkQ29sb3JGb3JOb2RlKGRvbU5vZGUpCisgICAgZ2V0Q29sb3JGb3JOb2RlKGRv
bU5vZGUpCiAgICAgewotICAgICAgICBsZXQgY29sb3IgPSB0aGlzLl9ncmlkQ29sb3JGb3JOb2Rl
TWFwLmdldChkb21Ob2RlKTsKKyAgICAgICAgbGV0IGNvbG9yID0gdGhpcy5fY29sb3JGb3JOb2Rl
TWFwLmdldChkb21Ob2RlKTsKICAgICAgICAgaWYgKGNvbG9yKQogICAgICAgICAgICAgcmV0dXJu
IGNvbG9yOwogCi0gICAgICAgIGNvbnN0IGRlZmF1bHRHcmlkSFNMQ29sb3JzID0gWwotICAgICAg
ICAgICAgWzMyOSwgOTEsIDcwXSwKLSAgICAgICAgICAgIFsyMDcsIDk2LCA2OV0sCi0gICAgICAg
ICAgICBbOTIsIDkwLCA2NF0sCi0gICAgICAgICAgICBbMjkxLCA3MywgNjhdLAotICAgICAgICAg
ICAgWzQwLCA5NywgNTddLAotICAgICAgICBdOwotCi0gICAgICAgIGxldCBjb2xvclNldHRpbmcg
PSB0aGlzLl9ncmlkQ29sb3JTZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9tTm9kZSk7CisgICAgICAg
IGxldCBjb2xvclNldHRpbmcgPSB0aGlzLl9jb2xvclNldHRpbmdGb3JOb2RlTWFwLmdldChkb21O
b2RlKTsKICAgICAgICAgaWYgKCFjb2xvclNldHRpbmcpIHsKLSAgICAgICAgICAgIGxldCBkZWZh
dWx0Q29sb3IgPSBkZWZhdWx0R3JpZEhTTENvbG9yc1t0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xv
ckluZGV4XTsKLSAgICAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAo
dGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleCArIDEpICUgZGVmYXVsdEdyaWRIU0xDb2xv
cnMubGVuZ3RoOworICAgICAgICAgICAgbGV0IG5leHRDb2xvckluZGV4OworICAgICAgICAgICAg
c3dpdGNoIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKSB7CisgICAgICAgICAgICBjYXNlIFdJ
LkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAgICAgICAgICAgICAgICBuZXh0Q29s
b3JJbmRleCA9IHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXg7CisgICAgICAgICAgICAg
ICAgdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleCA9IChuZXh0Q29sb3JJbmRleCArIDEp
ICUgV0kuT3ZlcmxheU1hbmFnZXIuX2RlZmF1bHRIU0xDb2xvcnMubGVuZ3RoOworICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4
dFR5cGUuRmxleDoKKyAgICAgICAgICAgICAgICBuZXh0Q29sb3JJbmRleCA9IHRoaXMuX25leHRE
ZWZhdWx0RmxleENvbG9ySW5kZXg7CisgICAgICAgICAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRG
bGV4Q29sb3JJbmRleCA9IChuZXh0Q29sb3JJbmRleCArIDEpICUgV0kuT3ZlcmxheU1hbmFnZXIu
X2RlZmF1bHRIU0xDb2xvcnMubGVuZ3RoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbGV0IGRlZmF1bHRDb2xvciA9IFdJLk92ZXJsYXlNYW5hZ2Vy
Ll9kZWZhdWx0SFNMQ29sb3JzW25leHRDb2xvckluZGV4XTsKIAogICAgICAgICAgICAgbGV0IHVy
bCA9IGRvbU5vZGUub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCB8fCBXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWUudXJsOwotICAgICAgICAgICAgY29sb3JTZXR0aW5nID0gbmV3IFdJLlNldHRp
bmcoYGdyaWQtb3ZlcmxheS1jb2xvci0ke3VybC5oYXNofS0ke2RvbU5vZGUucGF0aCgpLmhhc2h9
YCwgZGVmYXVsdENvbG9yKTsKLSAgICAgICAgICAgIHRoaXMuX2dyaWRDb2xvclNldHRpbmdGb3JO
b2RlTWFwLnNldChkb21Ob2RlLCBjb2xvclNldHRpbmcpOworICAgICAgICAgICAgY29sb3JTZXR0
aW5nID0gbmV3IFdJLlNldHRpbmcoYG92ZXJsYXktY29sb3ItJHt1cmwuaGFzaH0tJHtkb21Ob2Rl
LnBhdGgoKS5oYXNofWAsIGRlZmF1bHRDb2xvcik7CisgICAgICAgICAgICB0aGlzLl9jb2xvclNl
dHRpbmdGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBjb2xvclNldHRpbmcpOwogICAgICAgICB9CiAK
ICAgICAgICAgY29sb3IgPSBuZXcgV0kuQ29sb3IoV0kuQ29sb3IuRm9ybWF0LkhTTCwgY29sb3JT
ZXR0aW5nLnZhbHVlKTsKLSAgICAgICAgdGhpcy5fZ3JpZENvbG9yRm9yTm9kZU1hcC5zZXQoZG9t
Tm9kZSwgY29sb3IpOworICAgICAgICB0aGlzLl9jb2xvckZvck5vZGVNYXAuc2V0KGRvbU5vZGUs
IGNvbG9yKTsKIAogICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgfQogCi0gICAgc2V0R3JpZENv
bG9yRm9yTm9kZShkb21Ob2RlLCBjb2xvcikKKyAgICBzZXRDb2xvckZvck5vZGUoZG9tTm9kZSwg
Y29sb3IpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlIGluc3RhbmNlb2Yg
V0kuRE9NTm9kZSwgZG9tTm9kZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbG9yIGluc3Rh
bmNlb2YgV0kuQ29sb3IsIGNvbG9yKTsKIAotICAgICAgICBsZXQgY29sb3JTZXR0aW5nID0gdGhp
cy5fZ3JpZENvbG9yU2V0dGluZ0Zvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOwotICAgICAgICBjb25z
b2xlLmFzc2VydChjb2xvclNldHRpbmcsICJUaGVyZSBzaG91bGQgYWxyZWFkeSBiZSBhIHNldHRp
bmcgY3JlYXRlZCBmb3JtIGEgcHJldmlvdXMgY2FsbCB0byBnZXRHcmlkQ29sb3JGb3JOb2RlKCki
KTsKKyAgICAgICAgbGV0IGNvbG9yU2V0dGluZyA9IHRoaXMuX2NvbG9yU2V0dGluZ0Zvck5vZGVN
YXAuZ2V0KGRvbU5vZGUpOworICAgICAgICBjb25zb2xlLmFzc2VydChjb2xvclNldHRpbmcsICJU
aGVyZSBzaG91bGQgYWxyZWFkeSBiZSBhIHNldHRpbmcgY3JlYXRlZCBmb3JtIGEgcHJldmlvdXMg
Y2FsbCB0byBnZXRDb2xvckZvck5vZGUoKSIpOwogICAgICAgICBjb2xvclNldHRpbmcudmFsdWUg
PSBjb2xvci5oc2w7CiAKLSAgICAgICAgdGhpcy5fZ3JpZENvbG9yRm9yTm9kZU1hcC5zZXQoZG9t
Tm9kZSwgY29sb3IpOworICAgICAgICB0aGlzLl9jb2xvckZvck5vZGVNYXAuc2V0KGRvbU5vZGUs
IGNvbG9yKTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCkBAIC0xNjIsMjAgKzE4NywyMCBAQCBX
SS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAg
ICAgIGxldCBkb21Ob2RlID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChk
b21Ob2RlLmxheW91dENvbnRleHRUeXBlICE9PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBl
LkdyaWQsIGRvbU5vZGUpOwogCiAgICAgICAgIGRvbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5ET01Ob2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5
b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsKIAotICAgICAgICAvLyBXaGVuIHRoZSBjb250
ZXh0IHR5cGUgY2hhbmdlcywgdGhlIG92ZXJsYXkgaXMgYXV0b21hdGljYWxseSBoaWRkZW4gb24g
dGhlIGJhY2tlbmQuIEhlcmUsIHdlIG9ubHkgdXBkYXRlIHRoZSBtYXAgYW5kIG5vdGlmeSBsaXN0
ZW5lcnMuCi0gICAgICAgIGxldCBvdmVybGF5ID0gdGhpcy5fZ3JpZE92ZXJsYXlGb3JOb2RlTWFw
LnRha2UoZG9tTm9kZSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
Lk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCBvdmVybGF5KTsKKyAgICAg
ICAgLy8gV2hlbiB0aGUgY29udGV4dCB0eXBlIGNoYW5nZXMsIHRoZSBvdmVybGF5IGlzIGF1dG9t
YXRpY2FsbHkgaGlkZGVuIG9uIHRoZSBiYWNrZW5kIChldmVuIGlmIGl0IGNoYW5nZXMgZnJvbSBH
cmlkIHRvIEZsZXgsIG9yIHZpY2UtdmVyc2EpLgorICAgICAgICAvLyBIZXJlLCB3ZSBvbmx5IHVw
ZGF0ZSB0aGUgbWFwIGFuZCBub3RpZnkgbGlzdGVuZXJzLgorICAgICAgICBsZXQgb3ZlcmxheSA9
IHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwLnRha2UoZG9tTm9kZSk7CisgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRk
ZW4sIG92ZXJsYXkpOwogICAgIH0KIAogICAgIF9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQoZXZl
bnQpCiAgICAgewotICAgICAgICBmb3IgKGxldCBbZG9tTm9kZSwgb3ZlcmxheV0gb2YgdGhpcy5f
Z3JpZE92ZXJsYXlGb3JOb2RlTWFwKSB7Ci0gICAgICAgICAgICAvLyBSZWZyZXNoIGFsbCBzaG93
biBvdmVybGF5cy4gTGF0ZXN0IHNldHRpbmdzIHZhbHVlcyB3aWxsIGJlIHVzZWQuCi0gICAgICAg
ICAgICB0aGlzLnNob3dHcmlkT3ZlcmxheShkb21Ob2RlLCB7Y29sb3I6IG92ZXJsYXkuY29sb3Is
IGluaXRpYXRvcjogb3ZlcmxheS5pbml0aWF0b3J9KTsKKyAgICAgICAgZm9yIChsZXQgW2RvbU5v
ZGUsIG92ZXJsYXldIG9mIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwKSB7CisgICAgICAgICAgICBp
ZiAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0
VHlwZS5HcmlkKQorICAgICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoZG9tTm9kZSwge2Nv
bG9yOiBvdmVybGF5LmNvbG9yLCBpbml0aWF0b3I6IG92ZXJsYXkuaW5pdGlhdG9yfSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTE5MSwxMCArMjE2LDE5IEBAIFdJLk92ZXJsYXlNYW5hZ2VyID0g
Y2xhc3MgT3ZlcmxheU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8KICAgICAg
ICAgLy8gYGRvbU5vZGUuaWRgIGlzIGRpZmZlcmVudCBmb3IgdGhlIHNhbWUgRE9NIGVsZW1lbnQg
YWZ0ZXIgcGFnZSByZWxvYWQuCiAgICAgICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5k
ZXggPSAwOworICAgICAgICB0aGlzLl9uZXh0RGVmYXVsdEZsZXhDb2xvckluZGV4ID0gMDsKICAg
ICB9CiB9OwogCitXSS5PdmVybGF5TWFuYWdlci5fZGVmYXVsdEhTTENvbG9ycyA9IFsKKyAgICBb
MzI5LCA5MSwgNzBdLAorICAgIFsyMDcsIDk2LCA2OV0sCisgICAgWzkyLCA5MCwgNjRdLAorICAg
IFsyOTEsIDczLCA2OF0sCisgICAgWzQwLCA5NywgNTddLAorXTsKKwogV0kuT3ZlcmxheU1hbmFn
ZXIuRXZlbnQgPSB7Ci0gICAgR3JpZE92ZXJsYXlTaG93bjogIm92ZXJsYXktbWFuYWdlci1ncmlk
LW92ZXJsYXktc2hvd24iLAotICAgIEdyaWRPdmVybGF5SGlkZGVuOiAib3ZlcmxheS1tYW5hZ2Vy
LWdyaWQtb3ZlcmxheS1oaWRkZW4iLAorICAgIE92ZXJsYXlTaG93bjogIm92ZXJsYXktbWFuYWdl
ci1vdmVybGF5LXNob3duIiwKKyAgICBPdmVybGF5SGlkZGVuOiAib3ZlcmxheS1tYW5hZ2VyLW92
ZXJsYXktaGlkZGVuIiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NHcmlkU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU0dyaWRTZWN0aW9uLmpzCmluZGV4IDE2NDM4MDFkNTQ4
MC4uNjRjNmU4Zjg2ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DU1NHcmlkU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NHcmlkU2VjdGlvbi5qcwpAQCAtNTMsMTQgKzUzLDE0
IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3MgQ1NTR3JpZFNlY3Rpb24gZXh0ZW5kcyBXSS5W
aWV3CiAgICAgewogICAgICAgICBzdXBlci5hdHRhY2hlZCgpOwogCi0gICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92
ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOwot
ICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5h
Z2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRl
Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlk
T3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhp
cy5faGFuZGxlR3JpZE92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOwogICAgIH0KIAogICAgIGRl
dGFjaGVkKCkKICAgICB7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5faGFu
ZGxlR3JpZE92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5vdmVybGF5TWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVy
bGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1h
bmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hh
bmdlZCwgdGhpcyk7CisgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3Jp
ZE92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgIHN1cGVyLmRldGFjaGVkKCk7
CiAgICAgfQpAQCAtOTksOSArOTksOSBAQCBXSS5DU1NHcmlkU2VjdGlvbiA9IGNsYXNzIENTU0dy
aWRTZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9zdXBwcmVzc1VwZGF0ZVRv
Z2dsZUFsbENoZWNrYm94ID0gdHJ1ZTsKICAgICAgICAgZm9yIChsZXQgZG9tTm9kZSBvZiB0aGlz
Ll9ncmlkTm9kZVNldCkgewogICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCkKLSAgICAgICAgICAg
ICAgICBXSS5vdmVybGF5TWFuYWdlci5zaG93R3JpZE92ZXJsYXkoZG9tTm9kZSwge2luaXRpYXRv
cjogV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0b3IuUGFuZWx9
KTsKKyAgICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zaG93T3ZlcmxheShkb21Ob2Rl
LCB7aW5pdGlhdG9yOiBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRp
YXRvci5QYW5lbH0pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLmhpZGVHcmlkT3ZlcmxheShkb21Ob2RlKTsKKyAgICAgICAgICAgICAgICBXSS5v
dmVybGF5TWFuYWdlci5oaWRlT3ZlcmxheShkb21Ob2RlKTsKICAgICAgICAgfQogICAgICAgICB0
aGlzLl9zdXBwcmVzc1VwZGF0ZVRvZ2dsZUFsbENoZWNrYm94ID0gZmFsc2U7CiAgICAgfQpAQCAt
MTIwLDcgKzEyMCw3IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3MgQ1NTR3JpZFNlY3Rpb24g
ZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICBsZXQgbGFiZWxFbGVtZW50ID0gaXRlbUNvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7
CiAgICAgICAgICAgICBsZXQgY2hlY2tib3hFbGVtZW50ID0gbGFiZWxFbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpOwogICAgICAgICAgICAgY2hlY2ti
b3hFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOwotICAgICAgICAgICAgY2hlY2tib3hFbGVtZW50
LmNoZWNrZWQgPSBXSS5vdmVybGF5TWFuYWdlci5pc0dyaWRPdmVybGF5VmlzaWJsZShkb21Ob2Rl
KTsKKyAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2VkID0gV0kub3ZlcmxheU1hbmFn
ZXIuaGFzVmlzaWJsZU92ZXJsYXkoZG9tTm9kZSk7CiAKICAgICAgICAgICAgIGNvbnN0IG5vZGVE
aXNwbGF5TmFtZSA9IGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIikpOwogICAgICAgICAgICAgbm9kZURpc3BsYXlOYW1lLmNsYXNzTGlzdC5hZGQo
Im5vZGUtZGlzcGxheS1uYW1lIik7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBXSS5DU1NHcmlkU2Vj
dGlvbiA9IGNsYXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAgICAg
ICBjaGVja2JveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGV2ZW50KSA9PiB7
CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrYm94RWxlbWVudC5jaGVja2VkKQotICAgICAgICAg
ICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zaG93R3JpZE92ZXJsYXkoZG9tTm9kZSwge2Nv
bG9yOiBzd2F0Y2gudmFsdWUsIGluaXRpYXRvcjogV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZl
bnRSZWNvcmRlci5Jbml0aWF0b3IuUGFuZWx9KTsKKyAgICAgICAgICAgICAgICAgICAgV0kub3Zl
cmxheU1hbmFnZXIuc2hvd092ZXJsYXkoZG9tTm9kZSwge2NvbG9yOiBzd2F0Y2gudmFsdWUsIGlu
aXRpYXRvcjogV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0b3Iu
UGFuZWx9KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFdJLm92
ZXJsYXlNYW5hZ2VyLmhpZGVHcmlkT3ZlcmxheShkb21Ob2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgV0kub3ZlcmxheU1hbmFnZXIuaGlkZU92ZXJsYXkoZG9tTm9kZSk7CiAgICAgICAgICAgICB9
KTsKIAotICAgICAgICAgICAgbGV0IGdyaWRDb2xvciA9IFdJLm92ZXJsYXlNYW5hZ2VyLmdldEdy
aWRDb2xvckZvck5vZGUoZG9tTm9kZSk7CisgICAgICAgICAgICBsZXQgZ3JpZENvbG9yID0gV0ku
b3ZlcmxheU1hbmFnZXIuZ2V0Q29sb3JGb3JOb2RlKGRvbU5vZGUpOwogICAgICAgICAgICAgbGV0
IHN3YXRjaCA9IG5ldyBXSS5JbmxpbmVTd2F0Y2goV0kuSW5saW5lU3dhdGNoLlR5cGUuQ29sb3Is
IGdyaWRDb2xvcik7CiAgICAgICAgICAgICBzd2F0Y2guc2hpZnRDbGlja0NvbG9yRW5hYmxlZCA9
IGZhbHNlOwogICAgICAgICAgICAgaXRlbUNvbnRhaW5lckVsZW1lbnQuYXBwZW5kKHN3YXRjaC5l
bGVtZW50KTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBXSS5DU1NHcmlkU2VjdGlvbiA9IGNsYXNzIENT
U0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAgIGlmIChjaGVja2Jv
eEVsZW1lbnQuY2hlY2tlZCkKICAgICAgICAgICAgICAgICAgICAgLy8gV2hpbGUgY2hhbmdpbmcg
dGhlIG92ZXJsYXkgY29sb3IsIFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hv
d24gaXMgZGlzcGF0Y2hlZCB3aXRoIGhpZ2ggZnJlcXVlbmN5LgogICAgICAgICAgICAgICAgICAg
ICAvLyBBbiBpbml0aWF0b3IgaXMgbm90IHByb3ZpZGVkIHNvIGFzIG5vdCB0byBza2V3IHVzYWdl
IGNvdW50IG9mIG92ZXJsYXkgb3B0aW9ucyB3aGVuIGxvZ2dpbmcgZGlhZ25vc3RpY3MgaW4gV0ku
R3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci4KLSAgICAgICAgICAgICAgICAgICAg
V0kub3ZlcmxheU1hbmFnZXIuc2hvd0dyaWRPdmVybGF5KGRvbU5vZGUsIHtjb2xvcjogZXZlbnQu
ZGF0YS52YWx1ZX0pOworICAgICAgICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zaG93
T3ZlcmxheShkb21Ob2RlLCB7Y29sb3I6IGV2ZW50LmRhdGEudmFsdWV9KTsKICAgICAgICAgICAg
IH0sIHN3YXRjaCk7CiAKICAgICAgICAgICAgIHN3YXRjaC5hZGRFdmVudExpc3RlbmVyKFdJLklu
bGluZVN3YXRjaC5FdmVudC5EZWFjdGl2YXRlZCwgKGV2ZW50KSA9PiB7CkBAIC0xNTIsNyArMTUy
LDcgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBjbGFzcyBDU1NHcmlkU2VjdGlvbiBleHRlbmRzIFdJ
LlZpZXcKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgZ3Jp
ZENvbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlOwotICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlN
YW5hZ2VyLnNldEdyaWRDb2xvckZvck5vZGUoZG9tTm9kZSwgZ3JpZENvbG9yKTsKKyAgICAgICAg
ICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zZXRDb2xvckZvck5vZGUoZG9tTm9kZSwgZ3JpZENv
bG9yKTsKICAgICAgICAgICAgIH0sIHN3YXRjaCk7CiAKICAgICAgICAgICAgIGxldCBidXR0b25F
bGVtZW50ID0gaXRlbUNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoV0kuY3JlYXRlR29Ub0Fy
cm93QnV0dG9uKCkpOwpAQCAtMTY3LDExICsxNjcsMTQgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBj
bGFzcyBDU1NHcmlkU2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKIAogICAgIF9oYW5kbGVHcmlkT3Zl
cmxheVN0YXRlQ2hhbmdlZChldmVudCkKICAgICB7CisgICAgICAgIGlmIChldmVudC5kYXRhLmRv
bU5vZGUubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUu
R3JpZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBsZXQgY2hlY2tib3hFbGVtZW50
ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50QnlOb2RlTWFwLmdldChldmVudC5kYXRhLmRvbU5vZGUp
OwogICAgICAgICBpZiAoIWNoZWNrYm94RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGV2ZW50LnR5cGUgPT09IFdJLk92ZXJs
YXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5U2hvd247CisgICAgICAgIGNoZWNrYm94RWxlbWVu
dC5jaGVja2VkID0gZXZlbnQudHlwZSA9PT0gV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zlcmxh
eVNob3duOwogICAgICAgICB0aGlzLl91cGRhdGVUb2dnbGVBbGxDaGVja2JveCgpOwogICAgIH0K
IApAQCAtMTgzLDcgKzE4Niw3IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3MgQ1NTR3JpZFNl
Y3Rpb24gZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGxldCBoYXNWaXNpYmxlID0gZmFsc2U7CiAg
ICAgICAgIGxldCBoYXNIaWRkZW4gPSBmYWxzZTsKICAgICAgICAgZm9yIChsZXQgZG9tTm9kZSBv
ZiB0aGlzLl9ncmlkTm9kZVNldCkgewotICAgICAgICAgICAgbGV0IGlzVmlzaWJsZSA9IFdJLm92
ZXJsYXlNYW5hZ2VyLmlzR3JpZE92ZXJsYXlWaXNpYmxlKGRvbU5vZGUpOworICAgICAgICAgICAg
bGV0IGlzVmlzaWJsZSA9IFdJLm92ZXJsYXlNYW5hZ2VyLmhhc1Zpc2libGVPdmVybGF5KGRvbU5v
ZGUpOwogICAgICAgICAgICAgaWYgKGlzVmlzaWJsZSkKICAgICAgICAgICAgICAgICBoYXNWaXNp
YmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzcwppbmRl
eCAxOWQ2NDc1MWEwY2QuLjExODA3N2M5OWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmNzcwpA
QCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLS50cmVlLW91dGxpbmUuZG9tIC5iYWRnZS1jc3MtZ3JpZCB7CisudHJlZS1vdXRsaW5lLmRv
bSAubGF5b3V0LWJhZGdlIHsKICAgICAvKiBVc2luZyBzYW5zLXNlcmlmIFNhbiBGcmFuY2lzY28g
Zm9udCBoZXJlIGNyZWF0ZXMgYSBiYWRnZSAxcHggdGFsbGVyIHRoYW4gdGhlIHNlbGVjdGVkCiAg
ICAgYXJlYS4gVXNlIHRoZSBzYW1lIG1vbm9zcGFjZSBmb250IGFzIHRoZSByZXN0IG9mIHRoZSBE
T00gdHJlZSBvdXRsaW5lLiAqLwogCkBAIC0zOCwxOSArMzgsMTkgQEAKICAgICBib3gtc2hhZG93
OiAwIDAgMXB4IGhzbGEoMCwgMCUsIDAlLCAwLjUpOwogfQogCi0udHJlZS1vdXRsaW5lLmRvbSAu
YmFkZ2UtY3NzLWdyaWQuYWN0aXZhdGVkIHsKKy50cmVlLW91dGxpbmUuZG9tIC5sYXlvdXQtYmFk
Z2UuYWN0aXZhdGVkIHsKICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nbHlwaC1jb2xvci1hY3RpdmUp
OwogICAgIGNvbG9yOiB3aGl0ZTsKIH0KIAotYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndp
bmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhpbiBsaS5z
ZWxlY3RlZCAuYmFkZ2UtY3NzLWdyaWQgeworYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndp
bmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmUuZG9tOmZvY3VzLXdpdGhpbiBsaS5z
ZWxlY3RlZCAubGF5b3V0LWJhZGdlIHsKICAgICAvKiBPdmVycmlkZSBgbGkuc2VsZWN0ZWQgKiB7
Y29sb3I6IGluaGVyaXRlZH1gIGZyb20gRE9NVHJlZU91dGxpbmUuY3NzICovCiAgICAgY29sb3I6
IHZhcigtLXRleHQtY29sb3IpOwogfQogCiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIHsKLSAgICAudHJlZS1vdXRsaW5lLmRvbSAuYmFkZ2UtY3NzLWdyaWQgeworICAgIC50
cmVlLW91dGxpbmUuZG9tIC5sYXlvdXQtYmFkZ2UgewogICAgICAgICBiYWNrZ3JvdW5kOiBoc2xh
KDAsIDAlLCAzMCUsIDAuOCk7CiAgICAgICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAwJSwgMTAw
JSwgMC4xKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IDBkYTRhM2QyZjg2MC4u
MWI1YjdlMjNiMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAtNTEsNyArNTEsNyBAQCBX
SS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVs
ZW1lbnQKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRBdHRyaWJ1dGVzID0gbmV3IFNldDsKICAg
ICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmllZEF0dHJpYnV0ZXMgPSBuZXcgTWFwOwogICAgICAg
ICB0aGlzLl9jbG9zZVRhZ1RyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fZ3JpZEJh
ZGdlRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudCA9IG51
bGw7CiAKICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuRW5h
YmxlZFBzZXVkb0NsYXNzZXNDaGFuZ2VkLCB0aGlzLl91cGRhdGVQc2V1ZG9DbGFzc0luZGljYXRv
ciwgdGhpcyk7CiAKQEAgLTQ0NCwyMCArNDQ0LDIwIEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xh
c3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcyk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250
ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKSB7Ci0gICAgICAg
ICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2Vy
LkV2ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhp
cyk7Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92
ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVHcmlkQmFk
Z2VTdGF0dXMsIHRoaXMpOworICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlv
dXRDb250ZXh0VHlwZSkgeworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0
ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwg
dGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50
LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29udGV4dFR5cGVD
aGFuZ2VkLCB0aGlzKTsKIAotICAgICAgICB0aGlzLl91cGRhdGVHcmlkQmFkZ2UoKTsKKyAgICAg
ICAgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2UoKTsKICAgICB9CiAKICAgICBvbmRldGFjaCgpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlw
ZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKSB7Ci0gICAgICAgICAgICBX
SS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2
ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7
Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92
ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVHcmlkQmFk
Z2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX3Vw
ZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhp
ZGRlbiwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01O
b2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29u
dGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsKICAgICB9CkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBXSS5E
T01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1l
bnQKICAgICAgICAgICAgIHRoaXMudGl0bGUuYXBwZW5kQ2hpbGQodGhpcy5fbm9kZVRpdGxlSW5m
bygpLnRpdGxlRE9NKTsKICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFJlc3VsdCA9IHVuZGVm
aW5lZDsKICAgICAgICAgfQotICAgICAgICB0aGlzLl91cGRhdGVHcmlkQmFkZ2UoKTsKKyAgICAg
ICAgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2UoKTsKIAogICAgICAgICAvLyBTZXR0aW5nIHRoaXMu
dGl0bGUgd2lsbCBpbXBsaWNpdGx5IHJlbW92ZSBhbGwgY2hpbGRyZW4uIENsZWFyIHRoZQogICAg
ICAgICAvLyBzZWxlY3Rpb24gZWxlbWVudCBzbyB0aGF0IHdlIHByb3Blcmx5IHJlY3JlYXRlIGl0
IGlmIG5lY2Vzc2FyeS4KQEAgLTIwMTAsMzAgKzIwMTAsNDYgQEAgV0kuRE9NVHJlZUVsZW1lbnQg
PSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIHRo
aXMuX2FuaW1hdGluZ0hpZ2hsaWdodCA9IGZhbHNlOwogICAgIH0KIAotICAgIF91cGRhdGVHcmlk
QmFkZ2UoKQorICAgIF91cGRhdGVMYXlvdXRCYWRnZSgpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMubGlzdEl0ZW1FbGVtZW50IHx8IHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5fZ3JpZEJhZGdlRWxlbWVudCkgewotICAgICAg
ICAgICAgdGhpcy5fZ3JpZEJhZGdlRWxlbWVudC5yZW1vdmUoKTsKLSAgICAgICAgICAgIHRoaXMu
X2dyaWRCYWRnZUVsZW1lbnQgPSBudWxsOworICAgICAgICBpZiAodGhpcy5fbGF5b3V0QmFkZ2VF
bGVtZW50KSB7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQucmVtb3ZlKCk7
CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUg
IT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkKKyAgICAgICAgaWYgKCF0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENvbnRleHRUeXBlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENvbnRleHRUeXBl
ID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkZsZXggJiYgIVdJLnNldHRpbmdzLmVu
Z2luZWVyaW5nRW5hYmxlRmxleGJveEluc3BlY3Rvci52YWx1ZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LmNsYXNzTmFtZSA9
ICJiYWRnZS1jc3MtZ3JpZCI7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQudGV4dENv
bnRlbnQgPSBXSS51bmxvY2FsaXplZFN0cmluZygiZ3JpZCIpOwotICAgICAgICB0aGlzLl91cGRh
dGVHcmlkQmFkZ2VTdGF0dXMoKTsKLSAgICAgICAgdGhpcy50aXRsZS5hcHBlbmQodGhpcy5fZ3Jp
ZEJhZGdlRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudCA9IHRoaXMu
dGl0bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKKyAgICAg
ICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LmNsYXNzTmFtZSA9ICJsYXlvdXQtYmFkZ2UiOwor
CisgICAgICAgIHN3aXRjaCAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlw
ZSkgeworICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAg
ICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC50ZXh0Q29udGVudCA9IFdJLnVubG9j
YWxpemVkU3RyaW5nKCJncmlkIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleDoKKyAgICAgICAgICAgIHRoaXMuX2xh
eW91dEJhZGdlRWxlbWVudC50ZXh0Q29udGVudCA9IFdJLnVubG9jYWxpemVkU3RyaW5nKCJmbGV4
Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZmFsc2UsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4
dFR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl91
cGRhdGVMYXlvdXRCYWRnZVN0YXR1cygpOwogCi0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ncmlkQmFkZ2VDbGlja2VkLmJpbmQo
dGhpcyksIHRydWUpOwotICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZ3JpZEJhZGdlRG91YmxlQ2xpY2tlZCwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2xheW91dEJhZGdlQ2xpY2tlZC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAgICAgdGhp
cy5fbGF5b3V0QmFkZ2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5f
bGF5b3V0QmFkZ2VEb3VibGVDbGlja2VkLCB0cnVlKTsKICAgICB9CiAKLSAgICBfZ3JpZEJhZGdl
Q2xpY2tlZChldmVudCkKKyAgICBfbGF5b3V0QmFkZ2VDbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjA0MSw0NCArMjA1Nyw0NiBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNs
YXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgLy8gRG9u
J3QgZXhwYW5kIG9yIGNvbGxhcHNlIGEgdHJlZSBlbGVtZW50IHdoZW4gY2xpY2tpbmcgb24gdGhl
IGdyaWQgYmFkZ2UuCiAgICAgICAgIGV2ZW50LnN0b3AoKTsKIAotICAgICAgICBXSS5vdmVybGF5
TWFuYWdlci50b2dnbGVHcmlkT3ZlcmxheSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlh
dG9yOiBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvci5CYWRn
ZX0pOworICAgICAgICBXSS5vdmVybGF5TWFuYWdlci50b2dnbGVPdmVybGF5KHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QsIHsKKyAgICAgICAgICAgIGluaXRpYXRvcjogdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5H
cmlkID8gV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0b3IuQmFk
Z2UgOiBudWxsLAorICAgICAgICB9KTsKICAgICB9CiAKLSAgICBfZ3JpZEJhZGdlRG91YmxlQ2xp
Y2tlZChldmVudCkKKyAgICBfbGF5b3V0QmFkZ2VEb3VibGVDbGlja2VkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgIH0KIAotICAgIF91cGRhdGVHcmlkQmFkZ2VTdGF0
dXMoKQorICAgIF91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cygpCiAgICAgewotICAgICAgICBpZiAo
IXRoaXMuX2dyaWRCYWRnZUVsZW1lbnQpCisgICAgICAgIGlmICghdGhpcy5fbGF5b3V0QmFkZ2VF
bGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBpc0dyaWRWaXNpYmxl
ID0gV0kub3ZlcmxheU1hbmFnZXIuaXNHcmlkT3ZlcmxheVZpc2libGUodGhpcy5yZXByZXNlbnRl
ZE9iamVjdCk7Ci0gICAgICAgIHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2ds
ZSgiYWN0aXZhdGVkIiwgaXNHcmlkVmlzaWJsZSk7CisgICAgICAgIGxldCBoYXNWaXNpYmxlT3Zl
cmxheSA9IFdJLm92ZXJsYXlNYW5hZ2VyLmhhc1Zpc2libGVPdmVybGF5KHRoaXMucmVwcmVzZW50
ZWRPYmplY3QpOworICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuY2xhc3NMaXN0LnRv
Z2dsZSgiYWN0aXZhdGVkIiwgaGFzVmlzaWJsZU92ZXJsYXkpOwogCi0gICAgICAgIGlmIChpc0dy
aWRWaXNpYmxlKSB7Ci0gICAgICAgICAgICBsZXQgY29sb3IgPSBXSS5vdmVybGF5TWFuYWdlci5n
ZXRHcmlkQ29sb3JGb3JOb2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICBpZiAo
aGFzVmlzaWJsZU92ZXJsYXkpIHsKKyAgICAgICAgICAgIGxldCBjb2xvciA9IFdJLm92ZXJsYXlN
YW5hZ2VyLmdldENvbG9yRm9yTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAg
ICAgIGxldCBodWUgPSBjb2xvci5oc2xbMF07Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQmFkZ2VF
bGVtZW50LnN0eWxlLmJvcmRlckNvbG9yID0gY29sb3IudG9TdHJpbmcoKTsKLSAgICAgICAgICAg
IHRoaXMuX2dyaWRCYWRnZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYGhzbCgke2h1
ZX0sIDkwJSwgOTUlKWA7Ci0gICAgICAgICAgICB0aGlzLl9ncmlkQmFkZ2VFbGVtZW50LnN0eWxl
LnNldFByb3BlcnR5KCJjb2xvciIsIGBoc2woJHtodWV9LCA1NSUsIDQwJSlgKTsKKyAgICAgICAg
ICAgIHRoaXMuX2xheW91dEJhZGdlRWxlbWVudC5zdHlsZS5ib3JkZXJDb2xvciA9IGNvbG9yLnRv
U3RyaW5nKCk7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUuYmFj
a2dyb3VuZENvbG9yID0gYGhzbCgke2h1ZX0sIDkwJSwgOTUlKWA7CisgICAgICAgICAgICB0aGlz
Ll9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoImNvbG9yIiwgYGhzbCgke2h1
ZX0sIDU1JSwgNDAlKWApOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2dyaWRC
YWRnZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpOworICAgICAgICAgICAgdGhpcy5f
bGF5b3V0QmFkZ2VFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKTsKICAgICB9CiAKICAg
ICBfaGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
bGV0IGRvbU5vZGUgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGlmIChkb21Ob2RlLmxheW91dENv
bnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpIHsKLSAgICAg
ICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFn
ZXIuRXZlbnQuR3JpZE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlR3JpZEJhZGdlU3RhdHVzLCB0
aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUdyaWRC
YWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgIGlmIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBl
KSB7CisgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92
ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VT
dGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVM
YXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBX
SS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2
ZW50LkdyaWRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUdyaWRCYWRnZVN0YXR1cywgdGhpcyk7
Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92
ZXJsYXlNYW5hZ2VyLkV2ZW50LkdyaWRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVHcmlkQmFk
Z2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX3Vw
ZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhp
ZGRlbiwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5fdXBkYXRlR3JpZEJhZGdlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUxh
eW91dEJhZGdlKCk7CiAgICAgfQogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>