<?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>200117</bug_id>
          
          <creation_ts>2019-07-24 21:39:48 -0700</creation_ts>
          <short_desc>Web Inspector: Storage: disable related agents when the tab is closed</short_desc>
          <delta_ts>2019-08-02 14:06:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>200118</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1555707</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-07-24 21:39:48 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555740</commentid>
    <comment_count>1</comment_count>
      <attachid>374883</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-07-25 00:19:50 -0700</bug_when>
    <thetext>Created attachment 374883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555741</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-25 00:22:13 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556656</commentid>
    <comment_count>3</comment_count>
      <attachid>374883</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-07-29 12:44:45 -0700</bug_when>
    <thetext>Comment on attachment 374883
Patch

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

In general this seems fine to me. It is tricky to get right (the entire state of the world needs to be torn down on disable and rebuilt on enable) but it looks like you&apos;ve done this properly.

• I dislike the &quot;_initialize&quot; naming pattern. I realize it existed before for most of these managers, but it confuses me. &quot;reset&quot; seems clearer but we can create a better name.
• In most cases I feel the _initialize (reset) action needs to happen early in enable (or not at all given the last state would have been construction or disable), so that anything performed later on will take effect and not accidentally be cleared by the _initialize (reset) at the end of enable. Some of these methods dispatch an event so I could see value in eliminating an unnecessary dispatch.
• Great cleanup re-ordering the methods a bit. Even though it makes the diff a little harder to read it&apos;ll be cleaner in the future.

In an ITMLKit world the DOMStorage agent can get activated via `activateExtraDomains`, which in this case does not do what you want:

```
    activateExtraDomains(domains)
    {
        ...
        for (let domain of domains) {
            let agent = InspectorBackend.activateDomain(domain);
            if (agent.enable)
                agent.enable();
            for (let target of WI.targets)
                target.activateExtraDomain(domain);
        }
        ...
    }
```

In this case the `agent.enable()` is now wrong. Seems like you might want something:

    • Find Manager associated with Domain
        =&gt; Ask manager to activateExtraDomain
            =&gt; Manager may enable the Domain if needed.

I&apos;m going to r- for the ITMLKit issue right now.

&gt; Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js:91
&gt; +        this._initialize();

I find `_initialize` here to be a very weird name.

I think of &quot;initialization&quot; work as &quot;work performed on something once, particularly early on&quot;. Here &quot;_initialize&quot; is being called whenever the manager is enabled/disabled.

I think this is more akin to `reset()` which other managers have, or &quot;reinitialize&quot; which is not used anywhere in our code-base. But we should definitely be able to come up with a better name for this.

&gt; Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js:128
&gt; +        var frame = WI.networkManager.frameForIdentifier(frameId);

Nit: Might as well upgrade these to `let` while moving them.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DatabaseManager.js:100
&gt; +        let inspect = () =&gt; {

A more readable name might be:

    inspect(id)
    tryInspect(id)
    attemptToInspect(id)

Where you pass the database identifier instead of capture it.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DatabaseManager.js:116
&gt; +        if (!this._enabled) {
&gt; +            let listener = this.addEventListener(DatabaseManager.Event.DatabaseWasAdded, (event) =&gt; {
&gt; +                if (inspect())
&gt; +                    this.removeEventListener(DatabaseManager.Event.DatabaseWasAdded, listener);
&gt; +            });
&gt; +            this.enable();
&gt;              return;
&gt; -        this.dispatchEventToListeners(WI.DatabaseManager.Event.DatabaseWasInspected, {database});
&gt; +        }

This seems cryptic enough to deserve a comment.

Does this mean that `console.inspect(db)` automatically enables the DatabaseManager and ends up showing the Storage Tab?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557714</commentid>
    <comment_count>4</comment_count>
      <attachid>374883</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-01 12:53:12 -0700</bug_when>
    <thetext>Comment on attachment 374883
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DatabaseManager.js:116
&gt;&gt; +        }
&gt; 
&gt; This seems cryptic enough to deserve a comment.
&gt; 
&gt; Does this mean that `console.inspect(db)` automatically enables the DatabaseManager and ends up showing the Storage Tab?

This actually should be put back the way it was, as there&apos;s no way for us to to reach this without the `Database` agent being enabled in the first place.

My goal with this was to make it so that when the user calls `inspect(database)`, it would forcibly show the Storage tab, but I&apos;m not sure that&apos;s the right way to go.  Other API (`console.record` or `console.profile`) don&apos;t forcibly show the related tab when called from the page, but this is slightly different in that it&apos;s part of the CommandLineAPI.  Perhaps we should make it so that `inspect` forcibly enables the tab?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557749</commentid>
    <comment_count>5</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-01 14:31:36 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #3)
&gt; In this case the `agent.enable()` is now wrong. Seems like you might want
&gt; something:
&gt; 
&gt;     • Find Manager associated with Domain
&gt;         =&gt; Ask manager to activateExtraDomain
&gt;             =&gt; Manager may enable the Domain if needed.
I think all we actually need to do is _not_ call `enable` if the domain is controlled by a manager.  In that case, the tab shouldn&apos;t have been created yet as the frontend agent shouldn&apos;t exist, so the tab shouldn&apos;t be `isTabAllowed`. Domains controlled by a manager are enabled/disabled based on whether the tab is open (doesn&apos;t have to be selected/visible) or not, meaning that it&apos;s already handled by the above case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557751</commentid>
    <comment_count>6</comment_count>
      <attachid>375347</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-01 14:32:13 -0700</bug_when>
    <thetext>Created attachment 375347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557807</commentid>
    <comment_count>7</comment_count>
      <attachid>375368</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-01 17:00:43 -0700</bug_when>
    <thetext>Created attachment 375368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558060</commentid>
    <comment_count>8</comment_count>
      <attachid>375368</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-02 12:51:29 -0700</bug_when>
    <thetext>Comment on attachment 375368
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/AppController.js:81
&gt; +            if (manager)
&gt; +                manager.activateExtraDomain(domain);

Can&apos;t wait to remove this code!

&gt; Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js:124
&gt; +    networkStateUpdated(isNowOnline)

Maybe we should have a new section:

    // Protocol Callbacks

Or just:

    // ApplicationCacheObserver

And we can remove all these inner methods.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMStorageManager.js:105
&gt;      itemsCleared(storageId)

Yeah, if we had:

    // DOMStorageObserver

Here that would save so much space!

&gt; Source/WebInspectorUI/UserInterface/Views/StorageTabContentView.js:51
&gt; -        return !!window.DOMStorageAgent || !!window.DatabaseAgent || !!window.IndexedDBAgent;
&gt; +        return !!(InspectorBackend.domains.ApplicationCache || InspectorBackend.domains.DOMStorage || InspectorBackend.domains.Database || InspectorBackend.domains.IndexedDB);

We probably can&apos;t do this change until other work, since this should always be true...

Once we do the BackendCommands rework we can do this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558069</commentid>
    <comment_count>9</comment_count>
      <attachid>375444</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-02 13:07:41 -0700</bug_when>
    <thetext>Created attachment 375444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558109</commentid>
    <comment_count>10</comment_count>
      <attachid>375444</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-02 14:05:45 -0700</bug_when>
    <thetext>Comment on attachment 375444
Patch

Clearing flags on attachment: 375444

Committed r248179: &lt;https://trac.webkit.org/changeset/248179&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558110</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-02 14:05:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558113</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-02 14:06:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/53878741&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374883</attachid>
            <date>2019-07-25 00:19:50 -0700</date>
            <delta_ts>2019-08-01 14:32:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200117-20190725001949.patch</filename>
            <type>text/plain</type>
            <size>41080</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ2OTJhNTY1MDVkZDU0MmZlYTViNzNkNDA3NTAz
NDA1NjFlYzQ2OWMuLjc1ZGZmODRlYTZkOWIzZTMzOGU3ODlkNDJjYTMxNTAyY2UxM2Q1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA3LTI1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
dG9yYWdlOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDExNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld29yayBob3cg
YGVuYWJsZWAvYGRpc2FibGVgIGlzIHVzZWQgZm9yIHN0b3JhZ2UtcmVsYXRlZCBhZ2VudHMgc28g
dGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQgYWxp
dmUgd2hlbiB0aGUgU3RvcmFnZSB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlLmpzb246CisgICAgICAgIEFkZCBgZGlzYWJs
ZWAgY29tbWFuZC4KKwogMjAxOS0wNy0yNCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CiAKICAgICAgICAgVGhyZWUgY2hlY2tzIGFyZSBtaXNzaW5nIGluIFByb3h5IGlu
dGVybmFsIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMTM3ZmEwMjBjYjkzMzdkZGRjZDdkYmNhN2Rh
YzUwMGMyZjBlODk5Li4wOWJjNTkwNmY2OTY3ZjliMmMzMDA2YzQwNWU1YzdiNTVmOTRmZjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMDctMjUgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0b3JhZ2U6IGRpc2Fi
bGUgcmVsYXRlZCBhZ2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV3b3JrIGhvdyBgZW5hYmxlYC9gZGlz
YWJsZWAgaXMgdXNlZCBmb3Igc3RvcmFnZS1yZWxhdGVkIGFnZW50cyBzbyB0aGF0IGV2ZW50cyBh
cmUgbm90IHNlbnQKKyAgICAgICAgYW5kIGRhdGEgaXNuJ3Qga2VwdCBhbGl2ZSB3aGVuIHRoZSBT
dG9yYWdlIHRhYiBpc24ndCBlbmFibGVkLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjplbmFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaXNhYmxlKTogQWRk
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUp
OgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNhYmxlKToKKwogMjAx
OS0wNy0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFti
bWFsbG9jXSBBZGQgSXNvSGVhcCB0ZXN0IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJl
IG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJnZSBWQQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXgg
MjdmMGY4ZDJmNWIyY2QwYzA0OWE1ZTQ2ZGJlY2YwY2FkNmVjY2NiOC4uM2JjNjI1M2E0ODViYmEy
MzViZmRkMDZiODEzMDYxNzI1NDE3ZTk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzMgQEAKKzIwMTktMDctMjUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0b3JhZ2U6IGRpc2FibGUgcmVsYXRlZCBhZ2Vu
dHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmV3b3JrIGhvdyBgZW5hYmxlYC9gZGlzYWJsZWAgaXMgdXNlZCBm
b3Igc3RvcmFnZS1yZWxhdGVkIGFnZW50cyBzbyB0aGF0IGV2ZW50cyBhcmUgbm90IHNlbnQKKyAg
ICAgICAgYW5kIGRhdGEgaXNuJ3Qga2VwdCBhbGl2ZSB3aGVuIHRoZSBTdG9yYWdlIHRhYiBpc24n
dCBlbmFibGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
KToKKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFs
aXplVGFyZ2V0KToKKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlw
ZS5lbmFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnBy
b3RvdHlwZS5kaXNhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5wcm90b3R5cGUubmV0d29ya1N0YXRlVXBkYXRlZCk6CisgICAgICAgIChXSS5BcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUuYXBwbGljYXRpb25DYWNoZVN0YXR1c1VwZGF0ZWQp
OgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLl9pbml0aWFs
aXplKTogQWRkZWQuCisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5
cGUuX21haW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5wcm90b3R5cGUuX21hbmlmZXN0Rm9yRnJhbWVMb2FkZWQpOgorICAgICAgICAoV0ku
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLl9mcmFtZXNXaXRoTWFuaWZlc3RzTG9h
ZGVkKToKKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5pbml0
aWFsaXplKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RE9NU3RvcmFnZU1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlcik6Cisg
ICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6
CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZW5hYmxlKTogQWRkZWQu
CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZGlzYWJsZSk6IEFkZGVk
LgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLml0ZW1zQ2xlYXJlZCk6
CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaXRlbVJlbW92ZWQpOgor
ICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLml0ZW1BZGRlZCk6CisgICAg
ICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaXRlbVVwZGF0ZWQpOgorICAgICAg
ICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLmluc3BlY3RET01TdG9yYWdlKToKKyAg
ICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5faW5pdGlhbGl6ZSk6IEFkZGVk
LgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLl9hZGRET01TdG9yYWdl
SWZOZWVkZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLl9hZGRD
b29raWVTdG9yYWdlSWZOZWVkZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJv
dG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1h
bmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NU3Rv
cmFnZU1hbmFnZXIucHJvdG90eXBlLmRvbVN0b3JhZ2VXYXNBZGRlZCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qczoKKyAg
ICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXSS5EYXRhYmFzZU1hbmFnZXIu
cHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuRGF0YWJhc2VNYW5hZ2Vy
LnByb3RvdHlwZS5lbmFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlci5w
cm90b3R5cGUuZGlzYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuRGF0YWJhc2VNYW5hZ2VyLnBy
b3RvdHlwZS5kYXRhYmFzZVdhc0FkZGVkKToKKyAgICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlci5w
cm90b3R5cGUuaW5zcGVjdERhdGFiYXNlKToKKyAgICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlci5w
cm90b3R5cGUuX2luaXRpYWxpemUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRhdGFiYXNlTWFuYWdl
ci5wcm90b3R5cGUuX21haW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIChXSS5EYXRhYmFz
ZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUpOiBEZWxldGVkLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9JbmRleGVkREJNYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
SW5kZXhlZERCTWFuYWdlcik6CisgICAgICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3RvdHlw
ZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLkluZGV4ZWREQk1hbmFnZXIucHJvdG90
eXBlLmVuYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5wcm90b3R5
cGUuZGlzYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5wcm90b3R5
cGUuY2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3Rv
dHlwZS5faW5pdGlhbGl6ZSk6IEFkZGVkLgorICAgICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5w
cm90b3R5cGUuX21haW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIChXSS5JbmRleGVkREJN
YW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuU3Rv
cmFnZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5w
cm90b3R5cGUuY2xvc2VkKTogQWRkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3Qu
aHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qczoKKyAgICAgICAgKFdJ
LmxvYWRlZCk6CisgICAgICAgIChXSS5jb250ZW50TG9hZGVkKToKKwogMjAxOS0wNy0yNCAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
UkVHUkVTU0lPTjogbm8gY29udGV4dCBtZW51IGl0ZW1zIHdvcmsgd2hlbiBjb250ZXh0IG1lbnUg
Y2xpY2tpbmcgb24gIkFkZCBCcmVha3BvaW50IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGUuanNvbgpp
bmRleCA5ZWY3OWIwZDM0MTc1Y2I3OTI5NGU0MGQzNzM4MGUxNjAxYjM1YTVjLi45NzQwNDc0NjQz
MjJhZDljN2NkOWE1YzY3NGI4NTNlMDIxZmNhNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGUuanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGUu
anNvbgpAQCAtNDcsNiArNDcsMTAgQEAKICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCiAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBhcHBsaWNhdGlvbiBjYWNoZSBkb21h
aW4gbm90aWZpY2F0aW9ucy4iCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogImRpc2FibGUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYXBw
bGljYXRpb24gY2FjaGUgZG9tYWluIG5vdGlmaWNhdGlvbnMuIgorICAgICAgICB9LAogICAgICAg
ICB7CiAgICAgICAgICAgICAibmFtZSI6ICJnZXRNYW5pZmVzdEZvckZyYW1lIiwKICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIG1hbmlmZXN0IFVSTCBmb3IgZG9jdW1lbnQgaW4g
dGhlIGdpdmVuIGZyYW1lLiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5k
ZXggYjdlY2NiOWE5OTAyYTM5ZTZiODE1ZDJlZjAwYjQ5ZjljYjRhNzQ5MS4uMTY0NmQ5OTE0ZjFi
NzIwOTgzM2VmMDliNmU4MjI4NTU5YzQxMzhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcApAQCAtNTYsMTcgKzU2LDMzIEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqCiAK
IHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChudWxscHRyKTsK
KyAgICBFcnJvclN0cmluZyB1bnVzZWQ7CisgICAgZGlzYWJsZSh1bnVzZWQpOwogfQogCi12b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKK3Zv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nKQogeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KCkgPT0gdGhpcykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJB
cHBsaWNhdGlvbkNhY2hlQWdlbnQgYWxyZWFkeSBlbmFibGVkIl9zOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudCh0aGlzKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbml0aWFsIG5h
dmlnYXRvci5vbk9ubGluZS4KICAgICBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKK3sKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiQXBw
bGljYXRpb25DYWNoZUFnZW50IGFscmVhZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50KG51bGxwdHIpOworfQorCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCiB7CiAg
ICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VB
Z2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggNjQwZjBhNDg3OGVh
MTFjZjkxMWZkYzJjNjIxYjgxNGZhOWIyNWI0Mi4uMzkyMjE0OTRhYzY2MGU5MTU5MTczOWE0YTQy
NmU3YzA5ZDMxN2Y5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC01Nyw2
ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0RnJhbWVz
V2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3Vs
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAK
aW5kZXggNjFhOWUxMWJkOThiY2RlZWQzMWJiZDc2NDFkMzk2OTI2ZjI3ZDBjMC4uNzk1MDc4NTkw
ZWQ1ZmI5NzNlZWE3YWNmNjhmYTkzNTQxODBjMzczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cApAQCAtNzIsMTMgKzcyLDIzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lCiAgICAgZGlzYWJs
ZSh1bnVzZWQpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nKQogeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KCkgIT0gdGhpcykgeworICAgICAgICBlcnJvclN0cmluZyA9
ICJET01TdG9yYWdlQWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQodGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxl
KEVycm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiRE9NU3RvcmFnZUFnZW50IGFscmVhZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50KG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBmNDA4MTRl
MTY2NjUwMjA3ZjQ4NzljNjRlMGJhMGU4NGNlZTVkZWYxLi5iMzdhNTYwY2U4MDc2OGM2NjQ0MDg1
MTVmYjA1NTEyNjE2NWJlZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIzMiwxMCArMjMy
LDEyIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogfQog
Ci12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCit2b2lk
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcp
CiB7Ci0gICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEYXRhYmFzZUFnZW50
KCkgPT0gdGhpcykKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFi
YXNlQWdlbnQoKSA9PSB0aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRhdGFiYXNlQWdl
bnQgYWxyZWFkeSBlbmFibGVkIl9zOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQodGhpcyk7CiAKQEAg
LTI0Myw4ICsyNDUsMTMgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjplbmFibGUoRXJy
b3JTdHJpbmcmKQogICAgICAgICBkaWRPcGVuRGF0YWJhc2UoZGF0YWJhc2UuZ2V0KCkpOwogfQog
Ci12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQordm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKIHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdl
bnQoKSAhPSB0aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRhdGFiYXNlQWdlbnQgYWxy
ZWFkeSBkaXNhYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KG51bGxwdHIpOwogCiAgICAg
bV9yZXNvdXJjZXMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuanMKaW5kZXggMjBmNjkxOGRlY2Q1YzA5ODc0MjMxZGJmNWZkMzNlZmEzYTgx
OGY1ZS4uYTAwZTczYjQ3MGUwYjBjYmQ0MjVlODFlNmJiYzgwYTI3YjdkNmQzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKQEAgLTMxLDE4ICsz
MSwxNyBAQCBXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9IGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0g
ICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAg
ICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNS
ZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcyk7Ci0KLSAgICAgICAgdGhp
cy5fb25saW5lID0gdHJ1ZTsKLQotICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKKyAgICAgICAg
dGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9pbml0aWFsaXplKCk7CiAgICAg
fQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7
CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAg
ICAgICBpZiAodGFyZ2V0LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCkgewogICAgICAgICAgICAgdGFy
Z2V0LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5lbmFibGUoKTsKICAgICAgICAgICAgIHRhcmdldC5B
cHBsaWNhdGlvbkNhY2hlQWdlbnQuZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyh0aGlzLl9mcmFtZXNX
aXRoTWFuaWZlc3RzTG9hZGVkLmJpbmQodGhpcykpOwpAQCAtNTEsMTAgKzUwLDcgQEAgV0kuQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbml0aWFsaXplKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzID0ge307Ci0gICAgfQorICAg
IGdldCBvbmxpbmUoKSB7IHJldHVybiB0aGlzLl9vbmxpbmU7IH0KIAogICAgIGdldCBhcHBsaWNh
dGlvbkNhY2hlT2JqZWN0cygpCiAgICAgewpAQCAtNjQsMjkgKzYwLDQxIEBAIFdJLkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uQ2FjaGVPYmplY3RzOwogICAgIH0K
IAotICAgIG5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpCisgICAgZW5hYmxlKCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX29ubGluZSA9IGlzTm93T25saW5lOworICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fZW5hYmxlZCk7CiAKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuTmV0d29ya1N0YXRlVXBk
YXRlZCwge29ubGluZTogdGhpcy5fb25saW5lfSk7CisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB0
cnVlOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAg
ICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CisKKyAgICAgICAgV0kuRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMuX2NoaWxk
RnJhbWVXYXNSZW1vdmVkLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9pbml0aWFsaXplKCk7CiAg
ICAgfQogCi0gICAgZ2V0IG9ubGluZSgpCisgICAgZGlzYWJsZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fb25saW5lOwotICAgIH0KKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
ZW5hYmxlZCk7CiAKLSAgICBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChmcmFtZUlkLCBt
YW5pZmVzdFVSTCwgc3RhdHVzKQotICAgIHsKLSAgICAgICAgdmFyIGZyYW1lID0gV0kubmV0d29y
a01hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpOwotICAgICAgICBpZiAoIWZyYW1l
KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CiAK
LSAgICAgICAgdGhpcy5fZnJhbWVNYW5pZmVzdFVwZGF0ZWQoZnJhbWUsIG1hbmlmZXN0VVJMLCBz
dGF0dXMpOworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAg
ICAgICAgaWYgKHRhcmdldC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQgJiYgdGFyZ2V0LkFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5kaXNhYmxlKQorICAgICAgICAgICAgICAgIHRhcmdldC5BcHBsaWNhdGlv
bkNhY2hlQWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisKKyAgICAgICAgV0kuRnJhbWUucmVt
b3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9pbml0
aWFsaXplKCk7CiAgICAgfQogCiAgICAgcmVxdWVzdEFwcGxpY2F0aW9uQ2FjaGUoZnJhbWUsIGNh
bGxiYWNrKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisK
ICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKGVycm9yLCBhcHBsaWNhdGlvbkNhY2hl
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKQEAgLTEwMCwxOCArMTA4LDQ2
IEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUFnZW50Lmdl
dEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShmcmFtZS5pZCwgY2FsbGJhY2tXcmFwcGVyKTsKICAg
ICB9CiAKKyAgICBuZXR3b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKQorICAgIHsKKyAgICAg
ICAgLy8gQ2FsbGVkIGZyb20gV0kuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLgorCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCisgICAgICAgIHRoaXMuX29ubGluZSA9
IGlzTm93T25saW5lOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50Lk5ldHdvcmtTdGF0ZVVwZGF0ZWQsIHtvbmxp
bmU6IHRoaXMuX29ubGluZX0pOworICAgIH0KKworICAgIGFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNV
cGRhdGVkKGZyYW1lSWQsIG1hbmlmZXN0VVJMLCBzdGF0dXMpCisgICAgeworICAgICAgICAvLyBD
YWxsZWQgZnJvbSBXSS5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuCisKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKKyAgICAgICAgdmFyIGZyYW1lID0gV0kubmV0d29y
a01hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpOworICAgICAgICBpZiAoIWZyYW1l
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2ZyYW1lTWFuaWZlc3RVcGRh
dGVkKGZyYW1lLCBtYW5pZmVzdFVSTCwgc3RhdHVzKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRl
CiAKKyAgICBfaW5pdGlhbGl6ZSgpCisgICAgeworICAgICAgICB0aGlzLl9vbmxpbmUgPSB0cnVl
OworICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cyA9IHt9OworCisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LkV2ZW50LkNsZWFyZWQpOworICAgIH0KKwogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZl
bnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2Vv
ZiBXSS5GcmFtZSk7CiAKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7
Ci0gICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3
ZSB3YW50IHRvIGNsZWFyIG91ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmln
YXRpbmcgdG8gYSBuZXcgcGFnZS4KLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotCi0g
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKLQorICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEyNiw3ICsxNjIsMTIg
QEAgV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX21hbmlmZXN0Rm9yRnJhbWVMb2FkZWQoZnJh
bWVJZCwgZXJyb3IsIG1hbmlmZXN0VVJMKQogICAgIHsKLSAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlz
Ll9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBmcmFtZSA9IFdJ
Lm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkKTsKQEAgLTEzOSw3ICsx
ODAsMTIgQEAgV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2ZyYW1lc1dpdGhNYW5pZmVzdHNM
b2FkZWQoZXJyb3IsIGZyYW1lc1dpdGhNYW5pZmVzdHMpCiAgICAgewotICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxF
cnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBmcmFtZXNXaXRoTWFuaWZlc3RzLmxlbmd0aDsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01T
dG9yYWdlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzCmluZGV4IGVhYjk3ZjQwYTViMDZjNzQyMzEz
YWE4OTgxMmM1MWVlZjk5YWI0YTIuLmMyYTU1MmVmZTA0ODFiMWMwMmNlMjg5Yjk3MWE3YTQ2OTYy
OTRmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzCkBAIC0zMiwz
MiArMzIsMjQgQEAgV0kuRE9NU3RvcmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICBX
SS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENo
YW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5TZWN1cml0eU9yaWdpbkRpZENoYW5n
ZSwgdGhpcy5fc2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAgICAgIHRoaXMu
aW5pdGlhbGl6ZSgpOworICAgICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CisgICAgICAgIHRo
aXMuX2luaXRpYWxpemUoKTsKICAgICB9CiAKICAgICAvLyBUYXJnZXQKIAogICAgIGluaXRpYWxp
emVUYXJnZXQodGFyZ2V0KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGlmICh0YXJnZXQuRE9NU3RvcmFnZUFnZW50KQog
ICAgICAgICAgICAgdGFyZ2V0LkRPTVN0b3JhZ2VBZ2VudC5lbmFibGUoKTsKICAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAotICAgIGluaXRpYWxpemUoKQotICAgIHsKLSAgICAgICAgdGhpcy5fZG9t
U3RvcmFnZU9iamVjdHMgPSBbXTsKLSAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMg
PSB7fTsKLSAgICB9Ci0KLSAgICBnZXQgZG9tU3RvcmFnZU9iamVjdHMoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzOwotICAgIH0KKyAgICBnZXQgZG9tU3Rv
cmFnZU9iamVjdHMoKSB7IHJldHVybiB0aGlzLl9kb21TdG9yYWdlT2JqZWN0czsgfQogCiAgICAg
Z2V0IGNvb2tpZVN0b3JhZ2VPYmplY3RzKCkKICAgICB7CkBAIC02NywxOCArNTksNDMgQEAgV0ku
RE9NU3RvcmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICByZXR1cm4gY29va2llU3RvcmFnZU9iamVjdHM7CiAgICAgfQogCi0gICAg
ZG9tU3RvcmFnZVdhc0FkZGVkKGlkLCBob3N0LCBpc0xvY2FsU3RvcmFnZSkKKyAgICBlbmFibGUo
KQogICAgIHsKLSAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSBuZXcgV0kuRE9NU3RvcmFnZU9iamVj
dChpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhp
cy5fZW5hYmxlZCk7CiAKLSAgICAgICAgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMucHVzaChkb21T
dG9yYWdlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NU3Rv
cmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7ZG9tU3RvcmFnZX0p
OworICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTsKKworICAgICAgICBmb3IgKGxldCB0YXJn
ZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0YXJn
ZXQpOworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQu
TWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMp
OworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNlY3Vy
aXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7
CisKKyAgICAgICAgdGhpcy5faW5pdGlhbGl6ZSgpOworICAgIH0KKworICAgIGRpc2FibGUoKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKKyAgICAgICAg
dGhpcy5fZW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0LkRPTVN0b3JhZ2VBZ2VudCkKKyAgICAg
ICAgICAgICAgICB0YXJnZXQuRE9NU3RvcmFnZUFnZW50LmRpc2FibGUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7
CisKKyAgICAgICAgdGhpcy5faW5pdGlhbGl6ZSgpOwogICAgIH0KIAogICAgIGl0ZW1zQ2xlYXJl
ZChzdG9yYWdlSWQpCiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdl
T2JzZXJ2ZXIuCiAKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAg
ICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9y
YWdlSWQpOwogICAgICAgICBpZiAoZG9tU3RvcmFnZSkKICAgICAgICAgICAgIGRvbVN0b3JhZ2Uu
aXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCk7CkBAIC04OCw2ICsxMDUsOCBAQCBXSS5ET01TdG9yYWdl
TWFuYWdlciA9IGNsYXNzIERPTVN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIuCiAKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgbGV0IGRvbVN0b3Jh
Z2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOwogICAgICAgICBp
ZiAoZG9tU3RvcmFnZSkKICAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbVJlbW92ZWQoa2V5KTsK
QEAgLTk3LDYgKzExNiw4IEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFn
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9t
IFdJLkRPTVN0b3JhZ2VPYnNlcnZlci4KIAorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9l
bmFibGVkKTsKKwogICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJ
ZGVudGlmaWVyKHN0b3JhZ2VJZCk7CiAgICAgICAgIGlmIChkb21TdG9yYWdlKQogICAgICAgICAg
ICAgZG9tU3RvcmFnZS5pdGVtQWRkZWQoa2V5LCB2YWx1ZSk7CkBAIC0xMDYsNiArMTI3LDggQEAg
V0kuRE9NU3RvcmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuRE9NU3RvcmFnZU9ic2Vy
dmVyLgogCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAg
IGxldCBkb21TdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoc3RvcmFnZUlk
KTsKICAgICAgICAgaWYgKGRvbVN0b3JhZ2UpCiAgICAgICAgICAgICBkb21TdG9yYWdlLml0ZW1V
cGRhdGVkKGtleSwgb2xkVmFsdWUsIHZhbHVlKTsKQEAgLTExMywxNSArMTM2LDQ2IEBAIFdJLkRP
TVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIGluc3BlY3RET01TdG9yYWdlKGlkKQogICAgIHsKLSAgICAgICAgdmFyIGRvbVN0
b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihpZCk7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGRvbVN0b3JhZ2UpOwotICAgICAgICBpZiAoIWRvbVN0b3JhZ2UpCisgICAgICAg
IC8vIENhbGxlZCBmcm9tIFdJLkluc3BlY3Rvck9ic2VydmVyLgorCisgICAgICAgIGxldCBpbnNw
ZWN0ID0gKCkgPT4geworICAgICAgICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9y
YWdlRm9ySWRlbnRpZmllcihpZCk7CisgICAgICAgICAgICBpZiAoIWRvbVN0b3JhZ2UpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhET01TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2Fz
SW5zcGVjdGVkLCB7ZG9tU3RvcmFnZX0pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH07CisKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKSB7CisgICAgICAgICAgICBsZXQg
bGlzdGVuZXIgPSB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQu
RE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBp
ZiAoaW5zcGVjdCgpKQorICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCBsaXN0
ZW5lcik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuZW5hYmxlKCk7CiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkRPTVN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHtk
b21TdG9yYWdlfSk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgcmVzdWx0ID0gaW5zcGVjdCgp
OworICAgICAgICBjb25zb2xlLmFzc2VydChyZXN1bHQpOwogICAgIH0KIAogICAgIC8vIFByaXZh
dGUKIAorICAgIF9pbml0aWFsaXplKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VP
YmplY3RzID0gW107CisgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzID0ge307CisK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoRE9NU3RvcmFnZU1hbmFnZXIu
RXZlbnQuQ2xlYXJlZCk7CisKKyAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5h
Z2VyLm1haW5GcmFtZTsKKyAgICAgICAgaWYgKG1haW5GcmFtZSkgeworICAgICAgICAgICAgdGhp
cy5fYWRkRE9NU3RvcmFnZUlmTmVlZGVkKG1haW5GcmFtZSk7CisgICAgICAgICAgICB0aGlzLl9h
ZGRDb29raWVTdG9yYWdlSWZOZWVkZWQobWFpbkZyYW1lKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIF9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihpZCkKICAgICB7CiAgICAgICAgIGZvciAodmFy
IHN0b3JhZ2VPYmplY3Qgb2YgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMpIHsKQEAgLTEzMywyMCAr
MTg3LDQzIEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCi0gICAgX21h
aW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICBfYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGZy
YW1lKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNl
b2YgV0kuRnJhbWUpOworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7Ci0gICAg
ICAgICAgICAvLyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3ZSB3YW50
IHRvIGNsZWFyIG91ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmlnYXRpbmcg
dG8gYSBuZXcgcGFnZS4KLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZl
bnQuQ2xlYXJlZCk7CisgICAgICAgIGlmICghd2luZG93LkRPTVN0b3JhZ2VBZ2VudCkKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgdGhpcy5fYWRkRE9NU3RvcmFnZUlmTmVlZGVk
KGV2ZW50LnRhcmdldCk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gRG9uJ3Qgc2hvdyBzdG9yYWdl
IGlmIHdlIGRvbid0IGhhdmUgYSBzZWN1cml0eSBvcmlnaW4gKGFib3V0OmJsYW5rKS4KKyAgICAg
ICAgaWYgKCFmcmFtZS5zZWN1cml0eU9yaWdpbiB8fCBmcmFtZS5zZWN1cml0eU9yaWdpbiA9PT0g
IjovLyIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVy
IHBhc3NpbmcgdGhlIG90aGVyIHBhcnRzIG9mIHRoZSBvcmlnaW4gYWxvbmcuCisKKyAgICAgICAg
bGV0IGFkZERPTVN0b3JhZ2UgPSAoaXNMb2NhbFN0b3JhZ2UpID0+IHsKKyAgICAgICAgICAgIGxl
dCBpZGVudGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBmcmFtZS5zZWN1cml0eU9yaWdpbiwgaXNM
b2NhbFN0b3JhZ2V9OworICAgICAgICAgICAgaWYgKHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlm
aWVyKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
bGV0IGRvbVN0b3JhZ2UgPSBuZXcgV0kuRE9NU3RvcmFnZU9iamVjdChpZGVudGlmaWVyLCBmcmFt
ZS5tYWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCBpZGVudGlmaWVyLmlzTG9jYWxTdG9y
YWdlKTsKKyAgICAgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLnB1c2goZG9tU3RvcmFn
ZSk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhET01TdG9yYWdl
TWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHtkb21TdG9yYWdlfSk7Cisg
ICAgICAgIH07CisgICAgICAgIGFkZERPTVN0b3JhZ2UodHJ1ZSk7CisgICAgICAgIGFkZERPTVN0
b3JhZ2UoZmFsc2UpOworICAgIH0KKworICAgIF9hZGRDb29raWVTdG9yYWdlSWZOZWVkZWQoZnJh
bWUpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKCF3aW5kb3cuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEFkZCB0aGUgaG9zdCBvZiB0aGUgZnJhbWUgdGhhdCBjaGFu
Z2VkIHRoZSBtYWluIHJlc291cmNlIHRvIHRoZSBsaXN0IG9mIGhvc3RzIHRoZXJlIGNvdWxkIGJl
IGNvb2tpZXMgZm9yLgotICAgICAgICB2YXIgaG9zdCA9IHBhcnNlVVJMKGV2ZW50LnRhcmdldC51
cmwpLmhvc3Q7CisgICAgICAgIGxldCBob3N0ID0gcGFyc2VVUkwoZnJhbWUudXJsKS5ob3N0Owog
ICAgICAgICBpZiAoIWhvc3QpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE1NywyNCArMjM0
LDE2IEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
RE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7Y29v
a2llU3RvcmFnZTogdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHNbaG9zdF19KTsKICAgICB9CiAK
LSAgICBfYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGZyYW1lKQorICAgIF9tYWluUmVzb3VyY2VEaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoIXdpbmRvdy5ET01TdG9yYWdlQWdlbnQp
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1l
KTsKKworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAg
ICAgIHRoaXMuX2luaXRpYWxpemUoKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
Ci0gICAgICAgIC8vIERvbid0IHNob3cgc3RvcmFnZSBpZiB3ZSBkb24ndCBoYXZlIGEgc2VjdXJp
dHkgb3JpZ2luIChhYm91dDpibGFuaykuCi0gICAgICAgIGlmICghZnJhbWUuc2VjdXJpdHlPcmln
aW4gfHwgZnJhbWUuc2VjdXJpdHlPcmlnaW4gPT09ICI6Ly8iKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBwYXNzaW5nIHRoZSBvdGhlciBwYXJ0cyBv
ZiB0aGUgb3JpZ2luIGFsb25nIHRvIGRvbVN0b3JhZ2VXYXNBZGRlZC4KLQotICAgICAgICB2YXIg
bG9jYWxTdG9yYWdlSWRlbnRpZmllciA9IHtzZWN1cml0eU9yaWdpbjogZnJhbWUuc2VjdXJpdHlP
cmlnaW4sIGlzTG9jYWxTdG9yYWdlOiB0cnVlfTsKLSAgICAgICAgaWYgKCF0aGlzLl9kb21TdG9y
YWdlRm9ySWRlbnRpZmllcihsb2NhbFN0b3JhZ2VJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHRo
aXMuZG9tU3RvcmFnZVdhc0FkZGVkKGxvY2FsU3RvcmFnZUlkZW50aWZpZXIsIGZyYW1lLm1haW5S
ZXNvdXJjZS51cmxDb21wb25lbnRzLmhvc3QsIHRydWUpOwotCi0gICAgICAgIHZhciBzZXNzaW9u
U3RvcmFnZUlkZW50aWZpZXIgPSB7c2VjdXJpdHlPcmlnaW46IGZyYW1lLnNlY3VyaXR5T3JpZ2lu
LCBpc0xvY2FsU3RvcmFnZTogZmFsc2V9OwotICAgICAgICBpZiAoIXRoaXMuX2RvbVN0b3JhZ2VG
b3JJZGVudGlmaWVyKHNlc3Npb25TdG9yYWdlSWRlbnRpZmllcikpCi0gICAgICAgICAgICB0aGlz
LmRvbVN0b3JhZ2VXYXNBZGRlZChzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIsIGZyYW1lLm1haW5S
ZXNvdXJjZS51cmxDb21wb25lbnRzLmhvc3QsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fYWRkQ29v
a2llU3RvcmFnZUlmTmVlZGVkKGV2ZW50LnRhcmdldCk7CiAgICAgfQogCiAgICAgX3NlY3VyaXR5
T3JpZ2luRGlkQ2hhbmdlKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGF0YWJhc2VNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGF0YWJhc2VNYW5hZ2VyLmpz
CmluZGV4IDljMGQ1ODM4ZjYxYzgyZGE1Y2ZjMzRlMjc2YzA3MDcwNDM4OWRkOGUuLjc3ZDYwMzE0
ZTYyODA0NzM3ZWY4OGI4YjNhY2M5N2NkYjg0YTE2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXRh
YmFzZU1hbmFnZXIuanMKQEAgLTMyLDM1ICszMiw2MSBAQCBXSS5EYXRhYmFzZU1hbmFnZXIgPSBj
bGFzcyBEYXRhYmFzZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1
cGVyKCk7CiAKLSAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVu
dC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhp
cyk7Ci0KLSAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CisgICAgICAgIHRoaXMuX2VuYWJsZWQg
PSBmYWxzZTsKKyAgICAgICAgdGhpcy5faW5pdGlhbGl6ZSgpOwogICAgIH0KIAogICAgIC8vIFRh
cmdldAogCiAgICAgaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpCiAgICAgeworICAgICAgICBpZiAo
IXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHRhcmdl
dC5EYXRhYmFzZUFnZW50KQogICAgICAgICAgICAgdGFyZ2V0LkRhdGFiYXNlQWdlbnQuZW5hYmxl
KCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbml0aWFsaXplKCkKKyAgICBnZXQg
ZGF0YWJhc2VzKCkgeyByZXR1cm4gdGhpcy5fZGF0YWJhc2VPYmplY3RzOyB9CisKKyAgICBlbmFi
bGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VPYmplY3RzID0gW107CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9lbmFibGVk
ID0gdHJ1ZTsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAg
ICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIFdJLkZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworCisgICAgICAgIHRoaXMuX2luaXRp
YWxpemUoKTsKICAgICB9CiAKLSAgICBnZXQgZGF0YWJhc2VzKCkKKyAgICBkaXNhYmxlKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZU9iamVjdHM7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxz
ZTsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAg
ICAgaWYgKHRhcmdldC5EYXRhYmFzZUFnZW50KQorICAgICAgICAgICAgICAgIHRhcmdldC5EYXRh
YmFzZUFnZW50LmRpc2FibGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdJLkZyYW1lLnJlbW92
ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5faW5pdGlh
bGl6ZSgpOwogICAgIH0KIAogICAgIGRhdGFiYXNlV2FzQWRkZWQoaWQsIGhvc3QsIG5hbWUsIHZl
cnNpb24pCiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5EYXRhYmFzZU9ic2VydmVy
LgogCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIHZh
ciBkYXRhYmFzZSA9IG5ldyBXSS5EYXRhYmFzZU9iamVjdChpZCwgaG9zdCwgbmFtZSwgdmVyc2lv
bik7CiAKICAgICAgICAgdGhpcy5fZGF0YWJhc2VPYmplY3RzLnB1c2goZGF0YWJhc2UpOwpAQCAt
NjksMjQgKzk1LDQ1IEBAIFdJLkRhdGFiYXNlTWFuYWdlciA9IGNsYXNzIERhdGFiYXNlTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgaW5zcGVjdERhdGFiYXNlKGlkKQogICAgIHsKLSAg
ICAgICAgdmFyIGRhdGFiYXNlID0gdGhpcy5fZGF0YWJhc2VGb3JJZGVudGlmaWVyKGlkKTsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQoZGF0YWJhc2UpOwotICAgICAgICBpZiAoIWRhdGFiYXNlKQor
ICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5JbnNwZWN0b3JPYnNlcnZlci4KKworICAgICAgICBs
ZXQgaW5zcGVjdCA9ICgpID0+IHsKKyAgICAgICAgICAgIGxldCBkYXRhYmFzZSA9IHRoaXMuX2Rh
dGFiYXNlRm9ySWRlbnRpZmllcihpZCk7CisgICAgICAgICAgICBpZiAoIWRhdGFiYXNlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoRGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzSW5zcGVjdGVk
LCB7ZGF0YWJhc2V9KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9OworCisg
ICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkgeworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0g
dGhpcy5hZGRFdmVudExpc3RlbmVyKERhdGFiYXNlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0Fk
ZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zcGVjdCgpKQorICAgICAg
ICAgICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoRGF0YWJhc2VNYW5hZ2VyLkV2
ZW50LkRhdGFiYXNlV2FzQWRkZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgdGhpcy5lbmFibGUoKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNl
V2FzSW5zcGVjdGVkLCB7ZGF0YWJhc2V9KTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCByZXN1
bHQgPSBpbnNwZWN0KCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc3VsdCk7CiAgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCisgICAgX2luaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAgdGhp
cy5fZGF0YWJhc2VPYmplY3RzID0gW107CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOworICAgIH0KKwogICAg
IF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CiAKLSAgICAgICAgaWYgKGV2
ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZGVh
bGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3ZSB3YW50IHRvIGNsZWFyIG91ciBsaXN0IG9mIG9i
amVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS4KLSAgICAgICAg
ICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIHRoaXMu
X2luaXRpYWxpemUoKTsKICAgICB9CiAKICAgICBfZGF0YWJhc2VGb3JJZGVudGlmaWVyKGlkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvSW5kZXhlZERCTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanMKaW5kZXggYTM4NDlmYjY3ZDI5ODVj
OWJlZTQxYWNmMzc2ZDRiYmI4NDI0NWJkMC4uYWQ0NjY1NjgxZTJmNmQyOTk5ZmZkZDZiODQ5YTAw
OGU2ZjdjYWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9JbmRleGVkREJNYW5hZ2VyLmpzCkBAIC0z
MiwzNCArMzIsNTkgQEAgV0kuSW5kZXhlZERCTWFuYWdlciA9IGNsYXNzIEluZGV4ZWREQk1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAg
V0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRD
aGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLkZy
YW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuU2VjdXJpdHlPcmlnaW5EaWRDaGFu
Z2UsIHRoaXMuX3NlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzKTsKLQotICAgICAgICB0aGlz
LmluaXRpYWxpemUoKTsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0
aGlzLl9pbml0aWFsaXplKCk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFs
aXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LkluZGV4ZWREQkFnZW50KQog
ICAgICAgICAgICAgdGFyZ2V0LkluZGV4ZWREQkFnZW50LmVuYWJsZSgpOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCi0gICAgaW5pdGlhbGl6ZSgpCisgICAgZ2V0IGluZGV4ZWREYXRhYmFzZXMo
KSB7IHJldHVybiB0aGlzLl9pbmRleGVkRGF0YWJhc2VzOyB9CisKKyAgICBlbmFibGUoKQogICAg
IHsKLSAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlcyA9IFtdOworICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fZW5hYmxlZCk7CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7
CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0
aGlzLmluaXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKworICAgICAgICBXSS5GcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0
ZW5lcihXSS5GcmFtZS5FdmVudC5TZWN1cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcy5fc2VjdXJp
dHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMpOworCisgICAgICAgIHRoaXMuX2luaXRpYWxpemUoKTsK
ICAgICB9CiAKLSAgICBnZXQgaW5kZXhlZERhdGFiYXNlcygpCisgICAgZGlzYWJsZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhlZERhdGFiYXNlczsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNl
OworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0LkluZGV4ZWREQkFnZW50KQorICAgICAgICAgICAgICAgIHRhcmdldC5JbmRl
eGVkREJBZ2VudC5kaXNhYmxlKCk7CisgICAgICAgIH0KKworICAgICAgICBXSS5GcmFtZS5yZW1v
dmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworCisgICAgICAgIHRoaXMuX2luaXRp
YWxpemUoKTsKICAgICB9CiAKICAgICByZXF1ZXN0SW5kZXhlZERhdGFiYXNlRGF0YShvYmplY3RT
dG9yZSwgb2JqZWN0U3RvcmVJbmRleCwgc3RhcnRFbnRyeUluZGV4LCBtYXhpbXVtRW50cnlDb3Vu
dCwgY2FsbGJhY2spCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVk
KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQod2luZG93LkluZGV4ZWREQkFnZW50KTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQob2JqZWN0U3RvcmUpOwogICAgICAgICBjb25zb2xlLmFzc2VydChj
YWxsYmFjayk7CkBAIC05OCw2ICsxMjMsOCBAQCBXSS5JbmRleGVkREJNYW5hZ2VyID0gY2xhc3Mg
SW5kZXhlZERCTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgY2xlYXJPYmplY3RTdG9y
ZShvYmplY3RTdG9yZSkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJs
ZWQpOworCiAgICAgICAgIGxldCBzZWN1cml0eU9yaWdpbiA9IG9iamVjdFN0b3JlLnBhcmVudERh
dGFiYXNlLnNlY3VyaXR5T3JpZ2luOwogICAgICAgICBsZXQgZGF0YWJhc2VOYW1lID0gb2JqZWN0
U3RvcmUucGFyZW50RGF0YWJhc2UubmFtZTsKICAgICAgICAgbGV0IG9iamVjdFN0b3JlTmFtZSA9
IG9iamVjdFN0b3JlLm5hbWU7CkBAIC0xMDcsMjEgKzEzNCwyMSBAQCBXSS5JbmRleGVkREJNYW5h
Z2VyID0gY2xhc3MgSW5kZXhlZERCTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICBfaW5pdGlh
bGl6ZSgpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFu
Y2VvZiBXSS5GcmFtZSk7CisgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZXMgPSBbXTsKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSW5kZXhlZERCTWFuYWdlci5F
dmVudC5DbGVhcmVkKTsKIAotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkp
IHsKLSAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJhbWUs
IHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxpc3Qgb2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2
aWdhdGluZyB0byBhIG5ldyBwYWdlLgotICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7Ci0g
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5JbmRleGVkREJNYW5h
Z2VyLkV2ZW50LkNsZWFyZWQpOwotCi0gICAgICAgICAgICB0aGlzLl9hZGRJbmRleGVkREJEYXRh
YmFzZXNJZk5lZWRlZChldmVudC50YXJnZXQpOwotICAgICAgICB9CisgICAgICAgIGxldCBtYWlu
RnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWU7CisgICAgICAgIGlmIChtYWluRnJh
bWUpCisgICAgICAgICAgICB0aGlzLl9hZGRJbmRleGVkREJEYXRhYmFzZXNJZk5lZWRlZChtYWlu
RnJhbWUpOwogICAgIH0KIAogICAgIF9hZGRJbmRleGVkREJEYXRhYmFzZXNJZk5lZWRlZChmcmFt
ZSkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKwogICAgICAgICBpZiAoIXdpbmRvdy5JbmRleGVkREJBZ2VudCkKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTgzLDYgKzIxMCwxNCBAQCBXSS5JbmRleGVkREJNYW5hZ2VyID0gY2xhc3Mg
SW5kZXhlZERCTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBJbmRleGVkREJBZ2Vu
dC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhzZWN1cml0eU9yaWdpbiwgcHJvY2Vzc0RhdGFiYXNlTmFt
ZXMuYmluZCh0aGlzKSk7CiAgICAgfQogCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVu
dCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9m
IFdJLkZyYW1lKTsKKworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCisg
ICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplKCk7CisgICAgfQorCiAgICAgX3NlY3VyaXR5T3Jp
Z2luRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQu
dGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IGU3MTBlYzY1NzNkOGU3NDc3NDM3YWI3NzliYWYy
YmU4MTUwYWNlMWYuLmMwMDIxODNlZjQ4ODdiNGFkNGI0ZmJkYjUyZGFlZjY2NDBmMTUyNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTgz
LDE0ICs4MywxNyBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMi
Pjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0luc3BlY3Rvck9ic2VydmVy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQXBwbGljYXRpb25DYWNo
ZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1BVUHJv
ZmlsZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0NT
U09ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ2FudmFz
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Db25zb2xl
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9ET01PYnNl
cnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RPTVN0b3JhZ2VP
YnNlcnZlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RhdGFiYXNl
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9EZWJ1Z2dl
ck9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSGVhcE9i
c2VydmVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9y
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9MYXllclRy
ZWVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL01lbW9y
eU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTmV0d29y
a09ic2VydmVyLmpzIj48L3NjcmlwdD4KQEAgLTIzMiw2ICsyMzUsNyBAQAogICAgIDxzY3JpcHQg
c3JjPSJQcm94aWVzL0hlYXBTbmFwc2hvdFdvcmtlclByb3h5LmpzIj48L3NjcmlwdD4KIAogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdl
TGV4ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ2FudmFzTWFu
YWdlci5qcyI+PC9zY3JpcHQ+CkBAIC0yMzksOSArMjQzLDExIEBACiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IkNvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJDb250cm9sbGVycy9ET01TdG9yYWdlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0hBUkJ1aWxkZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9IZWFwTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9MYXllclRyZWVNYW5hZ2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rl
c3QvVGVzdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVz
dC5qcwppbmRleCA1MDU0ZjRkMDIzMGRiOTdmMWRlYWM4ODNkMDNhYTE5N2EyZmVmYmIzLi5kYTU0
ZGFmOWNkNDljMDI0YTdjMjExYWUxMmM0OTBiY2E3OTIyZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBAIC0zNiw5ICszNiwxMSBA
QCBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRl
YnVnZ2VyRGlzcGF0Y2hlcihuZXcgV0kuRGVidWdnZXJPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckhlYXBEaXNwYXRjaGVyKG5ldyBXSS5IZWFwT2JzZXJ2ZXIpOwogICAg
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJNZW1vcnlEaXNwYXRjaGVyKG5ldyBXSS5NZW1vcnlP
YnNlcnZlcik7CisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRhdGFiYXNlRGlzcGF0Y2hl
cihuZXcgV0kuRGF0YWJhc2VPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckRPTVN0b3JhZ2VEaXNwYXRjaGVyKG5ldyBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIpOwotICAgIElu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJTY3JpcHRQcm9maWxlckRpc3BhdGNoZXIobmV3IFdJLlNj
cmlwdFByb2ZpbGVyT2JzZXJ2ZXIpOworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBcHBs
aWNhdGlvbkNhY2hlRGlzcGF0Y2hlcihuZXcgV0kuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyKTsK
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ1BVUHJvZmlsZXJEaXNwYXRjaGVyKG5ldyBX
SS5DUFVQcm9maWxlck9ic2VydmVyKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyU2Ny
aXB0UHJvZmlsZXJEaXNwYXRjaGVyKG5ldyBXSS5TY3JpcHRQcm9maWxlck9ic2VydmVyKTsKICAg
ICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyVGltZWxpbmVEaXNwYXRjaGVyKG5ldyBXSS5UaW1l
bGluZU9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ1NTRGlzcGF0Y2hl
cihuZXcgV0kuQ1NTT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJMYXll
clRyZWVEaXNwYXRjaGVyKG5ldyBXSS5MYXllclRyZWVPYnNlcnZlcik7CkBAIC01MSwxMiArNTMs
MTUgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBXSS50YXJnZXRNYW5hZ2VyID0g
bmV3IFdJLlRhcmdldE1hbmFnZXIsCiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyID0gbmV3IFdJ
Lk5ldHdvcmtNYW5hZ2VyLAogICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlciA9IG5ldyBXSS5E
T01TdG9yYWdlTWFuYWdlciwKKyAgICAgICAgV0kuZGF0YWJhc2VNYW5hZ2VyID0gbmV3IFdJLkRh
dGFiYXNlTWFuYWdlciwKKyAgICAgICAgV0kuaW5kZXhlZERCTWFuYWdlciA9IG5ldyBXSS5JbmRl
eGVkREJNYW5hZ2VyLAogICAgICAgICBXSS5kb21NYW5hZ2VyID0gbmV3IFdJLkRPTU1hbmFnZXIs
CiAgICAgICAgIFdJLmNzc01hbmFnZXIgPSBuZXcgV0kuQ1NTTWFuYWdlciwKICAgICAgICAgV0ku
Y29uc29sZU1hbmFnZXIgPSBuZXcgV0kuQ29uc29sZU1hbmFnZXIsCiAgICAgICAgIFdJLnJ1bnRp
bWVNYW5hZ2VyID0gbmV3IFdJLlJ1bnRpbWVNYW5hZ2VyLAogICAgICAgICBXSS5oZWFwTWFuYWdl
ciA9IG5ldyBXSS5IZWFwTWFuYWdlciwKICAgICAgICAgV0kubWVtb3J5TWFuYWdlciA9IG5ldyBX
SS5NZW1vcnlNYW5hZ2VyLAorICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9IG5l
dyBXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwKICAgICAgICAgV0kudGltZWxpbmVNYW5hZ2Vy
ID0gbmV3IFdJLlRpbWVsaW5lTWFuYWdlciwKICAgICAgICAgV0kuYXVkaXRNYW5hZ2VyID0gbmV3
IFdJLkF1ZGl0TWFuYWdlciwKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyID0gbmV3IFdJLkRl
YnVnZ2VyTWFuYWdlciwKQEAgLTEyNyw3ICsxMzIsMTEgQEAgV0kucmVkaXJlY3RHbG9iYWxBZ2Vu
dHNUb0Nvbm5lY3Rpb24gPSBmdW5jdGlvbihjb25uZWN0aW9uKQogV0kuY29udGVudExvYWRlZCA9
IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBUaGluZ3MgdGhhdCB3b3VsZCBub3JtYWxseSBnZXQgY2Fs
bGVkIGJ5IHRoZSBVSSwgdGhhdCB3ZSBzdGlsbCB3YW50IHRvIGRvIGluIHRlc3RzLgorICAgIFdJ
LmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmVuYWJsZSgpOwogICAgIFdJLmNhbnZhc01hbmFnZXIu
ZW5hYmxlKCk7CisgICAgV0kuZG9tU3RvcmFnZU1hbmFnZXIuZW5hYmxlKCk7CisgICAgV0kuZGF0
YWJhc2VNYW5hZ2VyLmVuYWJsZSgpOworICAgIFdJLmluZGV4ZWREQk1hbmFnZXIuZW5hYmxlKCk7
CiAKICAgICAvLyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2Vp
dmUgbWVzc2FnZXMuCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3Rv
cmFnZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDM3ZTM3M2NhOWM2NDNiMTIx
MGQxMWM2NjdlYzU4ZDAxY2I3ODI4ZDUuLjRiZWExZjU3NTYxZmE1NjFjMmJhNTk5YmI2NWM1OWZj
MTU1ZjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMKQEAgLTMxLDYg
KzMxLDExIEBAIFdJLlN0b3JhZ2VUYWJDb250ZW50VmlldyA9IGNsYXNzIFN0b3JhZ2VUYWJDb250
ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyCiAgICAgICAgIGxldCBkZXRhaWxzU2lk
ZWJhclBhbmVsQ29uc3RydWN0b3JzID0gW1dJLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJh
clBhbmVsLCBXSS5JbmRleGVkRGF0YWJhc2VEZXRhaWxzU2lkZWJhclBhbmVsXTsKIAogICAgICAg
ICBzdXBlcihpZGVudGlmaWVyIHx8ICJzdG9yYWdlIiwgInN0b3JhZ2UiLCB0YWJCYXJJdGVtLCBX
SS5TdG9yYWdlU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzKTsK
KworICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5lbmFibGUoKTsKKyAgICAgICAgV0kuZGF0
YWJhc2VNYW5hZ2VyLmVuYWJsZSgpOworICAgICAgICBXSS5pbmRleGVkREJNYW5hZ2VyLmVuYWJs
ZSgpOworICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5lbmFibGUoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgdGFiSW5mbygpCkBAIC02NSw2ICs3MCwxNiBAQCBXSS5TdG9yYWdlVGFi
Q29udGVudFZpZXcgPSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50QnJvd3NlcgogICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5B
cHBsaWNhdGlvbkNhY2hlRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSB8fAogICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXSS5JbmRleGVkRGF0YWJhc2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXSS5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4OwogICAgIH0KKworICAg
IGNsb3NlZCgpCisgICAgeworICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5kaXNh
YmxlKCk7CisgICAgICAgIFdJLmluZGV4ZWREQk1hbmFnZXIuZGlzYWJsZSgpOworICAgICAgICBX
SS5kYXRhYmFzZU1hbmFnZXIuZGlzYWJsZSgpOworICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdl
ci5kaXNhYmxlKCk7CisKKyAgICAgICAgc3VwZXIuY2xvc2VkKCk7CisgICAgfQogfTsKIAogV0ku
U3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5cGUgPSAic3RvcmFnZSI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375347</attachid>
            <date>2019-08-01 14:32:13 -0700</date>
            <delta_ts>2019-08-01 17:00:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200117-20190801143212.patch</filename>
            <type>text/plain</type>
            <size>43446</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE5NDllZTdhMDYwZTIzNTRmZGJhMmU2ZTVkODVl
Mjk5ZmMxNWVkZTEuLjlmMTMyNzUzZmRhOTQ4MGU3ODNhYWQ3NTRhYjA1MzMzNjIxZmNkNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTAxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
dG9yYWdlOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDExNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld29yayBob3cg
YGVuYWJsZWAvYGRpc2FibGVgIGlzIHVzZWQgZm9yIHN0b3JhZ2UtcmVsYXRlZCBhZ2VudHMgc28g
dGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQgYWxp
dmUgd2hlbiB0aGUgU3RvcmFnZSB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlLmpzb246CisgICAgICAgIEFkZCBgZGlzYWJs
ZWAgY29tbWFuZC4KKwogMjAxOS0wNy0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2luIG9yZ2FuaXppbmcgYjMgdGVzdHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4MGUyNTJkNDJmYzg4NWYwZWM2YzU0MDY2NjQ1N2I1MjdkZmQ1NDM1Li4yOTgzMjY0
MTMwODRhMzM2NTAwOTU4YzAzOTlmYzQ4MTAxYWNiYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTktMDgtMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0b3JhZ2U6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hl
biB0aGUgdGFiIGlzIGNsb3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAwMTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmV3b3JrIGhvdyBgZW5hYmxlYC9gZGlzYWJsZWAgaXMgdXNlZCBmb3Igc3Rv
cmFnZS1yZWxhdGVkIGFnZW50cyBzbyB0aGF0IGV2ZW50cyBhcmUgbm90IHNlbnQKKyAgICAgICAg
YW5kIGRhdGEgaXNuJ3Qga2VwdCBhbGl2ZSB3aGVuIHRoZSBTdG9yYWdlIHRhYiBpc24ndCBlbmFi
bGVkLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50OjpkaXNhYmxlKTogQWRkZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUpOgorCisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNhYmxlKToKKwogMjAxOS0wOC0wMSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIFdlYlNvY2tl
dHM6IGFkZCBzdXBwb3J0IGZvciBleHRlbnNpb25zIHdoZW4gdXNpbmcgd2ViIHNvY2tldHMgbGli
c291cCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGE0NGQ5OTg1ODNiMzllMWQ4MjVj
ZGY0NWU4OTQ0N2I0OTFjZmI2Y2YuLjNmZDk3ZTE0MWIxNjg0MWRkNDhmOTAxNGM4ZmQ5NzBmNzQ0
OGE5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE5LTA4
LTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTdG9yYWdlOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBj
bG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDExNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
d29yayBob3cgYGVuYWJsZWAvYGRpc2FibGVgIGlzIHVzZWQgZm9yIHN0b3JhZ2UtcmVsYXRlZCBh
Z2VudHMgc28gdGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0
IGtlcHQgYWxpdmUgd2hlbiB0aGUgU3RvcmFnZSB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanM6
CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik6CisgICAgICAgIChXSS5BcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6CisgICAgICAg
IChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlLnByb3RvdHlwZS5nZXQgbWFuYWdlZERvbWFpbnMp
OiBBZGRlZC46CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUu
ZW5hYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90
b3R5cGUuZGlzYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIucHJvdG90eXBlLm5ldHdvcmtTdGF0ZVVwZGF0ZWQpOgorICAgICAgICAoV0kuQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIucHJvdG90eXBlLmFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKToK
KyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5fcmVzZXQpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5fbWFp
blJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LnByb3RvdHlwZS5fbWFuaWZlc3RGb3JGcmFtZUxvYWRlZCk6CisgICAgICAgIChXSS5BcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lc1dpdGhNYW5pZmVzdHNMb2FkZWQpOgor
ICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUp
OiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01TdG9y
YWdlTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAg
KFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAg
ICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5nZXQgbWFuYWdlZERvbWFpbnMpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5kaXNhYmxlKTog
QWRkZWQuCisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaXRlbXNDbGVh
cmVkKToKKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5pdGVtUmVtb3Zl
ZCk6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaXRlbUFkZGVkKToK
KyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5pdGVtVXBkYXRlZCk6Cisg
ICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaW5zcGVjdERPTVN0b3JhZ2Up
OgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLl9yZXNldCk6IEFkZGVk
LgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLl9hZGRET01TdG9yYWdl
SWZOZWVkZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLl9hZGRD
b29raWVTdG9yYWdlSWZOZWVkZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJv
dG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1h
bmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NU3Rv
cmFnZU1hbmFnZXIucHJvdG90eXBlLmRvbVN0b3JhZ2VXYXNBZGRlZCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qczoKKyAg
ICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXSS5EYXRhYmFzZU1hbmFnZXIu
cHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuRGF0YWJhc2VNYW5hZ2Vy
LnByb3RvdHlwZS5nZXQgbWFuYWdlZERvbWFpbnMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRhdGFi
YXNlTWFuYWdlci5wcm90b3R5cGUuZW5hYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5EYXRhYmFz
ZU1hbmFnZXIucHJvdG90eXBlLmRpc2FibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRhdGFiYXNl
TWFuYWdlci5wcm90b3R5cGUuZGF0YWJhc2VXYXNBZGRlZCk6CisgICAgICAgIChXSS5EYXRhYmFz
ZU1hbmFnZXIucHJvdG90eXBlLmluc3BlY3REYXRhYmFzZSk6CisgICAgICAgIChXSS5EYXRhYmFz
ZU1hbmFnZXIucHJvdG90eXBlLl9yZXNldCk6IEFkZGVkLgorICAgICAgICAoV0kuRGF0YWJhc2VN
YW5hZ2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRh
dGFiYXNlTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6IERlbGV0ZWQuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanM6CisgICAgICAg
IChXSS5JbmRleGVkREJNYW5hZ2VyKToKKyAgICAgICAgKFdJLkluZGV4ZWREQk1hbmFnZXIucHJv
dG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5w
cm90b3R5cGUuZ2V0IG1hbmFnZWREb21haW5zKTogQWRkZWQuCisgICAgICAgIChXSS5JbmRleGVk
REJNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkluZGV4ZWRE
Qk1hbmFnZXIucHJvdG90eXBlLmRpc2FibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkluZGV4ZWRE
Qk1hbmFnZXIucHJvdG90eXBlLmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV0kuSW5kZXhl
ZERCTWFuYWdlci5wcm90b3R5cGUuX3Jlc2V0KTogQWRkZWQuCisgICAgICAgIChXSS5JbmRleGVk
REJNYW5hZ2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJ
LkluZGV4ZWREQk1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUpOiBEZWxldGVkLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyLmpzOgorICAgICAg
ICAoV0kuQXBwQ29udHJvbGxlci5wcm90b3R5cGUuYWN0aXZhdGVFeHRyYURvbWFpbnMpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qczoKKyAgICAg
ICAgKFdJLkNhbnZhc01hbmFnZXIucHJvdG90eXBlLmdldCBtYW5hZ2VkRG9tYWlucyk6IEFkZGVk
LgorICAgICAgICBPbmx5IGNhbGwgYGVuYWJsZWAgb24gYW55IGV4dHJhIGFnZW50cyBpZiB0aGUg
ZG9tYWluIGlzIG5vdCBjb250cm9sbGVkIGJ5IGEgbWFuYWdlci4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuU3Rv
cmFnZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5z
dGF0aWMgaXNUYWJBbGxvd2VkKToKKyAgICAgICAgKFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5w
cm90b3R5cGUuY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdJLlN0b3JhZ2VU
YWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkKTogQWRkZWQuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5q
czoKKyAgICAgICAgKFdJLmxvYWRlZCk6CisgICAgICAgIChXSS5jb250ZW50TG9hZGVkKToKKwog
MjAxOS0wNy0zMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogRGVidWdnZXI6IHN1cHBvcnQgZW11bGF0ZVVzZXJHZXN0dXJlIHBhcmFt
ZXRlciBpbiBEZWJ1Z2dlci5ldmFsdWF0ZU9uQ2FsbEZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGUuanNvbiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNo
ZS5qc29uCmluZGV4IDllZjc5YjBkMzQxNzVjYjc5Mjk0ZTQwZDM3MzgwZTE2MDFiMzVhNWMuLjk3
NDA0NzQ2NDMyMmFkOWM3Y2Q5YTVjNjc0Yjg1M2UwMjFmY2E3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29u
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRp
b25DYWNoZS5qc29uCkBAIC00Nyw2ICs0NywxMCBAQAogICAgICAgICAgICAgIm5hbWUiOiAiZW5h
YmxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIGFwcGxpY2F0aW9uIGNh
Y2hlIGRvbWFpbiBub3RpZmljYXRpb25zLiIKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlz
YWJsZSBhcHBsaWNhdGlvbiBjYWNoZSBkb21haW4gbm90aWZpY2F0aW9ucy4iCisgICAgICAgIH0s
CiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImdldE1hbmlmZXN0Rm9yRnJhbWUiLAog
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgbWFuaWZlc3QgVVJMIGZvciBkb2N1
bWVudCBpbiB0aGUgZ2l2ZW4gZnJhbWUuIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcAppbmRleCBiN2VjY2I5YTk5MDJhMzllNmI4MTVkMmVmMDBiNDlmOWNiNGE3NDkxLi4xNjQ2
ZDk5MTRmMWI3MjA5ODMzZWYwOWI2ZTgyMjg1NTljNDEzOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwCkBAIC01NiwxNyArNTYsMzMgQEAgdm9pZCBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJv
dXRlcioKIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51
bGxwdHIpOworICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICBkaXNhYmxlKHVudXNlZCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjplbmFibGUoRXJyb3JTdHJp
bmcmKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcpCiB7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSA9PSB0aGlzKSB7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gIkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KHRoaXMpOwogCiAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGlu
aXRpYWwgbmF2aWdhdG9yLm9uT25saW5lLgogICAgIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0K
IAordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nKQoreworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgIT0gdGhpcykgeworICAgICAgICBlcnJvclN0cmlu
ZyA9ICJBcHBsaWNhdGlvbkNhY2hlQWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQobnVsbHB0cik7Cit9CisKIHZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKiBmcmFt
ZSkKIHsKICAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yUGFnZUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCA2NDBm
MGE0ODc4ZWExMWNmOTExZmRjMmM2MjFiODE0ZmE5YjI1YjQyLi4zOTIyMTQ5NGFjNjYwZTkxNTkx
NzM5YTRhNDI2ZTdjMDlkMzE3Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
QEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogCiAgICAgLy8gQXBwbGljYXRpb25DYWNoZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+
PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcAppbmRleCA2MWE5ZTExYmQ5OGJjZGVlZDMxYmJkNzY0MWQzOTY5MjZmMjdkMGMwLi43
OTUwNzg1OTBlZDVmYjk3M2VlYTdhY2Y2OGZhOTM1NDE4MGMzNzMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwCkBAIC03MiwxMyArNzIsMjMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmUKICAg
ICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpl
bmFibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJs
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKSAhPSB0aGlzKSB7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIkRPTVN0b3JhZ2VBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9zOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudCh0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogeworICAgIGlmIChtX2luc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkgIT0gdGhpcykgeworICAgICAgICBl
cnJvclN0cmluZyA9ICJET01TdG9yYWdlQWdlbnQgYWxyZWFkeSBkaXNhYmxlZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQobnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4
IGY0MDgxNGUxNjY2NTAyMDdmNDg3OWM2NGUwYmEwZTg0Y2VlNWRlZjEuLmIzN2E1NjBjZTgwNzY4
YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjMy
LDEwICsyMzIsMTIgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3QKICAgICBkaXNhYmxlKHVudXNl
ZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFi
YXNlQWdlbnQoKSA9PSB0aGlzKQorICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yRGF0YWJhc2VBZ2VudCgpID09IHRoaXMpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRGF0
YWJhc2VBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCh0aGlz
KTsKIApAQCAtMjQzLDggKzI0NSwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVu
YWJsZShFcnJvclN0cmluZyYpCiAgICAgICAgIGRpZE9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQo
KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmlu
ZyYpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nKQogeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0
YWJhc2VBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRGF0YWJhc2VB
Z2VudCBhbHJlYWR5IGRpc2FibGVkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQobnVsbHB0cik7
CiAKICAgICBtX3Jlc291cmNlcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXIu
anMKaW5kZXggMzI0NjlhZjQ4MGZkYjAzMzc3YmFhY2Y0NzUwN2RkMDVhNzFjOTBiYi4uZTFjZGJj
ZGYzMDFmMjdkNDk5MGJiOTUyN2ZlZTMzOGNmNTQxMjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBD
b250cm9sbGVyLmpzCkBAIC03Miw4ICs3MiwxMyBAQCBXSS5BcHBDb250cm9sbGVyID0gY2xhc3Mg
QXBwQ29udHJvbGxlciBleHRlbmRzIFdJLkFwcENvbnRyb2xsZXJCYXNlCiAKICAgICAgICAgZm9y
IChsZXQgZG9tYWluIG9mIGRvbWFpbnMpIHsKICAgICAgICAgICAgIGxldCBhZ2VudCA9IEluc3Bl
Y3RvckJhY2tlbmQuYWN0aXZhdGVEb21haW4oZG9tYWluKTsKLSAgICAgICAgICAgIGlmIChhZ2Vu
dC5lbmFibGUpCi0gICAgICAgICAgICAgICAgYWdlbnQuZW5hYmxlKCk7CisKKyAgICAgICAgICAg
IC8vIE9ubHkgZW5hYmxlIHRoZSBhZ2VudCBpZiB0aGUgZG9tYWluIGlzIG5vdCBjb250cm9sbGVk
IGJ5IGEgbWFuYWdlci4KKyAgICAgICAgICAgIGlmICghV0kubWFuYWdlcnMuc29tZSgobWFuYWdl
cikgPT4gbWFuYWdlci5tYW5hZ2VkRG9tYWlucyAmJiBtYW5hZ2VyLm1hbmFnZWREb21haW5zLmlu
Y2x1ZGVzKGRvbWFpbikpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFnZW50LmVuYWJsZSkKKyAg
ICAgICAgICAgICAgICAgICAgYWdlbnQuZW5hYmxlKCk7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQogICAgICAgICAgICAgICAgIHRh
cmdldC5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKaW5kZXggMjBmNjkxOGRlY2Q1
YzA5ODc0MjMxZGJmNWZkMzNlZmEzYTgxOGY1ZS4uMjcyNmM4M2NlZDU4ZjRhYzI2ODA4OWJhZGNh
ZDIwZTliNmFiZTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuanMKQEAgLTMxLDE4ICszMSwxNyBAQCBXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ciA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ewogICAgICAgICBzdXBlcigpOwogCi0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIo
V0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VE
aWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZy
YW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3Zl
ZCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fb25saW5lID0gdHJ1ZTsKLQotICAgICAgICB0aGlz
LmluaXRpYWxpemUoKTsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0
aGlzLl9yZXNldCgpOwogICAgIH0KIAogICAgIC8vIFRhcmdldAogCiAgICAgaW5pdGlhbGl6ZVRh
cmdldCh0YXJnZXQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAg
ICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHRhcmdldC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQp
IHsKICAgICAgICAgICAgIHRhcmdldC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQuZW5hYmxlKCk7CiAg
ICAgICAgICAgICB0YXJnZXQuQXBwbGljYXRpb25DYWNoZUFnZW50LmdldEZyYW1lc1dpdGhNYW5p
ZmVzdHModGhpcy5fZnJhbWVzV2l0aE1hbmlmZXN0c0xvYWRlZC5iaW5kKHRoaXMpKTsKQEAgLTUx
LDEwICs1MCw5IEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCi0gICAg
aW5pdGlhbGl6ZSgpCi0gICAgewotICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0
cyA9IHt9OwotICAgIH0KKyAgICBnZXQgYWdlbnREb21haW4oKSB7IHJldHVybiBbIkFwcGxpY2F0
aW9uQ2FjaGUiXTsgfQorCisgICAgZ2V0IG9ubGluZSgpIHsgcmV0dXJuIHRoaXMuX29ubGluZTsg
fQogCiAgICAgZ2V0IGFwcGxpY2F0aW9uQ2FjaGVPYmplY3RzKCkKICAgICB7CkBAIC02NCwyOSAr
NjIsNDIgQEAgV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gYXBwbGljYXRpb25D
YWNoZU9iamVjdHM7CiAgICAgfQogCi0gICAgbmV0d29ya1N0YXRlVXBkYXRlZChpc05vd09ubGlu
ZSkKKyAgICBlbmFibGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5fb25saW5lID0gaXNOb3dPbmxp
bmU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9lbmFibGVkKTsKIAotICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5F
dmVudC5OZXR3b3JrU3RhdGVVcGRhdGVkLCB7b25saW5lOiB0aGlzLl9vbmxpbmV9KTsKKyAgICAg
ICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKworICAg
ICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuaW5p
dGlhbGl6ZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJ
LkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVt
b3ZlZCwgdGhpcyk7CiAgICAgfQogCi0gICAgZ2V0IG9ubGluZSgpCisgICAgZGlzYWJsZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fb25saW5lOwotICAgIH0KKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CiAKLSAgICBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBk
YXRlZChmcmFtZUlkLCBtYW5pZmVzdFVSTCwgc3RhdHVzKQotICAgIHsKLSAgICAgICAgdmFyIGZy
YW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJhbWVGb3JJZGVudGlmaWVyKGZyYW1lSWQpOwotICAg
ICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9lbmFi
bGVkID0gZmFsc2U7CiAKLSAgICAgICAgdGhpcy5fZnJhbWVNYW5pZmVzdFVwZGF0ZWQoZnJhbWUs
IG1hbmlmZXN0VVJMLCBzdGF0dXMpOworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFy
Z2V0cykgeworICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTogQXBwbGljYXRp
b25DYWNoZS5kaXNhYmxlIGRpZCBub3QgZXhpc3QgeWV0LgorICAgICAgICAgICAgaWYgKHRhcmdl
dC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQgJiYgdGFyZ2V0LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5k
aXNhYmxlKQorICAgICAgICAgICAgICAgIHRhcmdldC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQuZGlz
YWJsZSgpOworICAgICAgICB9CisKKyAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0KIAog
ICAgIHJlcXVlc3RBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLCBjYWxsYmFjaykKICAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrV3JhcHBlcihlcnJvciwgYXBwbGljYXRpb25DYWNoZSkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKGVycm9yKSB7CkBAIC0xMDAsMTggKzExMSw0NiBAQCBXSS5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlciA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5nZXRBcHBsaWNhdGlvbkNhY2hlRm9y
RnJhbWUoZnJhbWUuaWQsIGNhbGxiYWNrV3JhcHBlcik7CiAgICAgfQogCisgICAgbmV0d29ya1N0
YXRlVXBkYXRlZChpc05vd09ubGluZSkKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJ
LkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci4KKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9vbmxpbmUgPSBpc05vd09ubGluZTsKKworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5BcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5FdmVudC5OZXR3b3JrU3RhdGVVcGRhdGVkLCB7b25saW5lOiB0aGlzLl9vbmxpbmV9KTsK
KyAgICB9CisKKyAgICBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChmcmFtZUlkLCBtYW5p
ZmVzdFVSTCwgc3RhdHVzKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQXBwbGlj
YXRpb25DYWNoZU9ic2VydmVyLgorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJs
ZWQpOworCisgICAgICAgIGxldCBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRl
bnRpZmllcihmcmFtZUlkKTsKKyAgICAgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9mcmFtZU1hbmlmZXN0VXBkYXRlZChmcmFtZSwgbWFuaWZlc3RV
UkwsIHN0YXR1cyk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCisgICAgX3Jlc2V0KCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX29ubGluZSA9IHRydWU7CisgICAgICAgIHRoaXMuX2FwcGxpY2F0
aW9uQ2FjaGVPYmplY3RzID0ge307CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CisgICAgfQor
CiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKIAogICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJhbWUsIHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxpc3Qg
b2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLgotICAg
ICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7Ci0KLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQp
OwotCisgICAgICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTEyNiw3ICsxNjUsMTIgQEAgV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIg
PSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
X21hbmlmZXN0Rm9yRnJhbWVMb2FkZWQoZnJhbWVJZCwgZXJyb3IsIG1hbmlmZXN0VVJMKQogICAg
IHsKLSAgICAgICAgaWYgKGVycm9yKQorICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAg
IFdJLnJlcG9ydEludGVybmFsRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHZhciBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRp
ZmllcihmcmFtZUlkKTsKQEAgLTEzOSw3ICsxODMsMTIgQEAgV0kuQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgX2ZyYW1lc1dpdGhNYW5pZmVzdHNMb2FkZWQoZXJyb3IsIGZyYW1lc1dpdGhNYW5pZmVz
dHMpCiAgICAgewotICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXNXaXRoTWFuaWZl
c3RzLmxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcwppbmRleCA4
ODc2NmNlNTQ2YTFmYmQ5OWFiMWRhY2M4MWJhNDc5YzNmZWQyZDE1Li44ZDgzMzU1OGVlMDM4YjIz
YWUyODljN2I2OGUwNDJjNGZiYmIyNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIu
anMKQEAgLTYzLDYgKzYzLDggQEAgV0kuQ2FudmFzTWFuYWdlciA9IGNsYXNzIENhbnZhc01hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFB1YmxpYwogCisgICAgZ2V0IGFnZW50RG9t
YWlucygpIHsgcmV0dXJuIFsiQ2FudmFzIl07IH0KKwogICAgIGdldCBzYXZlZFJlY29yZGluZ3Mo
KSB7IHJldHVybiB0aGlzLl9zYXZlZFJlY29yZGluZ3M7IH0KIAogICAgIGdldCBjYW52YXNlcygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9ET01TdG9yYWdlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzCmluZGV4IGVhYjk3ZjQwYTVi
MDZjNzQyMzEzYWE4OTgxMmM1MWVlZjk5YWI0YTIuLjI1YTQyZGRlNzRhZmFlOWZmNmQ2ZGYxNzY1
ZGVlNzNlODQ2OTdiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpz
CkBAIC0zMiwzMiArMzIsMjYgQEAgV0kuRE9NU3RvcmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9y
YWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAot
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAg
ICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5TZWN1cml0eU9yaWdp
bkRpZENoYW5nZSwgdGhpcy5fc2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAg
ICAgIHRoaXMuaW5pdGlhbGl6ZSgpOworICAgICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX3Jlc2V0KCk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0
aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LkRPTVN0b3JhZ2VBZ2Vu
dCkKICAgICAgICAgICAgIHRhcmdldC5ET01TdG9yYWdlQWdlbnQuZW5hYmxlKCk7CiAgICAgfQog
CiAgICAgLy8gUHVibGljCiAKLSAgICBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X2RvbVN0b3JhZ2VPYmplY3RzID0gW107Ci0gICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmpl
Y3RzID0ge307Ci0gICAgfQorICAgIGdldCBhZ2VudERvbWFpbnMoKSB7IHJldHVybiBbIkRPTVN0
b3JhZ2UiXTsgfQogCi0gICAgZ2V0IGRvbVN0b3JhZ2VPYmplY3RzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9kb21TdG9yYWdlT2JqZWN0czsKLSAgICB9CisgICAgZ2V0IGRvbVN0b3Jh
Z2VPYmplY3RzKCkgeyByZXR1cm4gdGhpcy5fZG9tU3RvcmFnZU9iamVjdHM7IH0KIAogICAgIGdl
dCBjb29raWVTdG9yYWdlT2JqZWN0cygpCiAgICAgewpAQCAtNjcsMTggKzYxLDQzIEBAIFdJLkRP
TVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPYmplY3RzOwogICAgIH0KIAotICAgIGRv
bVN0b3JhZ2VXYXNBZGRlZChpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCisgICAgZW5hYmxlKCkK
ICAgICB7Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gbmV3IFdJLkRPTVN0b3JhZ2VPYmplY3Qo
aWQsIGhvc3QsIGlzTG9jYWxTdG9yYWdlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X2VuYWJsZWQpOwogCi0gICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLnB1c2goZG9tU3Rv
cmFnZSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVN0b3Jh
Z2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwge2RvbVN0b3JhZ2V9KTsK
KyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsK
KworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRo
aXMuaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWlu
UmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1cml0
eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9l
bmFibGVkID0gZmFsc2U7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMp
IHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAgICAg
ICAgIHRhcmdldC5ET01TdG9yYWdlQWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisKKyAgICAg
ICAgV0kuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKworICAg
ICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0KIAogICAgIGl0ZW1zQ2xlYXJlZChzdG9yYWdlSWQp
CiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIuCiAK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgbGV0IGRv
bVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOwogICAg
ICAgICBpZiAoZG9tU3RvcmFnZSkKICAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbXNDbGVhcmVk
KHN0b3JhZ2VJZCk7CkBAIC04OCw2ICsxMDcsOCBAQCBXSS5ET01TdG9yYWdlTWFuYWdlciA9IGNs
YXNzIERPTVN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICAv
LyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIuCiAKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9k
b21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOwogICAgICAgICBpZiAoZG9tU3RvcmFn
ZSkKICAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbVJlbW92ZWQoa2V5KTsKQEAgLTk3LDYgKzEx
OCw4IEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTVN0b3Jh
Z2VPYnNlcnZlci4KIAorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwog
ICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKHN0
b3JhZ2VJZCk7CiAgICAgICAgIGlmIChkb21TdG9yYWdlKQogICAgICAgICAgICAgZG9tU3RvcmFn
ZS5pdGVtQWRkZWQoa2V5LCB2YWx1ZSk7CkBAIC0xMDYsNiArMTI5LDggQEAgV0kuRE9NU3RvcmFn
ZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
IHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuRE9NU3RvcmFnZU9ic2VydmVyLgogCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGxldCBkb21TdG9y
YWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoc3RvcmFnZUlkKTsKICAgICAgICAg
aWYgKGRvbVN0b3JhZ2UpCiAgICAgICAgICAgICBkb21TdG9yYWdlLml0ZW1VcGRhdGVkKGtleSwg
b2xkVmFsdWUsIHZhbHVlKTsKQEAgLTExMyw2ICsxMzgsMTAgQEAgV0kuRE9NU3RvcmFnZU1hbmFn
ZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgaW5z
cGVjdERPTVN0b3JhZ2UoaWQpCiAgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5JbnNw
ZWN0b3JPYnNlcnZlci4KKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsK
KwogICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVy
KGlkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tU3RvcmFnZSk7CiAgICAgICAgIGlmICgh
ZG9tU3RvcmFnZSkKQEAgLTEyMiw2ICsxNTEsMjAgQEAgV0kuRE9NU3RvcmFnZU1hbmFnZXIgPSBj
bGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHJpdmF0
ZQogCisgICAgX3Jlc2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3Rz
ID0gW107CisgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzID0ge307CisKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQu
Q2xlYXJlZCk7CisKKyAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1h
aW5GcmFtZTsKKyAgICAgICAgaWYgKG1haW5GcmFtZSkgeworICAgICAgICAgICAgdGhpcy5fYWRk
RE9NU3RvcmFnZUlmTmVlZGVkKG1haW5GcmFtZSk7CisgICAgICAgICAgICB0aGlzLl9hZGRDb29r
aWVTdG9yYWdlSWZOZWVkZWQobWFpbkZyYW1lKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIF9k
b21TdG9yYWdlRm9ySWRlbnRpZmllcihpZCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIHN0b3Jh
Z2VPYmplY3Qgb2YgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMpIHsKQEAgLTEzMywyMCArMTc2LDQz
IEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCi0gICAgX21haW5SZXNv
dXJjZURpZENoYW5nZShldmVudCkKKyAgICBfYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGZyYW1lKQog
ICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0ku
RnJhbWUpOworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAg
ICAvLyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3ZSB3YW50IHRvIGNs
ZWFyIG91ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmlnYXRpbmcgdG8gYSBu
ZXcgcGFnZS4KLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ2xl
YXJlZCk7CisgICAgICAgIGlmICghd2luZG93LkRPTVN0b3JhZ2VBZ2VudCkKKyAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgdGhpcy5fYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGV2ZW50
LnRhcmdldCk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gRG9uJ3Qgc2hvdyBzdG9yYWdlIGlmIHdl
IGRvbid0IGhhdmUgYSBzZWN1cml0eSBvcmlnaW4gKGFib3V0OmJsYW5rKS4KKyAgICAgICAgaWYg
KCFmcmFtZS5zZWN1cml0eU9yaWdpbiB8fCBmcmFtZS5zZWN1cml0eU9yaWdpbiA9PT0gIjovLyIp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHBhc3Np
bmcgdGhlIG90aGVyIHBhcnRzIG9mIHRoZSBvcmlnaW4gYWxvbmcuCisKKyAgICAgICAgbGV0IGFk
ZERPTVN0b3JhZ2UgPSAoaXNMb2NhbFN0b3JhZ2UpID0+IHsKKyAgICAgICAgICAgIGxldCBpZGVu
dGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBmcmFtZS5zZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0
b3JhZ2V9OworICAgICAgICAgICAgaWYgKHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKGlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbGV0IGRv
bVN0b3JhZ2UgPSBuZXcgV0kuRE9NU3RvcmFnZU9iamVjdChpZGVudGlmaWVyLCBmcmFtZS5tYWlu
UmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCBpZGVudGlmaWVyLmlzTG9jYWxTdG9yYWdlKTsK
KyAgICAgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLnB1c2goZG9tU3RvcmFnZSk7Cisg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhET01TdG9yYWdlTWFuYWdl
ci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHtkb21TdG9yYWdlfSk7CisgICAgICAg
IH07CisgICAgICAgIGFkZERPTVN0b3JhZ2UodHJ1ZSk7CisgICAgICAgIGFkZERPTVN0b3JhZ2Uo
ZmFsc2UpOworICAgIH0KKworICAgIF9hZGRDb29raWVTdG9yYWdlSWZOZWVkZWQoZnJhbWUpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKCF3aW5kb3cuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIC8vIEFkZCB0aGUgaG9zdCBvZiB0aGUgZnJhbWUgdGhhdCBjaGFuZ2VkIHRo
ZSBtYWluIHJlc291cmNlIHRvIHRoZSBsaXN0IG9mIGhvc3RzIHRoZXJlIGNvdWxkIGJlIGNvb2tp
ZXMgZm9yLgotICAgICAgICB2YXIgaG9zdCA9IHBhcnNlVVJMKGV2ZW50LnRhcmdldC51cmwpLmhv
c3Q7CisgICAgICAgIGxldCBob3N0ID0gcGFyc2VVUkwoZnJhbWUudXJsKS5ob3N0OwogICAgICAg
ICBpZiAoIWhvc3QpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE1NywyNCArMjIzLDE2IEBA
IFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NU3Rv
cmFnZU1hbmFnZXIuRXZlbnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7Y29va2llU3Rv
cmFnZTogdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHNbaG9zdF19KTsKICAgICB9CiAKLSAgICBf
YWRkRE9NU3RvcmFnZUlmTmVlZGVkKGZyYW1lKQorICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoIXdpbmRvdy5ET01TdG9yYWdlQWdlbnQpCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKwor
ICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAgIHRo
aXMuX3Jlc2V0KCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICAv
LyBEb24ndCBzaG93IHN0b3JhZ2UgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNlY3VyaXR5IG9yaWdpbiAo
YWJvdXQ6YmxhbmspLgotICAgICAgICBpZiAoIWZyYW1lLnNlY3VyaXR5T3JpZ2luIHx8IGZyYW1l
LnNlY3VyaXR5T3JpZ2luID09PSAiOi8vIikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAvLyBGSVhNRTogQ29uc2lkZXIgcGFzc2luZyB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIG9yaWdp
biBhbG9uZyB0byBkb21TdG9yYWdlV2FzQWRkZWQuCi0KLSAgICAgICAgdmFyIGxvY2FsU3RvcmFn
ZUlkZW50aWZpZXIgPSB7c2VjdXJpdHlPcmlnaW46IGZyYW1lLnNlY3VyaXR5T3JpZ2luLCBpc0xv
Y2FsU3RvcmFnZTogdHJ1ZX07Ci0gICAgICAgIGlmICghdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50
aWZpZXIobG9jYWxTdG9yYWdlSWRlbnRpZmllcikpCi0gICAgICAgICAgICB0aGlzLmRvbVN0b3Jh
Z2VXYXNBZGRlZChsb2NhbFN0b3JhZ2VJZGVudGlmaWVyLCBmcmFtZS5tYWluUmVzb3VyY2UudXJs
Q29tcG9uZW50cy5ob3N0LCB0cnVlKTsKLQotICAgICAgICB2YXIgc2Vzc2lvblN0b3JhZ2VJZGVu
dGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBmcmFtZS5zZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0
b3JhZ2U6IGZhbHNlfTsKLSAgICAgICAgaWYgKCF0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmll
cihzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIpKQotICAgICAgICAgICAgdGhpcy5kb21TdG9yYWdl
V2FzQWRkZWQoc2Vzc2lvblN0b3JhZ2VJZGVudGlmaWVyLCBmcmFtZS5tYWluUmVzb3VyY2UudXJs
Q29tcG9uZW50cy5ob3N0LCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2FkZENvb2tpZVN0b3JhZ2VJ
Zk5lZWRlZChldmVudC50YXJnZXQpOwogICAgIH0KIAogICAgIF9zZWN1cml0eU9yaWdpbkRpZENo
YW5nZShldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcwppbmRleCA5YzBk
NTgzOGY2MWM4MmRhNWNmYzM0ZTI3NmMwNzA3MDQzODlkZDhlLi5iZWQyYWNmZDU4ZmU2MmY0NmNi
NGZkNDU0YmM2OTRiYmM3MzA4YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXRhYmFzZU1hbmFnZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGF0YWJhc2VNYW5hZ2Vy
LmpzCkBAIC0zMiwzNSArMzIsNjMgQEAgV0kuRGF0YWJhc2VNYW5hZ2VyID0gY2xhc3MgRGF0YWJh
c2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0g
ICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAg
ICAgIHRoaXMuaW5pdGlhbGl6ZSgpOworICAgICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX3Jlc2V0KCk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0
aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LkRhdGFiYXNlQWdlbnQp
CiAgICAgICAgICAgICB0YXJnZXQuRGF0YWJhc2VBZ2VudC5lbmFibGUoKTsKICAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAotICAgIGluaXRpYWxpemUoKQorICAgIGdldCBhZ2VudERvbWFpbnMoKSB7
IHJldHVybiBbIkRhdGFiYXNlIl07IH0KKworICAgIGdldCBkYXRhYmFzZXMoKSB7IHJldHVybiB0
aGlzLl9kYXRhYmFzZU9iamVjdHM7IH0KKworICAgIGVuYWJsZSgpCiAgICAgewotICAgICAgICB0
aGlzLl9kYXRhYmFzZU9iamVjdHMgPSBbXTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X2VuYWJsZWQpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworCisgICAgICAgIHRo
aXMuX3Jlc2V0KCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisg
ICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKworICAgICAgICBXSS5G
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5n
ZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKLSAgICBnZXQg
ZGF0YWJhc2VzKCkKKyAgICBkaXNhYmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9k
YXRhYmFzZU9iamVjdHM7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOwor
CisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGxldCB0YXJn
ZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgaWYgKHRhcmdldC5EYXRhYmFzZUFnZW50
KQorICAgICAgICAgICAgICAgIHRhcmdldC5EYXRhYmFzZUFnZW50LmRpc2FibGUoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwg
dGhpcyk7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICB9CiAKICAgICBkYXRhYmFzZVdh
c0FkZGVkKGlkLCBob3N0LCBuYW1lLCB2ZXJzaW9uKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVk
IGZyb20gV0kuRGF0YWJhc2VPYnNlcnZlci4KIAorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9lbmFibGVkKTsKKwogICAgICAgICB2YXIgZGF0YWJhc2UgPSBuZXcgV0kuRGF0YWJhc2VPYmpl
Y3QoaWQsIGhvc3QsIG5hbWUsIHZlcnNpb24pOwogCiAgICAgICAgIHRoaXMuX2RhdGFiYXNlT2Jq
ZWN0cy5wdXNoKGRhdGFiYXNlKTsKQEAgLTY5LDYgKzk3LDEwIEBAIFdJLkRhdGFiYXNlTWFuYWdl
ciA9IGNsYXNzIERhdGFiYXNlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgaW5zcGVj
dERhdGFiYXNlKGlkKQogICAgIHsKKyAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuSW5zcGVjdG9y
T2JzZXJ2ZXIuCisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAg
ICAgICAgdmFyIGRhdGFiYXNlID0gdGhpcy5fZGF0YWJhc2VGb3JJZGVudGlmaWVyKGlkKTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoZGF0YWJhc2UpOwogICAgICAgICBpZiAoIWRhdGFiYXNlKQpA
QCAtNzgsMTUgKzExMCwxOSBAQCBXSS5EYXRhYmFzZU1hbmFnZXIgPSBjbGFzcyBEYXRhYmFzZU1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9yZXNldCgp
CisgICAgeworICAgICAgICB0aGlzLl9kYXRhYmFzZU9iamVjdHMgPSBbXTsKKworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EYXRhYmFzZU1hbmFnZXIuRXZlbnQuQ2xl
YXJlZCk7CisgICAgfQorCiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1l
KTsKIAotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAg
ICAgIC8vIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJhbWUsIHdlIHdhbnQgdG8g
Y2xlYXIgb3VyIGxpc3Qgb2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2aWdhdGluZyB0byBh
IG5ldyBwYWdlLgotICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7Ci0gICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EYXRhYmFzZU1hbmFnZXIuRXZlbnQuQ2xl
YXJlZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgp
KQorICAgICAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICB9CiAKICAgICBfZGF0YWJhc2VGb3JJ
ZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanMKaW5kZXgg
YTM4NDlmYjY3ZDI5ODVjOWJlZTQxYWNmMzc2ZDRiYmI4NDI0NWJkMC4uNGMxNjIzNzdlMmI1Zjlm
MWI1ZmQwOGRiOWU3NTE4N2ZiMjFhNjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9JbmRleGVkREJN
YW5hZ2VyLmpzCkBAIC0zMiwzNCArMzIsNjEgQEAgV0kuSW5kZXhlZERCTWFuYWdlciA9IGNsYXNz
IEluZGV4ZWREQk1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1cGVy
KCk7CiAKLSAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5N
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7
Ci0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuU2VjdXJp
dHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMuX3NlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzKTsK
LQotICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0KIAogICAgIC8vIFRhcmdldAogCiAg
ICAgaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Vu
YWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHRhcmdldC5JbmRleGVk
REJBZ2VudCkKICAgICAgICAgICAgIHRhcmdldC5JbmRleGVkREJBZ2VudC5lbmFibGUoKTsKICAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGluaXRpYWxpemUoKQorICAgIGdldCBhZ2VudERv
bWFpbnMoKSB7IHJldHVybiBbIkluZGV4ZWREQiJdOyB9CisKKyAgICBnZXQgaW5kZXhlZERhdGFi
YXNlcygpIHsgcmV0dXJuIHRoaXMuX2luZGV4ZWREYXRhYmFzZXM7IH0KKworICAgIGVuYWJsZSgp
CiAgICAgewotICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VzID0gW107CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0g
dHJ1ZTsKKworICAgICAgICB0aGlzLl9yZXNldCgpOworCisgICAgICAgIGZvciAobGV0IHRhcmdl
dCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdl
dCk7CisKKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5N
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7
CisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuU2VjdXJp
dHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMuX3NlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzKTsK
ICAgICB9CiAKLSAgICBnZXQgaW5kZXhlZERhdGFiYXNlcygpCisgICAgZGlzYWJsZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhlZERhdGFiYXNlczsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNl
OworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0LkluZGV4ZWREQkFnZW50KQorICAgICAgICAgICAgICAgIHRhcmdldC5JbmRl
eGVkREJBZ2VudC5kaXNhYmxlKCk7CisgICAgICAgIH0KKworICAgICAgICBXSS5GcmFtZS5yZW1v
dmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworCisgICAgICAgIHRoaXMuX3Jlc2V0
KCk7CiAgICAgfQogCiAgICAgcmVxdWVzdEluZGV4ZWREYXRhYmFzZURhdGEob2JqZWN0U3RvcmUs
IG9iamVjdFN0b3JlSW5kZXgsIHN0YXJ0RW50cnlJbmRleCwgbWF4aW11bUVudHJ5Q291bnQsIGNh
bGxiYWNrKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHdpbmRvdy5JbmRleGVkREJBZ2VudCk7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KG9iamVjdFN0b3JlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY2FsbGJh
Y2spOwpAQCAtOTgsNiArMTI1LDggQEAgV0kuSW5kZXhlZERCTWFuYWdlciA9IGNsYXNzIEluZGV4
ZWREQk1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGNsZWFyT2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmUpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsK
KwogICAgICAgICBsZXQgc2VjdXJpdHlPcmlnaW4gPSBvYmplY3RTdG9yZS5wYXJlbnREYXRhYmFz
ZS5zZWN1cml0eU9yaWdpbjsKICAgICAgICAgbGV0IGRhdGFiYXNlTmFtZSA9IG9iamVjdFN0b3Jl
LnBhcmVudERhdGFiYXNlLm5hbWU7CiAgICAgICAgIGxldCBvYmplY3RTdG9yZU5hbWUgPSBvYmpl
Y3RTdG9yZS5uYW1lOwpAQCAtMTA3LDIxICsxMzYsMjEgQEAgV0kuSW5kZXhlZERCTWFuYWdlciA9
IGNsYXNzIEluZGV4ZWREQk1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZh
dGUKIAotICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCisgICAgX3Jlc2V0KCkKICAg
ICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZy
YW1lKTsKKyAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlcyA9IFtdOworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5JbmRleGVkREJNYW5hZ2VyLkV2ZW50LkNsZWFy
ZWQpOwogCi0gICAgICAgIGlmIChldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkgewotICAgICAg
ICAgICAgLy8gSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCB0aGUgbWFpbiBmcmFtZSwgd2Ugd2FudCB0
byBjbGVhciBvdXIgbGlzdCBvZiBvYmplY3RzLCBiZWNhdXNlIHdlIGFyZSBuYXZpZ2F0aW5nIHRv
IGEgbmV3IHBhZ2UuCi0gICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKLSAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkluZGV4ZWREQk1hbmFnZXIuRXZlbnQu
Q2xlYXJlZCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX2FkZEluZGV4ZWREQkRhdGFiYXNlc0lmTmVl
ZGVkKGV2ZW50LnRhcmdldCk7Ci0gICAgICAgIH0KKyAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJ
Lm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAgICAgaWYgKG1haW5GcmFtZSkKKyAgICAg
ICAgICAgIHRoaXMuX2FkZEluZGV4ZWREQkRhdGFiYXNlc0lmTmVlZGVkKG1haW5GcmFtZSk7CiAg
ICAgfQogCiAgICAgX2FkZEluZGV4ZWREQkRhdGFiYXNlc0lmTmVlZGVkKGZyYW1lKQogICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgIGlmICghd2luZG93LkluZGV4ZWREQkFnZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0xODMsNiArMjEyLDE0IEBAIFdJLkluZGV4ZWREQk1hbmFnZXIgPSBjbGFzcyBJbmRleGVkREJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3RE
YXRhYmFzZU5hbWVzKHNlY3VyaXR5T3JpZ2luLCBwcm9jZXNzRGF0YWJhc2VOYW1lcy5iaW5kKHRo
aXMpKTsKICAgICB9CiAKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUp
OworCisgICAgICAgIGlmIChldmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAg
IHRoaXMuX3Jlc2V0KCk7CisgICAgfQorCiAgICAgX3NlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlKGV2
ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNl
b2YgV0kuRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVz
dC5odG1sCmluZGV4IGU3MTBlYzY1NzNkOGU3NDc3NDM3YWI3NzliYWYyYmU4MTUwYWNlMWYuLmMw
MDIxODNlZjQ4ODdiNGFkNGI0ZmJkYjUyZGFlZjY2NDBmMTUyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTgzLDE0ICs4MywxNyBAQAog
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMiPjwvc2NyaXB0PgogCiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1BVUHJvZmlsZXJPYnNlcnZlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0NTU09ic2VydmVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ2FudmFzT2JzZXJ2ZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9ET01PYnNlcnZlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSGVhcE9ic2VydmVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9MYXllclRyZWVPYnNlcnZlci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL01lbW9yeU9ic2VydmVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzIj48
L3NjcmlwdD4KQEAgLTIzMiw2ICsyMzUsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm94aWVzL0hl
YXBTbmFwc2hvdFdvcmtlclByb3h5LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyI+PC9zY3Jp
cHQ+CkBAIC0yMzksOSArMjQzLDExIEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RP
TURlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0RPTU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9ET01TdG9yYWdlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0hBUkJ1aWxkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9IZWFwTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9MYXllclRyZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iQ29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IkNvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcwppbmRleCA1MDU0
ZjRkMDIzMGRiOTdmMWRlYWM4ODNkMDNhYTE5N2EyZmVmYmIzLi5kYTU0ZGFmOWNkNDljMDI0YTdj
MjExYWUxMmM0OTBiY2E3OTIyZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBAIC0zNiw5ICszNiwxMSBAQCBXSS5sb2FkZWQgPSBm
dW5jdGlvbigpCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRlYnVnZ2VyRGlzcGF0Y2hl
cihuZXcgV0kuRGVidWdnZXJPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckhlYXBEaXNwYXRjaGVyKG5ldyBXSS5IZWFwT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJNZW1vcnlEaXNwYXRjaGVyKG5ldyBXSS5NZW1vcnlPYnNlcnZlcik7CisgICAg
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRhdGFiYXNlRGlzcGF0Y2hlcihuZXcgV0kuRGF0YWJh
c2VPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRPTVN0b3JhZ2VEaXNw
YXRjaGVyKG5ldyBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIpOwotICAgIEluc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJTY3JpcHRQcm9maWxlckRpc3BhdGNoZXIobmV3IFdJLlNjcmlwdFByb2ZpbGVyT2Jz
ZXJ2ZXIpOworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBcHBsaWNhdGlvbkNhY2hlRGlz
cGF0Y2hlcihuZXcgV0kuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyQ1BVUHJvZmlsZXJEaXNwYXRjaGVyKG5ldyBXSS5DUFVQcm9maWxlck9i
c2VydmVyKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyU2NyaXB0UHJvZmlsZXJEaXNw
YXRjaGVyKG5ldyBXSS5TY3JpcHRQcm9maWxlck9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVyVGltZWxpbmVEaXNwYXRjaGVyKG5ldyBXSS5UaW1lbGluZU9ic2VydmVyKTsK
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ1NTRGlzcGF0Y2hlcihuZXcgV0kuQ1NTT2Jz
ZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJMYXllclRyZWVEaXNwYXRjaGVy
KG5ldyBXSS5MYXllclRyZWVPYnNlcnZlcik7CkBAIC01MSwxMiArNTMsMTUgQEAgV0kubG9hZGVk
ID0gZnVuY3Rpb24oKQogICAgICAgICBXSS50YXJnZXRNYW5hZ2VyID0gbmV3IFdJLlRhcmdldE1h
bmFnZXIsCiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyID0gbmV3IFdJLk5ldHdvcmtNYW5hZ2Vy
LAogICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlciA9IG5ldyBXSS5ET01TdG9yYWdlTWFuYWdl
ciwKKyAgICAgICAgV0kuZGF0YWJhc2VNYW5hZ2VyID0gbmV3IFdJLkRhdGFiYXNlTWFuYWdlciwK
KyAgICAgICAgV0kuaW5kZXhlZERCTWFuYWdlciA9IG5ldyBXSS5JbmRleGVkREJNYW5hZ2VyLAog
ICAgICAgICBXSS5kb21NYW5hZ2VyID0gbmV3IFdJLkRPTU1hbmFnZXIsCiAgICAgICAgIFdJLmNz
c01hbmFnZXIgPSBuZXcgV0kuQ1NTTWFuYWdlciwKICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIg
PSBuZXcgV0kuQ29uc29sZU1hbmFnZXIsCiAgICAgICAgIFdJLnJ1bnRpbWVNYW5hZ2VyID0gbmV3
IFdJLlJ1bnRpbWVNYW5hZ2VyLAogICAgICAgICBXSS5oZWFwTWFuYWdlciA9IG5ldyBXSS5IZWFw
TWFuYWdlciwKICAgICAgICAgV0kubWVtb3J5TWFuYWdlciA9IG5ldyBXSS5NZW1vcnlNYW5hZ2Vy
LAorICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9IG5ldyBXSS5BcHBsaWNhdGlv
bkNhY2hlTWFuYWdlciwKICAgICAgICAgV0kudGltZWxpbmVNYW5hZ2VyID0gbmV3IFdJLlRpbWVs
aW5lTWFuYWdlciwKICAgICAgICAgV0kuYXVkaXRNYW5hZ2VyID0gbmV3IFdJLkF1ZGl0TWFuYWdl
ciwKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyID0gbmV3IFdJLkRlYnVnZ2VyTWFuYWdlciwK
QEAgLTEyNyw3ICsxMzIsMTEgQEAgV0kucmVkaXJlY3RHbG9iYWxBZ2VudHNUb0Nvbm5lY3Rpb24g
PSBmdW5jdGlvbihjb25uZWN0aW9uKQogV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKIHsK
ICAgICAvLyBUaGluZ3MgdGhhdCB3b3VsZCBub3JtYWxseSBnZXQgY2FsbGVkIGJ5IHRoZSBVSSwg
dGhhdCB3ZSBzdGlsbCB3YW50IHRvIGRvIGluIHRlc3RzLgorICAgIFdJLmFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmVuYWJsZSgpOwogICAgIFdJLmNhbnZhc01hbmFnZXIuZW5hYmxlKCk7CisgICAg
V0kuZG9tU3RvcmFnZU1hbmFnZXIuZW5hYmxlKCk7CisgICAgV0kuZGF0YWJhc2VNYW5hZ2VyLmVu
YWJsZSgpOworICAgIFdJLmluZGV4ZWREQk1hbmFnZXIuZW5hYmxlKCk7CiAKICAgICAvLyBTaWdu
YWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMuCiAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFn
ZVRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDM3ZTM3M2NhOWM2NDNiMTIxMGQxMWM2NjdlYzU4ZDAx
Y2I3ODI4ZDUuLmVhMzA0YWZjYzc1YzZjNTU1ZGUwYmI3MTUwMjI5NTZlY2VhNzllNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VU
YWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMKQEAgLTMxLDYgKzMxLDExIEBAIFdJLlN0
b3JhZ2VUYWJDb250ZW50VmlldyA9IGNsYXNzIFN0b3JhZ2VUYWJDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRCcm93c2VyCiAgICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3Ry
dWN0b3JzID0gW1dJLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXSS5JbmRl
eGVkRGF0YWJhc2VEZXRhaWxzU2lkZWJhclBhbmVsXTsKIAogICAgICAgICBzdXBlcihpZGVudGlm
aWVyIHx8ICJzdG9yYWdlIiwgInN0b3JhZ2UiLCB0YWJCYXJJdGVtLCBXSS5TdG9yYWdlU2lkZWJh
clBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzKTsKKworICAgICAgICBXSS5h
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5lbmFibGUoKTsKKyAgICAgICAgV0kuZGF0YWJhc2VNYW5h
Z2VyLmVuYWJsZSgpOworICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5lbmFibGUoKTsKKyAg
ICAgICAgV0kuaW5kZXhlZERCTWFuYWdlci5lbmFibGUoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dGFiSW5mbygpCkBAIC00Myw3ICs0OCw3IEBAIFdJLlN0b3JhZ2VUYWJDb250ZW50VmlldyA9IGNs
YXNzIFN0b3JhZ2VUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyCiAKICAg
ICBzdGF0aWMgaXNUYWJBbGxvd2VkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhIXdpbmRvdy5E
T01TdG9yYWdlQWdlbnQgfHwgISF3aW5kb3cuRGF0YWJhc2VBZ2VudCB8fCAhIXdpbmRvdy5JbmRl
eGVkREJBZ2VudDsKKyAgICAgICAgcmV0dXJuICEhKEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5B
cHBsaWNhdGlvbkNhY2hlIHx8IEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5ET01TdG9yYWdlIHx8
IEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5EYXRhYmFzZSB8fCBJbnNwZWN0b3JCYWNrZW5kLmRv
bWFpbnMuSW5kZXhlZERCKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTYwLDEwICs2NSwy
NCBAQCBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlcgogCiAgICAgY2FuU2hvd1JlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV0kuRE9NU3RvcmFnZU9iamVjdCB8fCByZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdJLkNvb2tpZVN0b3JhZ2VPYmplY3QgfHwKLSAgICAgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRGF0YWJhc2VUYWJsZU9iamVjdCB8fCByZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRhdGFiYXNlT2JqZWN0IHx8Ci0gICAgICAgICAgICBy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSB8fCBy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
IHx8Ci0gICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkluZGV4ZWRE
YXRhYmFzZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkluZGV4ZWREYXRhYmFz
ZU9iamVjdFN0b3JlSW5kZXg7CisgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZQorICAgICAgICAgICAgfHwgcmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Db29raWVTdG9yYWdlT2JqZWN0CisgICAgICAgICAgICB8
fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRPTVN0b3JhZ2VPYmplY3QKKyAgICAg
ICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRGF0YWJhc2VPYmplY3QK
KyAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRGF0YWJhc2VU
YWJsZU9iamVjdAorICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
SS5JbmRleGVkRGF0YWJhc2UKKyAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUKKyAgICAgICAgICAgIHx8IHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRl
eDsKKyAgICB9CisKKyAgICBjbG9zZWQoKQorICAgIHsKKyAgICAgICAgV0kuYXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuZGlzYWJsZSgpOworICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIuZGlzYWJs
ZSgpOworICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlci5kaXNhYmxlKCk7CisgICAgICAgIFdJ
LmluZGV4ZWREQk1hbmFnZXIuZGlzYWJsZSgpOworCisgICAgICAgIHN1cGVyLmNsb3NlZCgpOwog
ICAgIH0KIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375368</attachid>
            <date>2019-08-01 17:00:43 -0700</date>
            <delta_ts>2019-08-02 13:07:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200117-20190801170042.patch</filename>
            <type>text/plain</type>
            <size>44861</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE5NDllZTdhMDYwZTIzNTRmZGJhMmU2ZTVkODVl
Mjk5ZmMxNWVkZTEuLjlmMTMyNzUzZmRhOTQ4MGU3ODNhYWQ3NTRhYjA1MzMzNjIxZmNkNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTAxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
dG9yYWdlOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDExNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld29yayBob3cg
YGVuYWJsZWAvYGRpc2FibGVgIGlzIHVzZWQgZm9yIHN0b3JhZ2UtcmVsYXRlZCBhZ2VudHMgc28g
dGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQgYWxp
dmUgd2hlbiB0aGUgU3RvcmFnZSB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlLmpzb246CisgICAgICAgIEFkZCBgZGlzYWJs
ZWAgY29tbWFuZC4KKwogMjAxOS0wNy0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJlZ2luIG9yZ2FuaXppbmcgYjMgdGVzdHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4MGUyNTJkNDJmYzg4NWYwZWM2YzU0MDY2NjQ1N2I1MjdkZmQ1NDM1Li4yOTgzMjY0
MTMwODRhMzM2NTAwOTU4YzAzOTlmYzQ4MTAxYWNiYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTktMDgtMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0b3JhZ2U6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hl
biB0aGUgdGFiIGlzIGNsb3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAwMTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmV3b3JrIGhvdyBgZW5hYmxlYC9gZGlzYWJsZWAgaXMgdXNlZCBmb3Igc3Rv
cmFnZS1yZWxhdGVkIGFnZW50cyBzbyB0aGF0IGV2ZW50cyBhcmUgbm90IHNlbnQKKyAgICAgICAg
YW5kIGRhdGEgaXNuJ3Qga2VwdCBhbGl2ZSB3aGVuIHRoZSBTdG9yYWdlIHRhYiBpc24ndCBlbmFi
bGVkLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50OjpkaXNhYmxlKTogQWRkZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUpOgorCisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNhYmxlKToKKwogMjAxOS0wOC0wMSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIFdlYlNvY2tl
dHM6IGFkZCBzdXBwb3J0IGZvciBleHRlbnNpb25zIHdoZW4gdXNpbmcgd2ViIHNvY2tldHMgbGli
c291cCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGE0NGQ5OTg1ODNiMzllMWQ4MjVj
ZGY0NWU4OTQ0N2I0OTFjZmI2Y2YuLjY2YWQxYmE5NWRhY2Q3ZmM0MDA4NjU2MWRiNDIwMjFiMjAy
OTIwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDE5LTA4
LTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTdG9yYWdlOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBj
bG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDExNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
d29yayBob3cgYGVuYWJsZWAvYGRpc2FibGVgIGlzIHVzZWQgZm9yIHN0b3JhZ2UtcmVsYXRlZCBh
Z2VudHMgc28gdGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0
IGtlcHQgYWxpdmUgd2hlbiB0aGUgU3RvcmFnZSB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanM6
CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik6CisgICAgICAgIChXSS5BcHBs
aWNhdGlvbkNhY2hlTWFuYWdlLnByb3RvdHlwZS5nZXQgZG9tYWlucyk6IEFkZGVkLgorICAgICAg
ICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZS5wcm90b3R5cGUuYWN0aXZhdGVFeHRyYURvbWFp
bik6IEFkZGVkLgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBl
LmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
cHJvdG90eXBlLmVuYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIucHJvdG90eXBlLmRpc2FibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5uZXR3b3JrU3RhdGVVcGRhdGVkKToKKyAgICAgICAgKFdJ
LkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5hcHBsaWNhdGlvbkNhY2hlU3RhdHVz
VXBkYXRlZCk6CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUu
X3Jlc2V0KTogQWRkZWQuCisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90
b3R5cGUuX21haW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5wcm90b3R5cGUuX21hbmlmZXN0Rm9yRnJhbWVMb2FkZWQpOgorICAgICAgICAo
V0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLl9mcmFtZXNXaXRoTWFuaWZlc3Rz
TG9hZGVkKToKKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5p
bml0aWFsaXplKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRE9NU3RvcmFnZU1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlcik6
CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRvbWFpbnMpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5hY3RpdmF0ZUV4
dHJhRG9tYWluKTogQWRkZWQuCisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5
cGUuaW5pdGlhbGl6ZVRhcmdldCk6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90
b3R5cGUuZW5hYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90
b3R5cGUuZGlzYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJv
dG90eXBlLml0ZW1zQ2xlYXJlZCk6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90
b3R5cGUuaXRlbVJlbW92ZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90
eXBlLml0ZW1BZGRlZCk6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUu
aXRlbVVwZGF0ZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLmlu
c3BlY3RET01TdG9yYWdlKToKKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlw
ZS5fcmVzZXQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlw
ZS5fYWRkRE9NU3RvcmFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2Vy
LnByb3RvdHlwZS5fYWRkQ29va2llU3RvcmFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdJLkRPTVN0
b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5kb21TdG9yYWdlV2FzQWRkZWQp
OiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXRhYmFz
ZU1hbmFnZXIuanM6CisgICAgICAgIChXSS5EYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAoV0ku
RGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5nZXQgZG9tYWlucyk6IEFkZGVkLgorICAgICAgICAo
V0kuRGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5hY3RpdmF0ZUV4dHJhRG9tYWluKTogQWRkZWQu
CisgICAgICAgIChXSS5EYXRhYmFzZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQp
OgorICAgICAgICAoV0kuRGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUpOiBBZGRlZC4K
KyAgICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlci5wcm90b3R5cGUuZGlzYWJsZSk6IEFkZGVkLgor
ICAgICAgICAoV0kuRGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5kYXRhYmFzZVdhc0FkZGVkKToK
KyAgICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlci5wcm90b3R5cGUuaW5zcGVjdERhdGFiYXNlKToK
KyAgICAgICAgKFdJLkRhdGFiYXNlTWFuYWdlci5wcm90b3R5cGUuX3Jlc2V0KTogQWRkZWQuCisg
ICAgICAgIChXSS5EYXRhYmFzZU1hbmFnZXIucHJvdG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFu
Z2UpOgorICAgICAgICAoV0kuRGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTog
RGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSW5kZXhlZERC
TWFuYWdlci5qczoKKyAgICAgICAgKFdJLkluZGV4ZWREQk1hbmFnZXIpOgorICAgICAgICAoV0ku
SW5kZXhlZERCTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRvbWFpbnMpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkluZGV4ZWREQk1hbmFnZXIucHJvdG90eXBlLmFjdGl2YXRlRXh0cmFEb21haW4pOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkluZGV4ZWREQk1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJn
ZXQpOgorICAgICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5wcm90b3R5cGUuZW5hYmxlKTogQWRk
ZWQuCisgICAgICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3RvdHlwZS5kaXNhYmxlKTogQWRk
ZWQuCisgICAgICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3RvdHlwZS5jbGVhck9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdJLkluZGV4ZWREQk1hbmFnZXIucHJvdG90eXBlLl9yZXNldCk6IEFk
ZGVkLgorICAgICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5wcm90b3R5cGUuX21haW5SZXNvdXJj
ZURpZENoYW5nZSk6CisgICAgICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3RvdHlwZS5pbml0
aWFsaXplKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
QXBwQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXIucHJvdG90eXBlLmFj
dGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NhbnZhc01hbmFnZXIuanM6CisgICAgICAgIChXSS5DYW52YXNNYW5hZ2VyLnByb3RvdHlwZS5n
ZXQgZG9tYWlucyk6IEFkZGVkLgorICAgICAgICAoV0kuQ2FudmFzTWFuYWdlci5wcm90b3R5cGUu
YWN0aXZhdGVFeHRyYURvbWFpbik6IEFkZGVkLgorICAgICAgICBPbmx5IGNhbGwgYGVuYWJsZWAg
b24gYW55IGV4dHJhIGFnZW50cyBpZiB0aGUgZG9tYWluIGlzIG5vdCBjb250cm9sbGVkIGJ5IGEg
bWFuYWdlci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAg
KFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5zdGF0aWMgaXNUYWJBbGxvd2VkKToKKyAgICAgICAg
KFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2FuU2hvd1JlcHJlc2VudGVkT2Jq
ZWN0KToKKyAgICAgICAgKFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2Vk
KTogQWRkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qczoKKyAgICAgICAgKFdJLmxvYWRlZCk6CisgICAg
ICAgIChXSS5jb250ZW50TG9hZGVkKToKKwogMjAxOS0wNy0zMSAgRGV2aW4gUm91c3NvICA8ZHJv
dXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRGVidWdnZXI6IHN1cHBv
cnQgZW11bGF0ZVVzZXJHZXN0dXJlIHBhcmFtZXRlciBpbiBEZWJ1Z2dlci5ldmFsdWF0ZU9uQ2Fs
bEZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0FwcGxpY2F0aW9uQ2FjaGUuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uCmluZGV4IDllZjc5YjBkMzQxNzVjYjc5
Mjk0ZTQwZDM3MzgwZTE2MDFiMzVhNWMuLjk3NDA0NzQ2NDMyMmFkOWM3Y2Q5YTVjNjc0Yjg1M2Uw
MjFmY2E3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uCkBAIC00Nyw2ICs0NywxMCBA
QAogICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJFbmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGRvbWFpbiBub3RpZmljYXRpb25zLiIKICAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZSBhcHBsaWNhdGlvbiBjYWNoZSBkb21haW4g
bm90aWZpY2F0aW9ucy4iCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogImdldE1hbmlmZXN0Rm9yRnJhbWUiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJl
dHVybnMgbWFuaWZlc3QgVVJMIGZvciBkb2N1bWVudCBpbiB0aGUgZ2l2ZW4gZnJhbWUuIiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBiN2VjY2I5YTk5MDJhMzllNmI4
MTVkMmVmMDBiNDlmOWNiNGE3NDkxLi4xNjQ2ZDk5MTRmMWI3MjA5ODMzZWYwOWI2ZTgyMjg1NTlj
NDEzOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC01NiwxNyAr
NTYsMzMgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlcioKIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpOworICAgIEVycm9yU3RyaW5nIHVudXNl
ZDsKKyAgICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CisgICAgaWYg
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSA9
PSB0aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBh
bHJlYWR5IGVuYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KHRoaXMpOwog
CiAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluaXRpYWwgbmF2aWdhdG9yLm9uT25saW5lLgogICAg
IG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQoreworICAgIGlmICht
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgIT0g
dGhpcykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJBcHBsaWNhdGlvbkNhY2hlQWdlbnQgYWxy
ZWFkeSBkaXNhYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQobnVsbHB0cik7
Cit9CisKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNh
dGlvbkNhY2hlU3RhdHVzKEZyYW1lKiBmcmFtZSkKIHsKICAgICBhdXRvKiBwYWdlQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaAppbmRleCA2NDBmMGE0ODc4ZWExMWNmOTExZmRjMmM2MjFiODE0ZmE5
YjI1YjQyLi4zOTIyMTQ5NGFjNjYwZTkxNTkxNzM5YTRhNDI2ZTdjMDlkMzE3Zjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3Ry
aW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRp
b25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lk
IGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IFN0cmluZyogbWFuaWZlc3RVUkwpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QXBwbGljYXRpb25D
YWNoZUZvckZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4m
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA2MWE5ZTExYmQ5OGJjZGVl
ZDMxYmJkNzY0MWQzOTY5MjZmMjdkMGMwLi43OTUwNzg1OTBlZDVmYjk3M2VlYTdhY2Y2OGZhOTM1
NDE4MGMzNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC03MiwxMyArNzIsMjMgQEAg
dm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmUKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7
CisgICAgaWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQo
KSAhPSB0aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTVN0b3JhZ2VBZ2VudCBhbHJl
YWR5IGRpc2FibGVkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCh0aGlzKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
KQogeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50KCkgIT0gdGhpcykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJET01TdG9yYWdlQWdlbnQg
YWxyZWFkeSBkaXNhYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQobnVsbHB0cik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGY0MDgxNGUxNjY2NTAyMDdmNDg3OWM2NGUwYmEw
ZTg0Y2VlNWRlZjEuLmIzN2E1NjBjZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVkODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjMyLDEwICsyMzIsMTIgQEAgdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3QKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSA9PSB0aGlzKQorICAgIGlmICht
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpID09IHRoaXMpIHsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiRGF0YWJhc2VBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsKIApAQCAtMjQzLDggKzI0NSwxMyBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgICAgIGRp
ZE9wZW5EYXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogeworICAgIGlmIChtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiRGF0YWJhc2VBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9zOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQobnVsbHB0cik7CiAKICAgICBtX3Jlc291cmNlcy5jbGVhcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQXBwQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXIuanMKaW5kZXggMzI0NjlhZjQ4MGZkYjAzMzc3YmFh
Y2Y0NzUwN2RkMDVhNzFjOTBiYi4uMWY1MDRlNGNjMzE5ZTNhNTg1MDI0YTM0NWM0OGUyYjRkY2Ix
ZWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQXBwQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyLmpzCkBAIC03MiwxMCArNzIsMTUg
QEAgV0kuQXBwQ29udHJvbGxlciA9IGNsYXNzIEFwcENvbnRyb2xsZXIgZXh0ZW5kcyBXSS5BcHBD
b250cm9sbGVyQmFzZQogCiAgICAgICAgIGZvciAobGV0IGRvbWFpbiBvZiBkb21haW5zKSB7CiAg
ICAgICAgICAgICBsZXQgYWdlbnQgPSBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKGRv
bWFpbik7Ci0gICAgICAgICAgICBpZiAoYWdlbnQuZW5hYmxlKQotICAgICAgICAgICAgICAgIGFn
ZW50LmVuYWJsZSgpOworCiAgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0
cykKICAgICAgICAgICAgICAgICB0YXJnZXQuYWN0aXZhdGVFeHRyYURvbWFpbihkb21haW4pOwor
CisgICAgICAgICAgICBsZXQgbWFuYWdlciA9IFdJLm1hbmFnZXJzLmZpbmQoKG1hbmFnZXIpID0+
IG1hbmFnZXIuZG9tYWlucyAmJiBtYW5hZ2VyLmRvbWFpbnMuaW5jbHVkZXMoZG9tYWluKSk7Cisg
ICAgICAgICAgICBpZiAobWFuYWdlcikKKyAgICAgICAgICAgICAgICBtYW5hZ2VyLmFjdGl2YXRl
RXh0cmFEb21haW4oZG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGFnZW50LmVuYWJsZSkK
KyAgICAgICAgICAgICAgICBhZ2VudC5lbmFibGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IEZJWE1FOiBhbGwgY29kZSB3aXRoaW4gV0kuYWN0aXZhdGVFeHRyYURvbWFpbnMgc2hvdWxkIGJl
IGRpc3RyaWJ1dGVkIGVsc2V3aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIuanMKaW5kZXggMjBmNjkxOGRlY2Q1YzA5ODc0MjMxZGJmNWZkMzNlZmEz
YTgxOGY1ZS4uMjQwNGI5M2Y4YmI3NWVjNmI3NWVkODI1YTQ0ZWE5MTRkY2ZkMDVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKQEAgLTMxLDE4
ICszMSwyOSBAQCBXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9IGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwog
Ci0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJl
c291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAg
ICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVX
YXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIHRo
aXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICB9CiAKLSAg
ICAgICAgdGhpcy5fb25saW5lID0gdHJ1ZTsKKyAgICAvLyBBZ2VudAogCi0gICAgICAgIHRoaXMu
aW5pdGlhbGl6ZSgpOworICAgIGdldCBkb21haW5zKCkgeyByZXR1cm4gWyJBcHBsaWNhdGlvbkNh
Y2hlIl07IH0KKworICAgIGFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWluKQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoZG9tYWluID09PSAiQXBwbGljYXRpb25DYWNoZSIpOworCisgICAg
ICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0
aWFsaXplVGFyZ2V0KHRhcmdldCk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0
aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LkFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCkgewogICAgICAgICAgICAgdGFyZ2V0LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5lbmFi
bGUoKTsKICAgICAgICAgICAgIHRhcmdldC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQuZ2V0RnJhbWVz
V2l0aE1hbmlmZXN0cyh0aGlzLl9mcmFtZXNXaXRoTWFuaWZlc3RzTG9hZGVkLmJpbmQodGhpcykp
OwpAQCAtNTEsMTAgKzYyLDcgQEAgV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHVibGlj
CiAKLSAgICBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2Fj
aGVPYmplY3RzID0ge307Ci0gICAgfQorICAgIGdldCBvbmxpbmUoKSB7IHJldHVybiB0aGlzLl9v
bmxpbmU7IH0KIAogICAgIGdldCBhcHBsaWNhdGlvbkNhY2hlT2JqZWN0cygpCiAgICAgewpAQCAt
NjQsMjkgKzcyLDQyIEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIGFwcGxp
Y2F0aW9uQ2FjaGVPYmplY3RzOwogICAgIH0KIAotICAgIG5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNO
b3dPbmxpbmUpCisgICAgZW5hYmxlKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX29ubGluZSA9IGlz
Tm93T25saW5lOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZW5hYmxlZCk7CiAKLSAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuRXZlbnQuTmV0d29ya1N0YXRlVXBkYXRlZCwge29ubGluZTogdGhpcy5fb25saW5lfSk7
CisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworCisgICAgICAgIHRoaXMuX3Jlc2V0KCk7
CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0
aGlzLmluaXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKworICAgICAgICBXSS5GcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0
ZW5lcihXSS5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRGcmFt
ZVdhc1JlbW92ZWQsIHRoaXMpOwogICAgIH0KIAotICAgIGdldCBvbmxpbmUoKQorICAgIGRpc2Fi
bGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX29ubGluZTsKLSAgICB9CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOwogCi0gICAgYXBwbGljYXRpb25DYWNoZVN0
YXR1c1VwZGF0ZWQoZnJhbWVJZCwgbWFuaWZlc3RVUkwsIHN0YXR1cykKLSAgICB7Ci0gICAgICAg
IHZhciBmcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlk
KTsKLSAgICAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhp
cy5fZW5hYmxlZCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMuX2ZyYW1lTWFuaWZlc3RVcGRhdGVk
KGZyYW1lLCBtYW5pZmVzdFVSTCwgc3RhdHVzKTsKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9m
IFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6IEFw
cGxpY2F0aW9uQ2FjaGUuZGlzYWJsZSBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgICAgIGlm
ICh0YXJnZXQuQXBwbGljYXRpb25DYWNoZUFnZW50ICYmIHRhcmdldC5BcHBsaWNhdGlvbkNhY2hl
QWdlbnQuZGlzYWJsZSkKKyAgICAgICAgICAgICAgICB0YXJnZXQuQXBwbGljYXRpb25DYWNoZUFn
ZW50LmRpc2FibGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAg
ICB9CiAKICAgICByZXF1ZXN0QXBwbGljYXRpb25DYWNoZShmcmFtZSwgY2FsbGJhY2spCiAgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwogICAgICAgICBmdW5j
dGlvbiBjYWxsYmFja1dyYXBwZXIoZXJyb3IsIGFwcGxpY2F0aW9uQ2FjaGUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmIChlcnJvcikgewpAQCAtMTAwLDE4ICsxMjEsNDYgQEAgV0kuQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlQWdlbnQuZ2V0QXBwbGljYXRpb25D
YWNoZUZvckZyYW1lKGZyYW1lLmlkLCBjYWxsYmFja1dyYXBwZXIpOwogICAgIH0KIAorICAgIG5l
dHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpCisgICAgeworICAgICAgICAvLyBDYWxsZWQg
ZnJvbSBXSS5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuCisKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fZW5hYmxlZCk7CisKKyAgICAgICAgdGhpcy5fb25saW5lID0gaXNOb3dPbmxpbmU7
CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuRXZlbnQuTmV0d29ya1N0YXRlVXBkYXRlZCwge29ubGluZTogdGhpcy5fb25s
aW5lfSk7CisgICAgfQorCisgICAgYXBwbGljYXRpb25DYWNoZVN0YXR1c1VwZGF0ZWQoZnJhbWVJ
ZCwgbWFuaWZlc3RVUkwsIHN0YXR1cykKKyAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJ
LkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci4KKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9lbmFibGVkKTsKKworICAgICAgICBsZXQgZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFt
ZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZnJhbWVNYW5pZmVzdFVwZGF0ZWQoZnJhbWUsIG1h
bmlmZXN0VVJMLCBzdGF0dXMpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAorICAgIF9yZXNl
dCgpCisgICAgeworICAgICAgICB0aGlzLl9vbmxpbmUgPSB0cnVlOworICAgICAgICB0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlT2JqZWN0cyA9IHt9OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwor
ICAgIH0KKwogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CiAKICAg
ICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAvLyBJ
ZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3ZSB3YW50IHRvIGNsZWFyIG91
ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFn
ZS4KLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotCi0gICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5D
bGVhcmVkKTsKLQorICAgICAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xMjYsNyArMTc1LDEyIEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyID0gY2xhc3MgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgIF9tYW5pZmVzdEZvckZyYW1lTG9hZGVkKGZyYW1lSWQsIGVycm9yLCBtYW5pZmVzdFVS
TCkKICAgICB7Ci0gICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICB2YXIgZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZUZv
cklkZW50aWZpZXIoZnJhbWVJZCk7CkBAIC0xMzksNyArMTkzLDEyIEBAIFdJLkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIF9mcmFtZXNXaXRoTWFuaWZlc3RzTG9hZGVkKGVycm9yLCBmcmFtZXNXaXRo
TWFuaWZlc3RzKQogICAgIHsKLSAgICAgICAgaWYgKGVycm9yKQorICAgICAgICBpZiAoZXJyb3Ip
IHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzV2l0
aE1hbmlmZXN0cy5sZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMK
aW5kZXggODg3NjZjZTU0NmExZmJkOTlhYjFkYWNjODFiYTQ3OWMzZmVkMmQxNS4uZmQyNjEzZDA3
ZWJhNzQzMGI3NDk0ZjI2NzQ3MjRlODcxNmZhNjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNN
YW5hZ2VyLmpzCkBAIC0zOSw2ICszOSwxOCBAQCBXSS5DYW52YXNNYW5hZ2VyID0gY2xhc3MgQ2Fu
dmFzTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJl
c291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKKyAgICAvLyBBZ2VudAorCisgICAgZ2V0
IGRvbWFpbnMoKSB7IHJldHVybiBbIkNhbnZhcyJdOyB9CisKKyAgICBhY3RpdmF0ZUV4dHJhRG9t
YWluKGRvbWFpbikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbWFpbiA9PT0gIkNh
bnZhcyIpOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAg
ICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCiAgICAgLy8gVGFy
Z2V0CiAKICAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9N
U3RvcmFnZU1hbmFnZXIuanMKaW5kZXggZWFiOTdmNDBhNWIwNmM3NDIzMTNhYTg5ODEyYzUxZWVm
OTlhYjRhMi4uZjM4MjRiM2Y2NDQ2ZTVmOTczYTc3MmRjMDc1YTg2NzMzNDUyNGY5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9N
U3RvcmFnZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRE9NU3RvcmFnZU1hbmFnZXIuanMKQEAgLTMyLDMyICszMiwzNiBAQCBX
SS5ET01TdG9yYWdlTWFuYWdlciA9IGNsYXNzIERPTVN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0gICAgICAgIFdJLkZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9t
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1
cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICB9CiAKLSAgICAgICAgdGhpcy5pbml0aWFs
aXplKCk7CisgICAgLy8gQWdlbnQKKworICAgIGdldCBkb21haW5zKCkgeyByZXR1cm4gWyJET01T
dG9yYWdlIl07IH0KKworICAgIGFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWluKQorICAgIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoZG9tYWluID09PSAiRE9NU3RvcmFnZSIpOworCisgICAgICAg
IGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFs
aXplVGFyZ2V0KHRhcmdldCk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFs
aXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LkRPTVN0b3JhZ2VBZ2VudCkK
ICAgICAgICAgICAgIHRhcmdldC5ET01TdG9yYWdlQWdlbnQuZW5hYmxlKCk7CiAgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKLSAgICBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2Rv
bVN0b3JhZ2VPYmplY3RzID0gW107Ci0gICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3Rz
ID0ge307Ci0gICAgfQotCi0gICAgZ2V0IGRvbVN0b3JhZ2VPYmplY3RzKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9kb21TdG9yYWdlT2JqZWN0czsKLSAgICB9CisgICAgZ2V0IGRvbVN0
b3JhZ2VPYmplY3RzKCkgeyByZXR1cm4gdGhpcy5fZG9tU3RvcmFnZU9iamVjdHM7IH0KIAogICAg
IGdldCBjb29raWVTdG9yYWdlT2JqZWN0cygpCiAgICAgewpAQCAtNjcsMTggKzcxLDQzIEBAIFdJ
LkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPYmplY3RzOwogICAgIH0KIAotICAg
IGRvbVN0b3JhZ2VXYXNBZGRlZChpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCisgICAgZW5hYmxl
KCkKICAgICB7Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gbmV3IFdJLkRPTVN0b3JhZ2VPYmpl
Y3QoaWQsIGhvc3QsIGlzTG9jYWxTdG9yYWdlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRo
aXMuX2VuYWJsZWQpOwogCi0gICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLnB1c2goZG9t
U3RvcmFnZSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVN0
b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwge2RvbVN0b3JhZ2V9
KTsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fcmVzZXQo
KTsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAg
IHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9t
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1
cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKworICAgICAgICB0aGlz
Ll9lbmFibGVkID0gZmFsc2U7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdl
dHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAg
ICAgICAgIHRhcmdldC5ET01TdG9yYWdlQWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgV0kuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKwor
ICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0KIAogICAgIGl0ZW1zQ2xlYXJlZChzdG9yYWdl
SWQpCiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIu
CiAKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgbGV0
IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOwog
ICAgICAgICBpZiAoZG9tU3RvcmFnZSkKICAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbXNDbGVh
cmVkKHN0b3JhZ2VJZCk7CkBAIC04OCw2ICsxMTcsOCBAQCBXSS5ET01TdG9yYWdlTWFuYWdlciA9
IGNsYXNzIERPTVN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAg
ICAvLyBDYWxsZWQgZnJvbSBXSS5ET01TdG9yYWdlT2JzZXJ2ZXIuCiAKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgbGV0IGRvbVN0b3JhZ2UgPSB0aGlz
Ll9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOwogICAgICAgICBpZiAoZG9tU3Rv
cmFnZSkKICAgICAgICAgICAgIGRvbVN0b3JhZ2UuaXRlbVJlbW92ZWQoa2V5KTsKQEAgLTk3LDYg
KzEyOCw4IEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTVN0
b3JhZ2VPYnNlcnZlci4KIAorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsK
KwogICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVy
KHN0b3JhZ2VJZCk7CiAgICAgICAgIGlmIChkb21TdG9yYWdlKQogICAgICAgICAgICAgZG9tU3Rv
cmFnZS5pdGVtQWRkZWQoa2V5LCB2YWx1ZSk7CkBAIC0xMDYsNiArMTM5LDggQEAgV0kuRE9NU3Rv
cmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuRE9NU3RvcmFnZU9ic2VydmVyLgogCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIGxldCBkb21T
dG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoc3RvcmFnZUlkKTsKICAgICAg
ICAgaWYgKGRvbVN0b3JhZ2UpCiAgICAgICAgICAgICBkb21TdG9yYWdlLml0ZW1VcGRhdGVkKGtl
eSwgb2xkVmFsdWUsIHZhbHVlKTsKQEAgLTExMyw2ICsxNDgsMTAgQEAgV0kuRE9NU3RvcmFnZU1h
bmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
aW5zcGVjdERPTVN0b3JhZ2UoaWQpCiAgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5J
bnNwZWN0b3JPYnNlcnZlci4KKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVk
KTsKKwogICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlm
aWVyKGlkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tU3RvcmFnZSk7CiAgICAgICAgIGlm
ICghZG9tU3RvcmFnZSkKQEAgLTEyMiw2ICsxNjEsMjAgQEAgV0kuRE9NU3RvcmFnZU1hbmFnZXIg
PSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHJp
dmF0ZQogCisgICAgX3Jlc2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmpl
Y3RzID0gW107CisgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzID0ge307CisKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoRE9NU3RvcmFnZU1hbmFnZXIuRXZl
bnQuQ2xlYXJlZCk7CisKKyAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2Vy
Lm1haW5GcmFtZTsKKyAgICAgICAgaWYgKG1haW5GcmFtZSkgeworICAgICAgICAgICAgdGhpcy5f
YWRkRE9NU3RvcmFnZUlmTmVlZGVkKG1haW5GcmFtZSk7CisgICAgICAgICAgICB0aGlzLl9hZGRD
b29raWVTdG9yYWdlSWZOZWVkZWQobWFpbkZyYW1lKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IF9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihpZCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIHN0
b3JhZ2VPYmplY3Qgb2YgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMpIHsKQEAgLTEzMywyMCArMTg2
LDQzIEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCi0gICAgX21haW5S
ZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICBfYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGZyYW1l
KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2Yg
V0kuRnJhbWUpOworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAg
ICAgICAvLyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3ZSB3YW50IHRv
IGNsZWFyIG91ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmlnYXRpbmcgdG8g
YSBuZXcgcGFnZS4KLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NU3RvcmFnZU1hbmFnZXIuRXZlbnQu
Q2xlYXJlZCk7CisgICAgICAgIGlmICghd2luZG93LkRPTVN0b3JhZ2VBZ2VudCkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgdGhpcy5fYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGV2
ZW50LnRhcmdldCk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gRG9uJ3Qgc2hvdyBzdG9yYWdlIGlm
IHdlIGRvbid0IGhhdmUgYSBzZWN1cml0eSBvcmlnaW4gKGFib3V0OmJsYW5rKS4KKyAgICAgICAg
aWYgKCFmcmFtZS5zZWN1cml0eU9yaWdpbiB8fCBmcmFtZS5zZWN1cml0eU9yaWdpbiA9PT0gIjov
LyIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHBh
c3NpbmcgdGhlIG90aGVyIHBhcnRzIG9mIHRoZSBvcmlnaW4gYWxvbmcuCisKKyAgICAgICAgbGV0
IGFkZERPTVN0b3JhZ2UgPSAoaXNMb2NhbFN0b3JhZ2UpID0+IHsKKyAgICAgICAgICAgIGxldCBp
ZGVudGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBmcmFtZS5zZWN1cml0eU9yaWdpbiwgaXNMb2Nh
bFN0b3JhZ2V9OworICAgICAgICAgICAgaWYgKHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVy
KGlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbGV0
IGRvbVN0b3JhZ2UgPSBuZXcgV0kuRE9NU3RvcmFnZU9iamVjdChpZGVudGlmaWVyLCBmcmFtZS5t
YWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCBpZGVudGlmaWVyLmlzTG9jYWxTdG9yYWdl
KTsKKyAgICAgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLnB1c2goZG9tU3RvcmFnZSk7
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhET01TdG9yYWdlTWFu
YWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHtkb21TdG9yYWdlfSk7CisgICAg
ICAgIH07CisgICAgICAgIGFkZERPTVN0b3JhZ2UodHJ1ZSk7CisgICAgICAgIGFkZERPTVN0b3Jh
Z2UoZmFsc2UpOworICAgIH0KKworICAgIF9hZGRDb29raWVTdG9yYWdlSWZOZWVkZWQoZnJhbWUp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCF3aW5kb3cuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIC8vIEFkZCB0aGUgaG9zdCBvZiB0aGUgZnJhbWUgdGhhdCBjaGFuZ2Vk
IHRoZSBtYWluIHJlc291cmNlIHRvIHRoZSBsaXN0IG9mIGhvc3RzIHRoZXJlIGNvdWxkIGJlIGNv
b2tpZXMgZm9yLgotICAgICAgICB2YXIgaG9zdCA9IHBhcnNlVVJMKGV2ZW50LnRhcmdldC51cmwp
Lmhvc3Q7CisgICAgICAgIGxldCBob3N0ID0gcGFyc2VVUkwoZnJhbWUudXJsKS5ob3N0OwogICAg
ICAgICBpZiAoIWhvc3QpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE1NywyNCArMjMzLDE2
IEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
U3RvcmFnZU1hbmFnZXIuRXZlbnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB7Y29va2ll
U3RvcmFnZTogdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHNbaG9zdF19KTsKICAgICB9CiAKLSAg
ICBfYWRkRE9NU3RvcmFnZUlmTmVlZGVkKGZyYW1lKQorICAgIF9tYWluUmVzb3VyY2VEaWRDaGFu
Z2UoZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoIXdpbmRvdy5ET01TdG9yYWdlQWdlbnQpCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsK
KworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgICAg
IHRoaXMuX3Jlc2V0KCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAg
ICAvLyBEb24ndCBzaG93IHN0b3JhZ2UgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNlY3VyaXR5IG9yaWdp
biAoYWJvdXQ6YmxhbmspLgotICAgICAgICBpZiAoIWZyYW1lLnNlY3VyaXR5T3JpZ2luIHx8IGZy
YW1lLnNlY3VyaXR5T3JpZ2luID09PSAiOi8vIikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAvLyBGSVhNRTogQ29uc2lkZXIgcGFzc2luZyB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIG9y
aWdpbiBhbG9uZyB0byBkb21TdG9yYWdlV2FzQWRkZWQuCi0KLSAgICAgICAgdmFyIGxvY2FsU3Rv
cmFnZUlkZW50aWZpZXIgPSB7c2VjdXJpdHlPcmlnaW46IGZyYW1lLnNlY3VyaXR5T3JpZ2luLCBp
c0xvY2FsU3RvcmFnZTogdHJ1ZX07Ci0gICAgICAgIGlmICghdGhpcy5fZG9tU3RvcmFnZUZvcklk
ZW50aWZpZXIobG9jYWxTdG9yYWdlSWRlbnRpZmllcikpCi0gICAgICAgICAgICB0aGlzLmRvbVN0
b3JhZ2VXYXNBZGRlZChsb2NhbFN0b3JhZ2VJZGVudGlmaWVyLCBmcmFtZS5tYWluUmVzb3VyY2Uu
dXJsQ29tcG9uZW50cy5ob3N0LCB0cnVlKTsKLQotICAgICAgICB2YXIgc2Vzc2lvblN0b3JhZ2VJ
ZGVudGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBmcmFtZS5zZWN1cml0eU9yaWdpbiwgaXNMb2Nh
bFN0b3JhZ2U6IGZhbHNlfTsKLSAgICAgICAgaWYgKCF0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRp
ZmllcihzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIpKQotICAgICAgICAgICAgdGhpcy5kb21TdG9y
YWdlV2FzQWRkZWQoc2Vzc2lvblN0b3JhZ2VJZGVudGlmaWVyLCBmcmFtZS5tYWluUmVzb3VyY2Uu
dXJsQ29tcG9uZW50cy5ob3N0LCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2FkZENvb2tpZVN0b3Jh
Z2VJZk5lZWRlZChldmVudC50YXJnZXQpOwogICAgIH0KIAogICAgIF9zZWN1cml0eU9yaWdpbkRp
ZENoYW5nZShldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcwppbmRleCA5
YzBkNTgzOGY2MWM4MmRhNWNmYzM0ZTI3NmMwNzA3MDQzODlkZDhlLi5kMTU1M2MyNzIzMmE4NDE2
ZjVhYzY3Y2E0NGFhZjk5ZWNjMzBhODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXRhYmFzZU1hbmFnZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGF0YWJhc2VNYW5h
Z2VyLmpzCkBAIC0zMiwzNSArMzIsNzMgQEAgV0kuRGF0YWJhc2VNYW5hZ2VyID0gY2xhc3MgRGF0
YWJhc2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwog
Ci0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJl
c291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAg
ICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3Jlc2V0KCk7CisgICAg
fQogCi0gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOworICAgIC8vIEFnZW50CisKKyAgICBnZXQg
ZG9tYWlucygpIHsgcmV0dXJuIFsiRGF0YWJhc2UiXTsgfQorCisgICAgYWN0aXZhdGVFeHRyYURv
bWFpbihkb21haW4pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChkb21haW4gPT09ICJE
YXRhYmFzZSIpOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAg
ICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CiAgICAgfQogCiAgICAgLy8g
VGFyZ2V0CiAKICAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlm
ICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFy
Z2V0LkRhdGFiYXNlQWdlbnQpCiAgICAgICAgICAgICB0YXJnZXQuRGF0YWJhc2VBZ2VudC5lbmFi
bGUoKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGluaXRpYWxpemUoKQorICAgIGdl
dCBkYXRhYmFzZXMoKSB7IHJldHVybiB0aGlzLl9kYXRhYmFzZU9iamVjdHM7IH0KKworICAgIGVu
YWJsZSgpCiAgICAgewotICAgICAgICB0aGlzLl9kYXRhYmFzZU9iamVjdHMgPSBbXTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2VuYWJsZWQpOworCisgICAgICAgIHRoaXMuX2VuYWJs
ZWQgPSB0cnVlOworCisgICAgICAgIHRoaXMuX3Jlc2V0KCk7CisKKyAgICAgICAgZm9yIChsZXQg
dGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUYXJnZXQo
dGFyZ2V0KTsKKworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2
ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzKTsKICAgICB9CiAKLSAgICBnZXQgZGF0YWJhc2VzKCkKKyAgICBkaXNhYmxlKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZU9iamVjdHM7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsK
KworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAg
aWYgKHRhcmdldC5EYXRhYmFzZUFnZW50KQorICAgICAgICAgICAgICAgIHRhcmdldC5EYXRhYmFz
ZUFnZW50LmRpc2FibGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2
ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsK
ICAgICB9CiAKICAgICBkYXRhYmFzZVdhc0FkZGVkKGlkLCBob3N0LCBuYW1lLCB2ZXJzaW9uKQog
ICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuRGF0YWJhc2VPYnNlcnZlci4KIAorICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwogICAgICAgICB2YXIgZGF0YWJh
c2UgPSBuZXcgV0kuRGF0YWJhc2VPYmplY3QoaWQsIGhvc3QsIG5hbWUsIHZlcnNpb24pOwogCiAg
ICAgICAgIHRoaXMuX2RhdGFiYXNlT2JqZWN0cy5wdXNoKGRhdGFiYXNlKTsKQEAgLTY5LDYgKzEw
NywxMCBAQCBXSS5EYXRhYmFzZU1hbmFnZXIgPSBjbGFzcyBEYXRhYmFzZU1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgIGluc3BlY3REYXRhYmFzZShpZCkKICAgICB7CisgICAgICAgIC8v
IENhbGxlZCBmcm9tIFdJLkluc3BlY3Rvck9ic2VydmVyLgorCisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIHZhciBkYXRhYmFzZSA9IHRoaXMuX2RhdGFi
YXNlRm9ySWRlbnRpZmllcihpZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFiYXNlKTsK
ICAgICAgICAgaWYgKCFkYXRhYmFzZSkKQEAgLTc4LDE1ICsxMjAsMTkgQEAgV0kuRGF0YWJhc2VN
YW5hZ2VyID0gY2xhc3MgRGF0YWJhc2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAv
LyBQcml2YXRlCiAKKyAgICBfcmVzZXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VP
YmplY3RzID0gW107CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
RGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOworICAgIH0KKwogICAgIF9tYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50
YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CiAKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5p
c01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRo
ZSBtYWluIGZyYW1lLCB3ZSB3YW50IHRvIGNsZWFyIG91ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1
c2Ugd2UgYXJlIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS4KLSAgICAgICAgICAgIHRoaXMuaW5p
dGlhbGl6ZSgpOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
RGF0YWJhc2VNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwotICAgICAgICB9CisgICAgICAgIGlmIChl
dmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCk7CiAg
ICAgfQogCiAgICAgX2RhdGFiYXNlRm9ySWRlbnRpZmllcihpZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9J
bmRleGVkREJNYW5hZ2VyLmpzCmluZGV4IGEzODQ5ZmI2N2QyOTg1YzliZWU0MWFjZjM3NmQ0YmJi
ODQyNDViZDAuLjcxZWZjNjY4YmI4ZTg0YmY2OTVhMDYzZDY0NTQwNTE3YmYwNmVhOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0lu
ZGV4ZWREQk1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5qcwpAQCAtMzIsMzQgKzMyLDcxIEBAIFdJ
LkluZGV4ZWREQk1hbmFnZXIgPSBjbGFzcyBJbmRleGVkREJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWlu
UmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1cml0
eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICB9CiAKLSAgICAgICAgdGhpcy5pbml0aWFsaXpl
KCk7CisgICAgLy8gQWdlbnQKKworICAgIGdldCBkb21haW5zKCkgeyByZXR1cm4gWyJJbmRleGVk
REIiXTsgfQorCisgICAgYWN0aXZhdGVFeHRyYURvbWFpbihkb21haW4pCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChkb21haW4gPT09ICJJbmRleGVkREIiKTsKKworICAgICAgICBmb3Ig
KGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRh
cmdldCh0YXJnZXQpOwogICAgIH0KIAogICAgIC8vIFRhcmdldAogCiAgICAgaW5pdGlhbGl6ZVRh
cmdldCh0YXJnZXQpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAg
ICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHRhcmdldC5JbmRleGVkREJBZ2VudCkKICAgICAg
ICAgICAgIHRhcmdldC5JbmRleGVkREJBZ2VudC5lbmFibGUoKTsKICAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAotICAgIGluaXRpYWxpemUoKQorICAgIGdldCBpbmRleGVkRGF0YWJhc2VzKCkgeyBy
ZXR1cm4gdGhpcy5faW5kZXhlZERhdGFiYXNlczsgfQorCisgICAgZW5hYmxlKCkKICAgICB7Ci0g
ICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZXMgPSBbXTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX2VuYWJsZWQpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworCisg
ICAgICAgIHRoaXMuX3Jlc2V0KCk7CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRh
cmdldHMpCisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKworICAg
ICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJj
ZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAg
V0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5TZWN1cml0eU9yaWdpbkRp
ZENoYW5nZSwgdGhpcy5fc2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMpOwogICAgIH0KIAot
ICAgIGdldCBpbmRleGVkRGF0YWJhc2VzKCkKKyAgICBkaXNhYmxlKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9pbmRleGVkRGF0YWJhc2VzOworICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CisKKyAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQuSW5kZXhlZERCQWdlbnQpCisgICAgICAgICAgICAgICAgdGFyZ2V0LkluZGV4ZWREQkFnZW50
LmRpc2FibGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2ZW50TGlz
dGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICB9
CiAKICAgICByZXF1ZXN0SW5kZXhlZERhdGFiYXNlRGF0YShvYmplY3RTdG9yZSwgb2JqZWN0U3Rv
cmVJbmRleCwgc3RhcnRFbnRyeUluZGV4LCBtYXhpbXVtRW50cnlDb3VudCwgY2FsbGJhY2spCiAg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQod2luZG93LkluZGV4ZWREQkFnZW50KTsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQob2JqZWN0U3RvcmUpOwogICAgICAgICBjb25zb2xlLmFzc2VydChjYWxsYmFjayk7CkBAIC05
OCw2ICsxMzUsOCBAQCBXSS5JbmRleGVkREJNYW5hZ2VyID0gY2xhc3MgSW5kZXhlZERCTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgY2xlYXJPYmplY3RTdG9yZShvYmplY3RTdG9yZSkK
ICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAg
IGxldCBzZWN1cml0eU9yaWdpbiA9IG9iamVjdFN0b3JlLnBhcmVudERhdGFiYXNlLnNlY3VyaXR5
T3JpZ2luOwogICAgICAgICBsZXQgZGF0YWJhc2VOYW1lID0gb2JqZWN0U3RvcmUucGFyZW50RGF0
YWJhc2UubmFtZTsKICAgICAgICAgbGV0IG9iamVjdFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlLm5h
bWU7CkBAIC0xMDcsMjEgKzE0NiwyMSBAQCBXSS5JbmRleGVkREJNYW5hZ2VyID0gY2xhc3MgSW5k
ZXhlZERCTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICBfcmVzZXQoKQogICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworICAg
ICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VzID0gW107CisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkluZGV4ZWREQk1hbmFnZXIuRXZlbnQuQ2xlYXJlZCk7CiAKLSAg
ICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAvLyBJ
ZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSBtYWluIGZyYW1lLCB3ZSB3YW50IHRvIGNsZWFyIG91
ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1c2Ugd2UgYXJlIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFn
ZS4KLSAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwotICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSW5kZXhlZERCTWFuYWdlci5FdmVudC5DbGVhcmVkKTsK
LQotICAgICAgICAgICAgdGhpcy5fYWRkSW5kZXhlZERCRGF0YWJhc2VzSWZOZWVkZWQoZXZlbnQu
dGFyZ2V0KTsKLSAgICAgICAgfQorICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01h
bmFnZXIubWFpbkZyYW1lOworICAgICAgICBpZiAobWFpbkZyYW1lKQorICAgICAgICAgICAgdGhp
cy5fYWRkSW5kZXhlZERCRGF0YWJhc2VzSWZOZWVkZWQobWFpbkZyYW1lKTsKICAgICB9CiAKICAg
ICBfYWRkSW5kZXhlZERCRGF0YWJhc2VzSWZOZWVkZWQoZnJhbWUpCiAgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKCF3
aW5kb3cuSW5kZXhlZERCQWdlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4Myw2ICsy
MjIsMTQgQEAgV0kuSW5kZXhlZERCTWFuYWdlciA9IGNsYXNzIEluZGV4ZWREQk1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFt
ZXMoc2VjdXJpdHlPcmlnaW4sIHByb2Nlc3NEYXRhYmFzZU5hbWVzLmJpbmQodGhpcykpOwogICAg
IH0KIAorICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CisKKyAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgdGhpcy5fcmVz
ZXQoKTsKKyAgICB9CisKICAgICBfc2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UoZXZlbnQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5k
ZXggZTcxMGVjNjU3M2Q4ZTc0Nzc0MzdhYjc3OWJhZjJiZTgxNTBhY2UxZi4uYzAwMjE4M2VmNDg4
N2I0YWQ0YjRmYmRiNTJkYWVmNjY0MGYxNTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtODMsMTQgKzgzLDE3IEBACiAgICAgPHNjcmlw
dCBzcmM9IlByb3RvY29sL1dvcmtlclRhcmdldC5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJQcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DUFVQcm9maWxlck9ic2VydmVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DYW52YXNPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0NvbnNvbGVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RPTU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9IZWFwT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0xheWVyVHJlZU9ic2VydmVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvTWVtb3J5T2JzZXJ2ZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgpA
QCAtMjMyLDYgKzIzNSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3hpZXMvSGVhcFNuYXBzaG90
V29ya2VyUHJveHkuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0F1ZGl0TWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpzIj48L3NjcmlwdD4KQEAgLTIz
OSw5ICsyNDMsMTEgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NRGVidWdnZXJN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NTWFu
YWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RPTVN0b3Jh
Z2VNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRGF0
YWJhc2VNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
RGVidWdnZXJNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvSEFSQnVpbGRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0hlYXBNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
SW5kZXhlZERCTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0xheWVyVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9NZW1vcnlNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCmluZGV4IDUwNTRmNGQwMjMwZGI5
N2YxZGVhYzg4M2QwM2FhMTk3YTJmZWZiYjMuLmRhNTRkYWY5Y2Q0OWMwMjRhN2MyMTFhZTEyYzQ5
MGJjYTc5MjJkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Rlc3QvVGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0L1Rlc3QuanMKQEAgLTM2LDkgKzM2LDExIEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkK
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRGVidWdnZXJEaXNwYXRjaGVyKG5ldyBXSS5E
ZWJ1Z2dlck9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVySGVhcERpc3Bh
dGNoZXIobmV3IFdJLkhlYXBPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ck1lbW9yeURpc3BhdGNoZXIobmV3IFdJLk1lbW9yeU9ic2VydmVyKTsKKyAgICBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyRGF0YWJhc2VEaXNwYXRjaGVyKG5ldyBXSS5EYXRhYmFzZU9ic2VydmVy
KTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRE9NU3RvcmFnZURpc3BhdGNoZXIobmV3
IFdJLkRPTVN0b3JhZ2VPYnNlcnZlcik7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclNj
cmlwdFByb2ZpbGVyRGlzcGF0Y2hlcihuZXcgV0kuU2NyaXB0UHJvZmlsZXJPYnNlcnZlcik7Cisg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckFwcGxpY2F0aW9uQ2FjaGVEaXNwYXRjaGVyKG5l
dyBXSS5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJDUFVQcm9maWxlckRpc3BhdGNoZXIobmV3IFdJLkNQVVByb2ZpbGVyT2JzZXJ2ZXIpOwor
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJTY3JpcHRQcm9maWxlckRpc3BhdGNoZXIobmV3
IFdJLlNjcmlwdFByb2ZpbGVyT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJUaW1lbGluZURpc3BhdGNoZXIobmV3IFdJLlRpbWVsaW5lT2JzZXJ2ZXIpOwogICAgIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJDU1NEaXNwYXRjaGVyKG5ldyBXSS5DU1NPYnNlcnZlcik7CiAg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckxheWVyVHJlZURpc3BhdGNoZXIobmV3IFdJLkxh
eWVyVHJlZU9ic2VydmVyKTsKQEAgLTUxLDEyICs1MywxNSBAQCBXSS5sb2FkZWQgPSBmdW5jdGlv
bigpCiAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIgPSBuZXcgV0kuVGFyZ2V0TWFuYWdlciwKICAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIgPSBuZXcgV0kuTmV0d29ya01hbmFnZXIsCiAgICAgICAg
IFdJLmRvbVN0b3JhZ2VNYW5hZ2VyID0gbmV3IFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLAorICAgICAg
ICBXSS5kYXRhYmFzZU1hbmFnZXIgPSBuZXcgV0kuRGF0YWJhc2VNYW5hZ2VyLAorICAgICAgICBX
SS5pbmRleGVkREJNYW5hZ2VyID0gbmV3IFdJLkluZGV4ZWREQk1hbmFnZXIsCiAgICAgICAgIFdJ
LmRvbU1hbmFnZXIgPSBuZXcgV0kuRE9NTWFuYWdlciwKICAgICAgICAgV0kuY3NzTWFuYWdlciA9
IG5ldyBXSS5DU1NNYW5hZ2VyLAogICAgICAgICBXSS5jb25zb2xlTWFuYWdlciA9IG5ldyBXSS5D
b25zb2xlTWFuYWdlciwKICAgICAgICAgV0kucnVudGltZU1hbmFnZXIgPSBuZXcgV0kuUnVudGlt
ZU1hbmFnZXIsCiAgICAgICAgIFdJLmhlYXBNYW5hZ2VyID0gbmV3IFdJLkhlYXBNYW5hZ2VyLAog
ICAgICAgICBXSS5tZW1vcnlNYW5hZ2VyID0gbmV3IFdJLk1lbW9yeU1hbmFnZXIsCisgICAgICAg
IFdJLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gbmV3IFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLAogICAgICAgICBXSS50aW1lbGluZU1hbmFnZXIgPSBuZXcgV0kuVGltZWxpbmVNYW5hZ2Vy
LAogICAgICAgICBXSS5hdWRpdE1hbmFnZXIgPSBuZXcgV0kuQXVkaXRNYW5hZ2VyLAogICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIgPSBuZXcgV0kuRGVidWdnZXJNYW5hZ2VyLApAQCAtMTI3LDcg
KzEzMiwxMSBAQCBXSS5yZWRpcmVjdEdsb2JhbEFnZW50c1RvQ29ubmVjdGlvbiA9IGZ1bmN0aW9u
KGNvbm5lY3Rpb24pCiBXSS5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFRo
aW5ncyB0aGF0IHdvdWxkIG5vcm1hbGx5IGdldCBjYWxsZWQgYnkgdGhlIFVJLCB0aGF0IHdlIHN0
aWxsIHdhbnQgdG8gZG8gaW4gdGVzdHMuCisgICAgV0kuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
ZW5hYmxlKCk7CiAgICAgV0kuY2FudmFzTWFuYWdlci5lbmFibGUoKTsKKyAgICBXSS5kb21TdG9y
YWdlTWFuYWdlci5lbmFibGUoKTsKKyAgICBXSS5kYXRhYmFzZU1hbmFnZXIuZW5hYmxlKCk7Cisg
ICAgV0kuaW5kZXhlZERCTWFuYWdlci5lbmFibGUoKTsKIAogICAgIC8vIFNpZ25hbCB0aGF0IHRo
ZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNzYWdlcy4KICAgICBJbnNwZWN0
b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVu
dFZpZXcuanMKaW5kZXggMzdlMzczY2E5YzY0M2IxMjEwZDExYzY2N2VjNThkMDFjYjc4MjhkNS4u
ZWEzMDRhZmNjNzVjNmM1NTVkZTBiYjcxNTAyMjk1NmVjZWE3OWU2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0
b3JhZ2VUYWJDb250ZW50Vmlldy5qcwpAQCAtMzEsNiArMzEsMTEgQEAgV0kuU3RvcmFnZVRhYkNv
bnRlbnRWaWV3ID0gY2xhc3MgU3RvcmFnZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dEJyb3dzZXIKICAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBb
V0kuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkluZGV4ZWREYXRhYmFz
ZURldGFpbHNTaWRlYmFyUGFuZWxdOwogCiAgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInN0
b3JhZ2UiLCAic3RvcmFnZSIsIHRhYkJhckl0ZW0sIFdJLlN0b3JhZ2VTaWRlYmFyUGFuZWwsIGRl
dGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMpOworCisgICAgICAgIFdJLmFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmVuYWJsZSgpOworICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIuZW5hYmxl
KCk7CisgICAgICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmVuYWJsZSgpOworICAgICAgICBXSS5p
bmRleGVkREJNYW5hZ2VyLmVuYWJsZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyB0YWJJbmZvKCkK
QEAgLTQzLDcgKzQ4LDcgQEAgV0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU3RvcmFn
ZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudEJyb3dzZXIKIAogICAgIHN0YXRpYyBp
c1RhYkFsbG93ZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEhd2luZG93LkRPTVN0b3JhZ2VB
Z2VudCB8fCAhIXdpbmRvdy5EYXRhYmFzZUFnZW50IHx8ICEhd2luZG93LkluZGV4ZWREQkFnZW50
OworICAgICAgICByZXR1cm4gISEoSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkFwcGxpY2F0aW9u
Q2FjaGUgfHwgSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkRPTVN0b3JhZ2UgfHwgSW5zcGVjdG9y
QmFja2VuZC5kb21haW5zLkRhdGFiYXNlIHx8IEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5JbmRl
eGVkREIpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtNjAsMTAgKzY1LDI0IEBAIFdJLlN0
b3JhZ2VUYWJDb250ZW50VmlldyA9IGNsYXNzIFN0b3JhZ2VUYWJDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRCcm93c2VyCiAKICAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVz
ZW50ZWRPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXSS5ET01TdG9yYWdlT2JqZWN0IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuQ29va2llU3RvcmFnZU9iamVjdCB8fAotICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXSS5EYXRhYmFzZVRhYmxlT2JqZWN0IHx8IHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV0kuRGF0YWJhc2VPYmplY3QgfHwKLSAgICAgICAgICAgIHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV0kuQXBwbGljYXRpb25DYWNoZUZyYW1lIHx8IHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUgfHwKLSAgICAg
ICAgICAgIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSW5kZXhlZERhdGFiYXNlIHx8
IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3Rv
cmVJbmRleDsKKyAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0ku
QXBwbGljYXRpb25DYWNoZUZyYW1lCisgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdJLkNvb2tpZVN0b3JhZ2VPYmplY3QKKyAgICAgICAgICAgIHx8IHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRE9NU3RvcmFnZU9iamVjdAorICAgICAgICAgICAgfHwg
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5EYXRhYmFzZU9iamVjdAorICAgICAgICAg
ICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5EYXRhYmFzZVRhYmxlT2JqZWN0
CisgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkluZGV4ZWRE
YXRhYmFzZQorICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZQorICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXSS5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4OworICAgIH0K
KworICAgIGNsb3NlZCgpCisgICAgeworICAgICAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5kaXNhYmxlKCk7CisgICAgICAgIFdJLmRhdGFiYXNlTWFuYWdlci5kaXNhYmxlKCk7CisgICAg
ICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmRpc2FibGUoKTsKKyAgICAgICAgV0kuaW5kZXhlZERC
TWFuYWdlci5kaXNhYmxlKCk7CisKKyAgICAgICAgc3VwZXIuY2xvc2VkKCk7CiAgICAgfQogfTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375444</attachid>
            <date>2019-08-02 13:07:41 -0700</date>
            <delta_ts>2019-08-02 14:05:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200117-20190802130740.patch</filename>
            <type>text/plain</type>
            <size>44796</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBmNjIyNDI5NjA5NjAyY2E4ZmJlNzE3MTk1Zjc3
MGI0ZWRkMzFkYWUuLjI3MzFlZmU4ZTI4YzcxZmU4Yzc0MGRkZDg1NDM1NTQxNzEyN2U5MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
dG9yYWdlOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDExNworCisg
ICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBSZXdvcmsgaG93
IGBlbmFibGVgL2BkaXNhYmxlYCBpcyB1c2VkIGZvciBzdG9yYWdlLXJlbGF0ZWQgYWdlbnRzIHNv
IHRoYXQgZXZlbnRzIGFyZSBub3Qgc2VudAorICAgICAgICBhbmQgZGF0YSBpc24ndCBrZXB0IGFs
aXZlIHdoZW4gdGhlIFN0b3JhZ2UgdGFiIGlzbid0IGVuYWJsZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uOgorICAgICAgICBBZGQgYGRpc2Fi
bGVgIGNvbW1hbmQuCisKIDIwMTktMDgtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgImRlc3Ryb3kiIGZ1bmN0aW9uIGRpcmVjdGx5IGZv
ciBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrIGFuZCBXZWJBc3NlbWJseUZ1bmN0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZjVlNzk2MTE2ZmJmMTI1ODkyNjdlM2FlZTczODI3NGFkMGU0ZTdhNy4uMmI3Y2Q2MTlj
NGRiZTk3YWM5ZWM5OWM1ZmIyYjgzNmVkNzZkY2ZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE5LTA4LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBTdG9yYWdlOiBkaXNhYmxlIHJlbGF0ZWQgYWdlbnRzIHdoZW4g
dGhlIHRhYiBpcyBjbG9zZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMDExNworCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4K
KworICAgICAgICBSZXdvcmsgaG93IGBlbmFibGVgL2BkaXNhYmxlYCBpcyB1c2VkIGZvciBzdG9y
YWdlLXJlbGF0ZWQgYWdlbnRzIHNvIHRoYXQgZXZlbnRzIGFyZSBub3Qgc2VudAorICAgICAgICBh
bmQgZGF0YSBpc24ndCBrZXB0IGFsaXZlIHdoZW4gdGhlIFN0b3JhZ2UgdGFiIGlzbid0IGVuYWJs
ZWQuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpc2FibGUpOiBBZGRlZC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlzYWJsZSk6CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUpOgorCiAyMDE5LTA4LTAyICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEaXJlY3RseSB1c2UgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlciB0byBjb21wdXRlIHRoZSBtZWRpYSBjYXB0dXJlICBzdGF0ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMmI4ZWZkM2MzZDRlYWUzNTRiMjZiMzFjYWQzMmJk
MTRhZmQ1M2U0YS4uZDY4ODhkYWUzY2QyNTBmNjBlMTc3NmU3MTlmY2RhNjgzNDAxZTAyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTAgQEAKKzIwMTktMDgtMDIgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0
b3JhZ2U6IGRpc2FibGUgcmVsYXRlZCBhZ2VudHMgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIFJld29yayBob3cg
YGVuYWJsZWAvYGRpc2FibGVgIGlzIHVzZWQgZm9yIHN0b3JhZ2UtcmVsYXRlZCBhZ2VudHMgc28g
dGhhdCBldmVudHMgYXJlIG5vdCBzZW50CisgICAgICAgIGFuZCBkYXRhIGlzbid0IGtlcHQgYWxp
dmUgd2hlbiB0aGUgU3RvcmFnZSB0YWIgaXNuJ3QgZW5hYmxlZC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanM6CisgICAgICAg
IChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik6CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlLnByb3RvdHlwZS5nZXQgZG9tYWlucyk6IEFkZGVkLgorICAgICAgICAoV0kuQXBw
bGljYXRpb25DYWNoZU1hbmFnZS5wcm90b3R5cGUuYWN0aXZhdGVFeHRyYURvbWFpbik6IEFkZGVk
LgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxp
emVUYXJnZXQpOgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBl
LmVuYWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJv
dG90eXBlLmRpc2FibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLnByb3RvdHlwZS5uZXR3b3JrU3RhdGVVcGRhdGVkKToKKyAgICAgICAgKFdJLkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5hcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZCk6
CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUuX3Jlc2V0KTog
QWRkZWQuCisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUuX21h
aW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIChXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5wcm90b3R5cGUuX21hbmlmZXN0Rm9yRnJhbWVMb2FkZWQpOgorICAgICAgICAoV0kuQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLl9mcmFtZXNXaXRoTWFuaWZlc3RzTG9hZGVkKToK
KyAgICAgICAgKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXpl
KTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NU3Rv
cmFnZU1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRvbWFpbnMpOiBBZGRlZC4KKyAg
ICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5hY3RpdmF0ZUV4dHJhRG9tYWlu
KTogQWRkZWQuCisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaW5pdGlh
bGl6ZVRhcmdldCk6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZW5h
YmxlKTogQWRkZWQuCisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZGlz
YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLml0
ZW1zQ2xlYXJlZCk6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaXRl
bVJlbW92ZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLml0ZW1B
ZGRlZCk6CisgICAgICAgIChXSS5ET01TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaXRlbVVwZGF0
ZWQpOgorICAgICAgICAoV0kuRE9NU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLmluc3BlY3RET01T
dG9yYWdlKToKKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5fcmVzZXQp
OiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRE9N
U3RvcmFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlw
ZS5fYWRkQ29va2llU3RvcmFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdJLkRPTVN0b3JhZ2VNYW5h
Z2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRPTVN0
b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkRPTVN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5kb21TdG9yYWdlV2FzQWRkZWQpOiBEZWxldGVk
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXRhYmFzZU1hbmFnZXIu
anM6CisgICAgICAgIChXSS5EYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAoV0kuRGF0YWJhc2VN
YW5hZ2VyLnByb3RvdHlwZS5nZXQgZG9tYWlucyk6IEFkZGVkLgorICAgICAgICAoV0kuRGF0YWJh
c2VNYW5hZ2VyLnByb3RvdHlwZS5hY3RpdmF0ZUV4dHJhRG9tYWluKTogQWRkZWQuCisgICAgICAg
IChXSS5EYXRhYmFzZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAg
ICAoV0kuRGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkRhdGFiYXNlTWFuYWdlci5wcm90b3R5cGUuZGlzYWJsZSk6IEFkZGVkLgorICAgICAgICAo
V0kuRGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5kYXRhYmFzZVdhc0FkZGVkKToKKyAgICAgICAg
KFdJLkRhdGFiYXNlTWFuYWdlci5wcm90b3R5cGUuaW5zcGVjdERhdGFiYXNlKToKKyAgICAgICAg
KFdJLkRhdGFiYXNlTWFuYWdlci5wcm90b3R5cGUuX3Jlc2V0KTogQWRkZWQuCisgICAgICAgIChX
SS5EYXRhYmFzZU1hbmFnZXIucHJvdG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgorICAg
ICAgICAoV0kuRGF0YWJhc2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTogRGVsZXRlZC4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5q
czoKKyAgICAgICAgKFdJLkluZGV4ZWREQk1hbmFnZXIpOgorICAgICAgICAoV0kuSW5kZXhlZERC
TWFuYWdlci5wcm90b3R5cGUuZ2V0IGRvbWFpbnMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkluZGV4
ZWREQk1hbmFnZXIucHJvdG90eXBlLmFjdGl2YXRlRXh0cmFEb21haW4pOiBBZGRlZC4KKyAgICAg
ICAgKFdJLkluZGV4ZWREQk1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5wcm90b3R5cGUuZW5hYmxlKTogQWRkZWQuCisgICAg
ICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3RvdHlwZS5kaXNhYmxlKTogQWRkZWQuCisgICAg
ICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3RvdHlwZS5jbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdJLkluZGV4ZWREQk1hbmFnZXIucHJvdG90eXBlLl9yZXNldCk6IEFkZGVkLgorICAg
ICAgICAoV0kuSW5kZXhlZERCTWFuYWdlci5wcm90b3R5cGUuX21haW5SZXNvdXJjZURpZENoYW5n
ZSk6CisgICAgICAgIChXSS5JbmRleGVkREJNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTog
RGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJv
bGxlci5qczoKKyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXIucHJvdG90eXBlLmFjdGl2YXRlRXh0
cmFEb21haW5zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbnZhc01h
bmFnZXIuanM6CisgICAgICAgIChXSS5DYW52YXNNYW5hZ2VyLnByb3RvdHlwZS5nZXQgZG9tYWlu
cyk6IEFkZGVkLgorICAgICAgICAoV0kuQ2FudmFzTWFuYWdlci5wcm90b3R5cGUuYWN0aXZhdGVF
eHRyYURvbWFpbik6IEFkZGVkLgorICAgICAgICBPbmx5IGNhbGwgYGVuYWJsZWAgb24gYW55IGV4
dHJhIGFnZW50cyBpZiB0aGUgZG9tYWluIGlzIG5vdCBjb250cm9sbGVkIGJ5IGEgbWFuYWdlci4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAoV0kuU3RvcmFnZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlN0b3Jh
Z2VUYWJDb250ZW50Vmlldy5zdGF0aWMgaXNUYWJBbGxvd2VkKToKKyAgICAgICAgKFdJLlN0b3Jh
Z2VUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0KToKKyAg
ICAgICAgKFdJLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkKTogQWRkZWQu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Rlc3QvVGVzdC5qczoKKyAgICAgICAgKFdJLmxvYWRlZCk6CisgICAgICAgIChXSS5j
b250ZW50TG9hZGVkKToKKwogMjAxOS0wOC0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZlIGBlbXVsYXRlVXNlckdlc3R1cmVg
IHBhcmFtZXRlciBmcm9tIGBEZWJ1Z2dlci5ldmFsdWF0ZU9uQ2FsbEZyYW1lYCBmb3IgaU9TIDEz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Fw
cGxpY2F0aW9uQ2FjaGUuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uCmluZGV4IDllZjc5YjBkMzQxNzVjYjc5Mjk0ZTQw
ZDM3MzgwZTE2MDFiMzVhNWMuLjk3NDA0NzQ2NDMyMmFkOWM3Y2Q5YTVjNjc0Yjg1M2UwMjFmY2E3
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
QXBwbGljYXRpb25DYWNoZS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uCkBAIC00Nyw2ICs0NywxMCBAQAogICAg
ICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJF
bmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGRvbWFpbiBub3RpZmljYXRpb25zLiIKICAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZSBhcHBsaWNhdGlvbiBjYWNoZSBkb21haW4gbm90aWZp
Y2F0aW9ucy4iCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImdl
dE1hbmlmZXN0Rm9yRnJhbWUiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMg
bWFuaWZlc3QgVVJMIGZvciBkb2N1bWVudCBpbiB0aGUgZ2l2ZW4gZnJhbWUuIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBiN2VjY2I5YTk5MDJhMzllNmI4MTVkMmVm
MDBiNDlmOWNiNGE3NDkxLi4xNjQ2ZDk5MTRmMWI3MjA5ODMzZWYwOWI2ZTgyMjg1NTljNDEzOGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC01NiwxNyArNTYsMzMg
QEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChGcm9udGVuZFJvdXRlcioKIAogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KG51bGxwdHIpOworICAgIEVycm9yU3RyaW5nIHVudXNlZDsKKyAg
ICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CisgICAgaWYgKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSA9PSB0aGlz
KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBhbHJlYWR5
IGVuYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KHRoaXMpOwogCiAgICAg
Ly8gV2UgbmVlZCB0byBwYXNzIGluaXRpYWwgbmF2aWdhdG9yLm9uT25saW5lLgogICAgIG5ldHdv
cmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQoreworICAgIGlmIChtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgIT0gdGhpcykg
eworICAgICAgICBlcnJvclN0cmluZyA9ICJBcHBsaWNhdGlvbkNhY2hlQWdlbnQgYWxyZWFkeSBk
aXNhYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5zZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQobnVsbHB0cik7Cit9CisK
IHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzKEZyYW1lKiBmcmFtZSkKIHsKICAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaAppbmRleCA2NDBmMGE0ODc4ZWExMWNmOTExZmRjMmM2MjFiODE0ZmE5YjI1YjQy
Li4zOTIyMTQ5NGFjNjYwZTkxNTkxNzM5YTRhNDI2ZTdjMDlkMzE3Zjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogCiAgICAgLy8g
QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNo
ZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldE1h
bmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmlu
ZyogbWFuaWZlc3RVUkwpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZv
ckZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA2MWE5ZTExYmQ5OGJjZGVlZDMxYmJk
NzY0MWQzOTY5MjZmMjdkMGMwLi43OTUwNzg1OTBlZDVmYjk3M2VlYTdhY2Y2OGZhOTM1NDE4MGMz
NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC03MiwxMyArNzIsMjMgQEAgdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RGlzY29ubmUKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CisgICAg
aWYgKG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKSAhPSB0
aGlzKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkRPTVN0b3JhZ2VBZ2VudCBhbHJlYWR5IGRp
c2FibGVkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCh0aGlzKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQordm9pZCBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewor
ICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkg
IT0gdGhpcykgeworICAgICAgICBlcnJvclN0cmluZyA9ICJET01TdG9yYWdlQWdlbnQgYWxyZWFk
eSBkaXNhYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQobnVsbHB0cik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCmluZGV4IGY0MDgxNGUxNjY2NTAyMDdmNDg3OWM2NGUwYmEwZTg0Y2Vl
NWRlZjEuLmIzN2E1NjBjZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVkODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcApAQCAtMjMyLDEwICsyMzIsMTIgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3QKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBpZiAobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSA9PSB0aGlzKQorICAgIGlmIChtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpID09IHRoaXMpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiRGF0YWJhc2VBZ2VudCBhbHJlYWR5IGVuYWJsZWQiX3M7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudCh0aGlzKTsKIApAQCAtMjQzLDggKzI0NSwxMyBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgICAgIGRpZE9wZW5E
YXRhYmFzZShkYXRhYmFzZS5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogeworICAgIGlmIChtX2luc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAiRGF0YWJhc2VBZ2VudCBhbHJlYWR5IGRpc2FibGVkIl9zOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRh
dGFiYXNlQWdlbnQobnVsbHB0cik7CiAKICAgICBtX3Jlc291cmNlcy5jbGVhcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBw
Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0FwcENvbnRyb2xsZXIuanMKaW5kZXggMzI0NjlhZjQ4MGZkYjAzMzc3YmFhY2Y0NzUw
N2RkMDVhNzFjOTBiYi4uMWY1MDRlNGNjMzE5ZTNhNTg1MDI0YTM0NWM0OGUyYjRkY2IxZWM2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQXBwQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyLmpzCkBAIC03MiwxMCArNzIsMTUgQEAgV0ku
QXBwQ29udHJvbGxlciA9IGNsYXNzIEFwcENvbnRyb2xsZXIgZXh0ZW5kcyBXSS5BcHBDb250cm9s
bGVyQmFzZQogCiAgICAgICAgIGZvciAobGV0IGRvbWFpbiBvZiBkb21haW5zKSB7CiAgICAgICAg
ICAgICBsZXQgYWdlbnQgPSBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKGRvbWFpbik7
Ci0gICAgICAgICAgICBpZiAoYWdlbnQuZW5hYmxlKQotICAgICAgICAgICAgICAgIGFnZW50LmVu
YWJsZSgpOworCiAgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKICAg
ICAgICAgICAgICAgICB0YXJnZXQuYWN0aXZhdGVFeHRyYURvbWFpbihkb21haW4pOworCisgICAg
ICAgICAgICBsZXQgbWFuYWdlciA9IFdJLm1hbmFnZXJzLmZpbmQoKG1hbmFnZXIpID0+IG1hbmFn
ZXIuZG9tYWlucyAmJiBtYW5hZ2VyLmRvbWFpbnMuaW5jbHVkZXMoZG9tYWluKSk7CisgICAgICAg
ICAgICBpZiAobWFuYWdlcikKKyAgICAgICAgICAgICAgICBtYW5hZ2VyLmFjdGl2YXRlRXh0cmFE
b21haW4oZG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGFnZW50LmVuYWJsZSkKKyAgICAg
ICAgICAgICAgICBhZ2VudC5lbmFibGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1F
OiBhbGwgY29kZSB3aXRoaW4gV0kuYWN0aXZhdGVFeHRyYURvbWFpbnMgc2hvdWxkIGJlIGRpc3Ry
aWJ1dGVkIGVsc2V3aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuanMKaW5kZXggMjBmNjkxOGRlY2Q1YzA5ODc0MjMxZGJmNWZkMzNlZmEzYTgxOGY1
ZS4uYTgwMGVkYmIxNDc5ZWQwY2M0ZDM3NGY1ZDZkMmVmYjRiNDQyNzI1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKQEAgLTMxLDE4ICszMSwy
OSBAQCBXSS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlciA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0gICAg
ICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBX
SS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1v
dmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2Vu
YWJsZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICB9CiAKLSAgICAgICAg
dGhpcy5fb25saW5lID0gdHJ1ZTsKKyAgICAvLyBBZ2VudAogCi0gICAgICAgIHRoaXMuaW5pdGlh
bGl6ZSgpOworICAgIGdldCBkb21haW5zKCkgeyByZXR1cm4gWyJBcHBsaWNhdGlvbkNhY2hlIl07
IH0KKworICAgIGFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWluKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoZG9tYWluID09PSAiQXBwbGljYXRpb25DYWNoZSIpOworCisgICAgICAgIGZv
ciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXpl
VGFyZ2V0KHRhcmdldCk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFsaXpl
VGFyZ2V0KHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAg
ICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodGFyZ2V0LkFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dCkgewogICAgICAgICAgICAgdGFyZ2V0LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5lbmFibGUoKTsK
ICAgICAgICAgICAgIHRhcmdldC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQuZ2V0RnJhbWVzV2l0aE1h
bmlmZXN0cyh0aGlzLl9mcmFtZXNXaXRoTWFuaWZlc3RzTG9hZGVkLmJpbmQodGhpcykpOwpAQCAt
NTEsMTAgKzYyLDcgQEAgV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gUHVibGljCiAKLSAg
ICBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmpl
Y3RzID0ge307Ci0gICAgfQorICAgIGdldCBvbmxpbmUoKSB7IHJldHVybiB0aGlzLl9vbmxpbmU7
IH0KIAogICAgIGdldCBhcHBsaWNhdGlvbkNhY2hlT2JqZWN0cygpCiAgICAgewpAQCAtNjQsMjkg
KzcyLDQyIEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9u
Q2FjaGVPYmplY3RzOwogICAgIH0KIAotICAgIG5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxp
bmUpCisgICAgZW5hYmxlKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX29ubGluZSA9IGlzTm93T25s
aW5lOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZW5hYmxlZCk7CiAKLSAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
RXZlbnQuTmV0d29ya1N0YXRlVXBkYXRlZCwge29ubGluZTogdGhpcy5fb25saW5lfSk7CisgICAg
ICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworCisgICAgICAgIHRoaXMuX3Jlc2V0KCk7CisKKyAg
ICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLmlu
aXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
SS5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc1Jl
bW92ZWQsIHRoaXMpOwogICAgIH0KIAotICAgIGdldCBvbmxpbmUoKQorICAgIGRpc2FibGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX29ubGluZTsKLSAgICB9CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOwogCi0gICAgYXBwbGljYXRpb25DYWNoZVN0YXR1c1Vw
ZGF0ZWQoZnJhbWVJZCwgbWFuaWZlc3RVUkwsIHN0YXR1cykKLSAgICB7Ci0gICAgICAgIHZhciBm
cmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkKTsKLSAg
ICAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fZW5h
YmxlZCA9IGZhbHNlOwogCi0gICAgICAgIHRoaXMuX2ZyYW1lTWFuaWZlc3RVcGRhdGVkKGZyYW1l
LCBtYW5pZmVzdFVSTCwgc3RhdHVzKTsKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRh
cmdldHMpIHsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6IEFwcGxpY2F0
aW9uQ2FjaGUuZGlzYWJsZSBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgICAgIGlmICh0YXJn
ZXQuQXBwbGljYXRpb25DYWNoZUFnZW50ICYmIHRhcmdldC5BcHBsaWNhdGlvbkNhY2hlQWdlbnQu
ZGlzYWJsZSkKKyAgICAgICAgICAgICAgICB0YXJnZXQuQXBwbGljYXRpb25DYWNoZUFnZW50LmRp
c2FibGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFdJLkZyYW1lLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICB9CiAK
ICAgICByZXF1ZXN0QXBwbGljYXRpb25DYWNoZShmcmFtZSwgY2FsbGJhY2spCiAgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwogICAgICAgICBmdW5jdGlvbiBj
YWxsYmFja1dyYXBwZXIoZXJyb3IsIGFwcGxpY2F0aW9uQ2FjaGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChlcnJvcikgewpAQCAtMTAwLDE4ICsxMjEsNDQgQEAgV0kuQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlQWdlbnQuZ2V0QXBwbGljYXRpb25DYWNoZUZv
ckZyYW1lKGZyYW1lLmlkLCBjYWxsYmFja1dyYXBwZXIpOwogICAgIH0KIAorICAgIC8vIEFwcGxp
Y2F0aW9uQ2FjaGVPYnNlcnZlcgorCisgICAgbmV0d29ya1N0YXRlVXBkYXRlZChpc05vd09ubGlu
ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCisgICAg
ICAgIHRoaXMuX29ubGluZSA9IGlzTm93T25saW5lOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50Lk5ldHdvcmtT
dGF0ZVVwZGF0ZWQsIHtvbmxpbmU6IHRoaXMuX29ubGluZX0pOworICAgIH0KKworICAgIGFwcGxp
Y2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKGZyYW1lSWQsIG1hbmlmZXN0VVJMLCBzdGF0dXMpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKworICAgICAgICBs
ZXQgZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7
CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5fZnJhbWVNYW5pZmVzdFVwZGF0ZWQoZnJhbWUsIG1hbmlmZXN0VVJMLCBzdGF0dXMpOworICAg
IH0KKwogICAgIC8vIFByaXZhdGUKIAorICAgIF9yZXNldCgpCisgICAgeworICAgICAgICB0aGlz
Ll9vbmxpbmUgPSB0cnVlOworICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cyA9
IHt9OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOworICAgIH0KKwogICAgIF9tYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50
YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CiAKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5p
c01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRo
ZSBtYWluIGZyYW1lLCB3ZSB3YW50IHRvIGNsZWFyIG91ciBsaXN0IG9mIG9iamVjdHMsIGJlY2F1
c2Ugd2UgYXJlIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS4KLSAgICAgICAgICAgIHRoaXMuaW5p
dGlhbGl6ZSgpOwotCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKLQorICAgICAgICAgICAg
dGhpcy5fcmVzZXQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjYs
NyArMTczLDEyIEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9tYW5pZmVzdEZvckZyYW1l
TG9hZGVkKGZyYW1lSWQsIGVycm9yLCBtYW5pZmVzdFVSTCkKICAgICB7Ci0gICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5h
bEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIg
ZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7CkBA
IC0xMzksNyArMTkxLDEyIEBAIFdJLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3MgQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9mcmFtZXNXaXRo
TWFuaWZlc3RzTG9hZGVkKGVycm9yLCBmcmFtZXNXaXRoTWFuaWZlc3RzKQogICAgIHsKLSAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIFdJLnJlcG9y
dEludGVybmFsRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzV2l0aE1hbmlmZXN0cy5sZW5ndGg7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvQ2FudmFzTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMKaW5kZXggODg3NjZjZTU0NmExZmJkOTlh
YjFkYWNjODFiYTQ3OWMzZmVkMmQxNS4uZmQyNjEzZDA3ZWJhNzQzMGI3NDk0ZjI2NzQ3MjRlODcx
NmZhNjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpzCkBAIC0zOSw2ICszOSwx
OCBAQCBXSS5DYW52YXNNYW5hZ2VyID0gY2xhc3MgQ2FudmFzTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsK
ICAgICB9CiAKKyAgICAvLyBBZ2VudAorCisgICAgZ2V0IGRvbWFpbnMoKSB7IHJldHVybiBbIkNh
bnZhcyJdOyB9CisKKyAgICBhY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbikKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGRvbWFpbiA9PT0gIkNhbnZhcyIpOworCisgICAgICAgIGZvciAo
bGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFy
Z2V0KHRhcmdldCk7CisgICAgfQorCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFsaXplVGFy
Z2V0KHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0RPTVN0b3JhZ2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NU3RvcmFnZU1hbmFnZXIuanMKaW5kZXgg
ZWFiOTdmNDBhNWIwNmM3NDIzMTNhYTg5ODEyYzUxZWVmOTlhYjRhMi4uODQzNDBmYTVhNzViYzM2
ZGU0ZmJmNmJmMDcxY2ExMTdjNWJkMTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NU3RvcmFnZU1hbmFnZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NU3RvcmFn
ZU1hbmFnZXIuanMKQEAgLTMyLDMyICszMiwzNiBAQCBXSS5ET01TdG9yYWdlTWFuYWdlciA9IGNs
YXNzIERPTVN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBz
dXBlcigpOwogCi0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOwotICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNl
Y3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1cml0eU9yaWdpbkRpZENoYW5nZSwgdGhp
cyk7CisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcmVzZXQo
KTsKKyAgICB9CiAKLSAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7CisgICAgLy8gQWdlbnQKKwor
ICAgIGdldCBkb21haW5zKCkgeyByZXR1cm4gWyJET01TdG9yYWdlIl07IH0KKworICAgIGFjdGl2
YXRlRXh0cmFEb21haW4oZG9tYWluKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZG9t
YWluID09PSAiRE9NU3RvcmFnZSIpOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CiAgICAg
fQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkKICAgICB7
CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAg
ICAgICBpZiAodGFyZ2V0LkRPTVN0b3JhZ2VBZ2VudCkKICAgICAgICAgICAgIHRhcmdldC5ET01T
dG9yYWdlQWdlbnQuZW5hYmxlKCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbml0
aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzID0gW107Ci0g
ICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzID0ge307Ci0gICAgfQotCi0gICAgZ2V0
IGRvbVN0b3JhZ2VPYmplY3RzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kb21TdG9y
YWdlT2JqZWN0czsKLSAgICB9CisgICAgZ2V0IGRvbVN0b3JhZ2VPYmplY3RzKCkgeyByZXR1cm4g
dGhpcy5fZG9tU3RvcmFnZU9iamVjdHM7IH0KIAogICAgIGdldCBjb29raWVTdG9yYWdlT2JqZWN0
cygpCiAgICAgewpAQCAtNjcsMTcgKzcxLDQyIEBAIFdJLkRPTVN0b3JhZ2VNYW5hZ2VyID0gY2xh
c3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIGNv
b2tpZVN0b3JhZ2VPYmplY3RzOwogICAgIH0KIAotICAgIGRvbVN0b3JhZ2VXYXNBZGRlZChpZCwg
aG9zdCwgaXNMb2NhbFN0b3JhZ2UpCisgICAgZW5hYmxlKCkKICAgICB7Ci0gICAgICAgIHZhciBk
b21TdG9yYWdlID0gbmV3IFdJLkRPTVN0b3JhZ2VPYmplY3QoaWQsIGhvc3QsIGlzTG9jYWxTdG9y
YWdlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2VuYWJsZWQpOwogCi0gICAgICAg
IHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLnB1c2goZG9tU3RvcmFnZSk7Ci0gICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0
b3JhZ2VPYmplY3RXYXNBZGRlZCwge2RvbVN0b3JhZ2V9KTsKKyAgICAgICAgdGhpcy5fZW5hYmxl
ZCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKworICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0
YXJnZXQpOworCisgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNl
Y3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlzLl9zZWN1cml0eU9yaWdpbkRpZENoYW5nZSwgdGhp
cyk7CiAgICAgfQogCisgICAgZGlzYWJsZSgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CisKKyAg
ICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0
YXJnZXQuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAgICAgICAgIHRhcmdldC5ET01TdG9yYWdl
QWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisKKyAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZl
bnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZXNldCgpOwor
ICAgIH0KKworICAgIC8vIERPTVN0b3JhZ2VPYnNlcnZlcgorCiAgICAgaXRlbXNDbGVhcmVkKHN0
b3JhZ2VJZCkKICAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTVN0b3JhZ2VPYnNl
cnZlci4KKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CiAKICAgICAgICAg
bGV0IGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQp
OwogICAgICAgICBpZiAoZG9tU3RvcmFnZSkKQEAgLTg2LDcgKzExNSw3IEBAIFdJLkRPTVN0b3Jh
Z2VNYW5hZ2VyID0gY2xhc3MgRE9NU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgIGl0ZW1SZW1vdmVkKHN0b3JhZ2VJZCwga2V5KQogICAgIHsKLSAgICAgICAgLy8gQ2FsbGVk
IGZyb20gV0kuRE9NU3RvcmFnZU9ic2VydmVyLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9lbmFibGVkKTsKIAogICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VG
b3JJZGVudGlmaWVyKHN0b3JhZ2VJZCk7CiAgICAgICAgIGlmIChkb21TdG9yYWdlKQpAQCAtOTUs
NyArMTI0LDcgQEAgV0kuRE9NU3RvcmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgaXRlbUFkZGVkKHN0b3JhZ2VJZCwga2V5LCB2YWx1
ZSkKICAgICB7Ci0gICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkRPTVN0b3JhZ2VPYnNlcnZlci4K
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CiAKICAgICAgICAgbGV0IGRv
bVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpOwogICAg
ICAgICBpZiAoZG9tU3RvcmFnZSkKQEAgLTEwNCw3ICsxMzMsNyBAQCBXSS5ET01TdG9yYWdlTWFu
YWdlciA9IGNsYXNzIERPTVN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBp
dGVtVXBkYXRlZChzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgLy8gQ2FsbGVkIGZyb20gV0kuRE9NU3RvcmFnZU9ic2VydmVyLgorICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9lbmFibGVkKTsKIAogICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IHRoaXMu
X2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKHN0b3JhZ2VJZCk7CiAgICAgICAgIGlmIChkb21TdG9y
YWdlKQpAQCAtMTEzLDYgKzE0MiwxMCBAQCBXSS5ET01TdG9yYWdlTWFuYWdlciA9IGNsYXNzIERP
TVN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBpbnNwZWN0RE9NU3RvcmFn
ZShpZCkKICAgICB7CisgICAgICAgIC8vIENhbGxlZCBmcm9tIFdJLkluc3BlY3Rvck9ic2VydmVy
LgorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOworCiAgICAgICAgIHZh
ciBkb21TdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoaWQpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChkb21TdG9yYWdlKTsKICAgICAgICAgaWYgKCFkb21TdG9yYWdlKQpA
QCAtMTIyLDYgKzE1NSwyMCBAQCBXSS5ET01TdG9yYWdlTWFuYWdlciA9IGNsYXNzIERPTVN0b3Jh
Z2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBQcml2YXRlCiAKKyAgICBfcmVz
ZXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fZG9tU3RvcmFnZU9iamVjdHMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMgPSB7fTsKKworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhET01TdG9yYWdlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKKwor
ICAgICAgICBsZXQgbWFpbkZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOworICAg
ICAgICBpZiAobWFpbkZyYW1lKSB7CisgICAgICAgICAgICB0aGlzLl9hZGRET01TdG9yYWdlSWZO
ZWVkZWQobWFpbkZyYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZENvb2tpZVN0b3JhZ2VJZk5l
ZWRlZChtYWluRnJhbWUpOworICAgICAgICB9CisgICAgfQorCiAgICAgX2RvbVN0b3JhZ2VGb3JJ
ZGVudGlmaWVyKGlkKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgc3RvcmFnZU9iamVjdCBvZiB0
aGlzLl9kb21TdG9yYWdlT2JqZWN0cykgewpAQCAtMTMzLDIwICsxODAsNDMgQEAgV0kuRE9NU3Rv
cmFnZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdl
KGV2ZW50KQorICAgIF9hZGRET01TdG9yYWdlSWZOZWVkZWQoZnJhbWUpCiAgICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CisgICAg
ICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJhbWUsIHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxpc3Qg
b2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLgotICAg
ICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01TdG9yYWdlTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKKyAgICAg
ICAgaWYgKCF3aW5kb3cuRE9NU3RvcmFnZUFnZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICB0aGlzLl9hZGRET01TdG9yYWdlSWZOZWVkZWQoZXZlbnQudGFyZ2V0KTsKLSAg
ICAgICAgfQorICAgICAgICAvLyBEb24ndCBzaG93IHN0b3JhZ2UgaWYgd2UgZG9uJ3QgaGF2ZSBh
IHNlY3VyaXR5IG9yaWdpbiAoYWJvdXQ6YmxhbmspLgorICAgICAgICBpZiAoIWZyYW1lLnNlY3Vy
aXR5T3JpZ2luIHx8IGZyYW1lLnNlY3VyaXR5T3JpZ2luID09PSAiOi8vIikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgcGFzc2luZyB0aGUgb3RoZXIg
cGFydHMgb2YgdGhlIG9yaWdpbiBhbG9uZy4KKworICAgICAgICBsZXQgYWRkRE9NU3RvcmFnZSA9
IChpc0xvY2FsU3RvcmFnZSkgPT4geworICAgICAgICAgICAgbGV0IGlkZW50aWZpZXIgPSB7c2Vj
dXJpdHlPcmlnaW46IGZyYW1lLnNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZX07CisgICAg
ICAgICAgICBpZiAodGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBsZXQgZG9tU3RvcmFnZSA9IG5l
dyBXSS5ET01TdG9yYWdlT2JqZWN0KGlkZW50aWZpZXIsIGZyYW1lLm1haW5SZXNvdXJjZS51cmxD
b21wb25lbnRzLmhvc3QsIGlkZW50aWZpZXIuaXNMb2NhbFN0b3JhZ2UpOworICAgICAgICAgICAg
dGhpcy5fZG9tU3RvcmFnZU9iamVjdHMucHVzaChkb21TdG9yYWdlKTsKKyAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKERPTVN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0
b3JhZ2VPYmplY3RXYXNBZGRlZCwge2RvbVN0b3JhZ2V9KTsKKyAgICAgICAgfTsKKyAgICAgICAg
YWRkRE9NU3RvcmFnZSh0cnVlKTsKKyAgICAgICAgYWRkRE9NU3RvcmFnZShmYWxzZSk7CisgICAg
fQorCisgICAgX2FkZENvb2tpZVN0b3JhZ2VJZk5lZWRlZChmcmFtZSkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAo
IXdpbmRvdy5ET01TdG9yYWdlQWdlbnQpCisgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
Ly8gQWRkIHRoZSBob3N0IG9mIHRoZSBmcmFtZSB0aGF0IGNoYW5nZWQgdGhlIG1haW4gcmVzb3Vy
Y2UgdG8gdGhlIGxpc3Qgb2YgaG9zdHMgdGhlcmUgY291bGQgYmUgY29va2llcyBmb3IuCi0gICAg
ICAgIHZhciBob3N0ID0gcGFyc2VVUkwoZXZlbnQudGFyZ2V0LnVybCkuaG9zdDsKKyAgICAgICAg
bGV0IGhvc3QgPSBwYXJzZVVSTChmcmFtZS51cmwpLmhvc3Q7CiAgICAgICAgIGlmICghaG9zdCkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTU3LDI0ICsyMjcsMTYgQEAgV0kuRE9NU3RvcmFn
ZU1hbmFnZXIgPSBjbGFzcyBET01TdG9yYWdlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01TdG9yYWdlTWFuYWdlci5F
dmVudC5Db29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHtjb29raWVTdG9yYWdlOiB0aGlzLl9j
b29raWVTdG9yYWdlT2JqZWN0c1tob3N0XX0pOwogICAgIH0KIAotICAgIF9hZGRET01TdG9yYWdl
SWZOZWVkZWQoZnJhbWUpCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7
Ci0gICAgICAgIGlmICghd2luZG93LkRPTVN0b3JhZ2VBZ2VudCkKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV0kuRnJhbWUpOworCisgICAgICAgIGlmIChl
dmVudC50YXJnZXQuaXNNYWluRnJhbWUoKSkgeworICAgICAgICAgICAgdGhpcy5fcmVzZXQoKTsK
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgIC8vIERvbid0IHNob3cg
c3RvcmFnZSBpZiB3ZSBkb24ndCBoYXZlIGEgc2VjdXJpdHkgb3JpZ2luIChhYm91dDpibGFuayku
Ci0gICAgICAgIGlmICghZnJhbWUuc2VjdXJpdHlPcmlnaW4gfHwgZnJhbWUuc2VjdXJpdHlPcmln
aW4gPT09ICI6Ly8iKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIEZJWE1FOiBD
b25zaWRlciBwYXNzaW5nIHRoZSBvdGhlciBwYXJ0cyBvZiB0aGUgb3JpZ2luIGFsb25nIHRvIGRv
bVN0b3JhZ2VXYXNBZGRlZC4KLQotICAgICAgICB2YXIgbG9jYWxTdG9yYWdlSWRlbnRpZmllciA9
IHtzZWN1cml0eU9yaWdpbjogZnJhbWUuc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlOiB0
cnVlfTsKLSAgICAgICAgaWYgKCF0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihsb2NhbFN0
b3JhZ2VJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHRoaXMuZG9tU3RvcmFnZVdhc0FkZGVkKGxv
Y2FsU3RvcmFnZUlkZW50aWZpZXIsIGZyYW1lLm1haW5SZXNvdXJjZS51cmxDb21wb25lbnRzLmhv
c3QsIHRydWUpOwotCi0gICAgICAgIHZhciBzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIgPSB7c2Vj
dXJpdHlPcmlnaW46IGZyYW1lLnNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZTogZmFsc2V9
OwotICAgICAgICBpZiAoIXRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVudGlmaWVyKHNlc3Npb25TdG9y
YWdlSWRlbnRpZmllcikpCi0gICAgICAgICAgICB0aGlzLmRvbVN0b3JhZ2VXYXNBZGRlZChzZXNz
aW9uU3RvcmFnZUlkZW50aWZpZXIsIGZyYW1lLm1haW5SZXNvdXJjZS51cmxDb21wb25lbnRzLmhv
c3QsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fYWRkQ29va2llU3RvcmFnZUlmTmVlZGVkKGV2ZW50
LnRhcmdldCk7CiAgICAgfQogCiAgICAgX3NlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlKGV2ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRGF0YWJhc2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRGF0YWJhc2VNYW5hZ2VyLmpzCmluZGV4IDljMGQ1ODM4ZjYxYzgyZGE1
Y2ZjMzRlMjc2YzA3MDcwNDM4OWRkOGUuLjZiMzg4ODZiNzYwMGJmMTliNTdjYmJmNjEwZGQyOGVm
OTQ1YTliMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0RhdGFiYXNlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXRhYmFzZU1hbmFnZXIuanMKQEAgLTMyLDM0
ICszMiw3MiBAQCBXSS5EYXRhYmFzZU1hbmFnZXIgPSBjbGFzcyBEYXRhYmFzZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgV0kuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2Us
IHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX2VuYWJs
ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICB9CiAKLSAgICAgICAgdGhp
cy5pbml0aWFsaXplKCk7CisgICAgLy8gQWdlbnQKKworICAgIGdldCBkb21haW5zKCkgeyByZXR1
cm4gWyJEYXRhYmFzZSJdOyB9CisKKyAgICBhY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbikKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbWFpbiA9PT0gIkRhdGFiYXNlIik7CisKKyAg
ICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLmlu
aXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKICAgICB9CiAKICAgICAvLyBUYXJnZXQKIAogICAgIGlu
aXRpYWxpemVUYXJnZXQodGFyZ2V0KQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVk
KQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGlmICh0YXJnZXQuRGF0YWJhc2VBZ2Vu
dCkKICAgICAgICAgICAgIHRhcmdldC5EYXRhYmFzZUFnZW50LmVuYWJsZSgpOwogICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCi0gICAgaW5pdGlhbGl6ZSgpCisgICAgZ2V0IGRhdGFiYXNlcygpIHsg
cmV0dXJuIHRoaXMuX2RhdGFiYXNlT2JqZWN0czsgfQorCisgICAgZW5hYmxlKCkKICAgICB7Ci0g
ICAgICAgIHRoaXMuX2RhdGFiYXNlT2JqZWN0cyA9IFtdOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fZW5hYmxlZCk7CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7CisKKyAg
ICAgICAgdGhpcy5fcmVzZXQoKTsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFy
Z2V0cykKKyAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpOworCisgICAg
ICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogICAgIH0KIAot
ICAgIGdldCBkYXRhYmFzZXMoKQorICAgIGRpc2FibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2RhdGFiYXNlT2JqZWN0czsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5h
YmxlZCk7CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgIGZvciAo
bGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0LkRhdGFi
YXNlQWdlbnQpCisgICAgICAgICAgICAgICAgdGFyZ2V0LkRhdGFiYXNlQWdlbnQuZGlzYWJsZSgp
OworICAgICAgICB9CisKKyAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxs
LCBudWxsLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0KIAorICAgIC8v
IERhdGFiYXNlT2JzZXJ2ZXIKKwogICAgIGRhdGFiYXNlV2FzQWRkZWQoaWQsIGhvc3QsIG5hbWUs
IHZlcnNpb24pCiAgICAgewotICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5EYXRhYmFzZU9ic2Vy
dmVyLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKIAogICAgICAgICB2
YXIgZGF0YWJhc2UgPSBuZXcgV0kuRGF0YWJhc2VPYmplY3QoaWQsIGhvc3QsIG5hbWUsIHZlcnNp
b24pOwogCkBAIC02Nyw4ICsxMDUsMTIgQEAgV0kuRGF0YWJhc2VNYW5hZ2VyID0gY2xhc3MgRGF0
YWJhc2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRhdGFiYXNlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0FkZGVkLCB7
ZGF0YWJhc2V9KTsKICAgICB9CiAKKyAgICAvLyBJbnNwZWN0b3JPYnNlcnZlcgorCiAgICAgaW5z
cGVjdERhdGFiYXNlKGlkKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5h
YmxlZCk7CisKICAgICAgICAgdmFyIGRhdGFiYXNlID0gdGhpcy5fZGF0YWJhc2VGb3JJZGVudGlm
aWVyKGlkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YWJhc2UpOwogICAgICAgICBpZiAo
IWRhdGFiYXNlKQpAQCAtNzgsMTUgKzEyMCwxOSBAQCBXSS5EYXRhYmFzZU1hbmFnZXIgPSBjbGFz
cyBEYXRhYmFzZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAor
ICAgIF9yZXNldCgpCisgICAgeworICAgICAgICB0aGlzLl9kYXRhYmFzZU9iamVjdHMgPSBbXTsK
KworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EYXRhYmFzZU1hbmFn
ZXIuRXZlbnQuQ2xlYXJlZCk7CisgICAgfQorCiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5j
ZW9mIFdJLkZyYW1lKTsKIAotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkp
IHsKLSAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggdGhlIG1haW4gZnJhbWUs
IHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxpc3Qgb2Ygb2JqZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2
aWdhdGluZyB0byBhIG5ldyBwYWdlLgotICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7Ci0g
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EYXRhYmFzZU1hbmFn
ZXIuRXZlbnQuQ2xlYXJlZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5p
c01haW5GcmFtZSgpKQorICAgICAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICB9CiAKICAgICBf
ZGF0YWJhc2VGb3JJZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0luZGV4ZWREQk1hbmFn
ZXIuanMKaW5kZXggYTM4NDlmYjY3ZDI5ODVjOWJlZTQxYWNmMzc2ZDRiYmI4NDI0NWJkMC4uNzFl
ZmM2NjhiYjhlODRiZjY5NWEwNjNkNjQ1NDA1MTdiZjA2ZWE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9JbmRleGVkREJNYW5hZ2VyLmpzCkBAIC0zMiwzNCArMzIsNzEgQEAgV0kuSW5kZXhlZERCTWFu
YWdlciA9IGNsYXNzIEluZGV4ZWREQk1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAg
ICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5G
cmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENo
YW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUu
RXZlbnQuU2VjdXJpdHlPcmlnaW5EaWRDaGFuZ2UsIHRoaXMuX3NlY3VyaXR5T3JpZ2luRGlkQ2hh
bmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgICAgICB0aGlz
Ll9yZXNldCgpOworICAgIH0KIAotICAgICAgICB0aGlzLmluaXRpYWxpemUoKTsKKyAgICAvLyBB
Z2VudAorCisgICAgZ2V0IGRvbWFpbnMoKSB7IHJldHVybiBbIkluZGV4ZWREQiJdOyB9CisKKyAg
ICBhY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGRvbWFpbiA9PT0gIkluZGV4ZWREQiIpOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBv
ZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7
CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkK
ICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsK
KwogICAgICAgICBpZiAodGFyZ2V0LkluZGV4ZWREQkFnZW50KQogICAgICAgICAgICAgdGFyZ2V0
LkluZGV4ZWREQkFnZW50LmVuYWJsZSgpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAg
aW5pdGlhbGl6ZSgpCisgICAgZ2V0IGluZGV4ZWREYXRhYmFzZXMoKSB7IHJldHVybiB0aGlzLl9p
bmRleGVkRGF0YWJhc2VzOyB9CisKKyAgICBlbmFibGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5f
aW5kZXhlZERhdGFiYXNlcyA9IFtdOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZW5h
YmxlZCk7CisKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5f
cmVzZXQoKTsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAg
ICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpOworCisgICAgICAgIFdJLkZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5GcmFtZS5hZGRF
dmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LlNlY3VyaXR5T3JpZ2luRGlkQ2hhbmdlLCB0aGlz
Ll9zZWN1cml0eU9yaWdpbkRpZENoYW5nZSwgdGhpcyk7CiAgICAgfQogCi0gICAgZ2V0IGluZGV4
ZWREYXRhYmFzZXMoKQorICAgIGRpc2FibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2luZGV4ZWREYXRhYmFzZXM7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQp
OworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgaWYgKHRhcmdldC5JbmRleGVkREJB
Z2VudCkKKyAgICAgICAgICAgICAgICB0YXJnZXQuSW5kZXhlZERCQWdlbnQuZGlzYWJsZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0KIAogICAgIHJlcXVl
c3RJbmRleGVkRGF0YWJhc2VEYXRhKG9iamVjdFN0b3JlLCBvYmplY3RTdG9yZUluZGV4LCBzdGFy
dEVudHJ5SW5kZXgsIG1heGltdW1FbnRyeUNvdW50LCBjYWxsYmFjaykKICAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VuYWJsZWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh3
aW5kb3cuSW5kZXhlZERCQWdlbnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3RTdG9y
ZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxiYWNrKTsKQEAgLTk4LDYgKzEzNSw4IEBA
IFdJLkluZGV4ZWREQk1hbmFnZXIgPSBjbGFzcyBJbmRleGVkREJNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICBjbGVhck9iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fZW5hYmxlZCk7CisKICAgICAgICAgbGV0IHNlY3VyaXR5
T3JpZ2luID0gb2JqZWN0U3RvcmUucGFyZW50RGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW47CiAgICAg
ICAgIGxldCBkYXRhYmFzZU5hbWUgPSBvYmplY3RTdG9yZS5wYXJlbnREYXRhYmFzZS5uYW1lOwog
ICAgICAgICBsZXQgb2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmUubmFtZTsKQEAgLTEwNywy
MSArMTQ2LDIxIEBAIFdJLkluZGV4ZWREQk1hbmFnZXIgPSBjbGFzcyBJbmRleGVkREJNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbWFpblJlc291cmNl
RGlkQ2hhbmdlKGV2ZW50KQorICAgIF9yZXNldCgpCiAgICAgewotICAgICAgICBjb25zb2xlLmFz
c2VydChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBXSS5GcmFtZSk7CisgICAgICAgIHRoaXMuX2lu
ZGV4ZWREYXRhYmFzZXMgPSBbXTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuSW5kZXhlZERCTWFuYWdlci5FdmVudC5DbGVhcmVkKTsKIAotICAgICAgICBpZiAoZXZl
bnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWFs
aW5nIHdpdGggdGhlIG1haW4gZnJhbWUsIHdlIHdhbnQgdG8gY2xlYXIgb3VyIGxpc3Qgb2Ygb2Jq
ZWN0cywgYmVjYXVzZSB3ZSBhcmUgbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLgotICAgICAgICAg
ICAgdGhpcy5pbml0aWFsaXplKCk7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5JbmRleGVkREJNYW5hZ2VyLkV2ZW50LkNsZWFyZWQpOwotCi0gICAgICAgICAg
ICB0aGlzLl9hZGRJbmRleGVkREJEYXRhYmFzZXNJZk5lZWRlZChldmVudC50YXJnZXQpOwotICAg
ICAgICB9CisgICAgICAgIGxldCBtYWluRnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJh
bWU7CisgICAgICAgIGlmIChtYWluRnJhbWUpCisgICAgICAgICAgICB0aGlzLl9hZGRJbmRleGVk
REJEYXRhYmFzZXNJZk5lZWRlZChtYWluRnJhbWUpOwogICAgIH0KIAogICAgIF9hZGRJbmRleGVk
REJEYXRhYmFzZXNJZk5lZWRlZChmcmFtZSkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5h
YmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAoIXdpbmRvdy5JbmRleGVk
REJBZ2VudCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTgzLDYgKzIyMiwxNCBAQCBXSS5J
bmRleGVkREJNYW5hZ2VyID0gY2xhc3MgSW5kZXhlZERCTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhzZWN1cml0eU9y
aWdpbiwgcHJvY2Vzc0RhdGFiYXNlTmFtZXMuYmluZCh0aGlzKSk7CiAgICAgfQogCisgICAgX21h
aW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKKworICAgICAgICBpZiAoZXZlbnQu
dGFyZ2V0LmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICB0aGlzLl9yZXNldCgpOworICAgIH0K
KwogICAgIF9zZWN1cml0eU9yaWdpbkRpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdJLkZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCBlNzEwZWM2NTcz
ZDhlNzQ3NzQzN2FiNzc5YmFmMmJlODE1MGFjZTFmLi5jMDAyMTgzZWY0ODg3YjRhZDRiNGZiZGI1
MmRhZWY2NjQwZjE1MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGVzdC5odG1sCkBAIC04MywxNCArODMsMTcgQEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9j
b2wvV29ya2VyVGFyZ2V0LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2Nv
bC9JbnNwZWN0b3JPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlByb3Rv
Y29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL0NQVVByb2ZpbGVyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJQcm90b2NvbC9DU1NPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL0NhbnZhc09ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQ
cm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJQcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL0hlYXBPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlByb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9NZW1vcnlPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CkBAIC0yMzIsNiArMjM1
LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iUHJveGllcy9IZWFwU25hcHNob3RXb3JrZXJQcm94eS5q
cyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9C
cmVha3BvaW50TG9nTWVzc2FnZUxleGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMiPjwvc2NyaXB0PgpAQCAtMjM5LDkgKzI0MywxMSBA
QAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01NYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NU3RvcmFnZU1hbmFnZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9EYXRhYmFzZU1hbmFnZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9EZWJ1Z2dlck1hbmFn
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9IQVJCdWlsZGVy
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9JbmRleGVkREJNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTGF5ZXJUcmVl
TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL01lbW9y
eU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0L1Rlc3QuanMKaW5kZXggNTA1NGY0ZDAyMzBkYjk3ZjFkZWFjODgzZDAz
YWExOTdhMmZlZmJiMy4uZGE1NGRhZjljZDQ5YzAyNGE3YzIxMWFlMTJjNDkwYmNhNzkyMmQxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5q
cwpAQCAtMzYsOSArMzYsMTEgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJEZWJ1Z2dlckRpc3BhdGNoZXIobmV3IFdJLkRlYnVnZ2VyT2JzZXJ2
ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJIZWFwRGlzcGF0Y2hlcihuZXcgV0ku
SGVhcE9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyTWVtb3J5RGlzcGF0
Y2hlcihuZXcgV0kuTWVtb3J5T2JzZXJ2ZXIpOworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJEYXRhYmFzZURpc3BhdGNoZXIobmV3IFdJLkRhdGFiYXNlT2JzZXJ2ZXIpOwogICAgIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJET01TdG9yYWdlRGlzcGF0Y2hlcihuZXcgV0kuRE9NU3RvcmFn
ZU9ic2VydmVyKTsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyU2NyaXB0UHJvZmlsZXJE
aXNwYXRjaGVyKG5ldyBXSS5TY3JpcHRQcm9maWxlck9ic2VydmVyKTsKKyAgICBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyQXBwbGljYXRpb25DYWNoZURpc3BhdGNoZXIobmV3IFdJLkFwcGxpY2F0
aW9uQ2FjaGVPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNQVVByb2Zp
bGVyRGlzcGF0Y2hlcihuZXcgV0kuQ1BVUHJvZmlsZXJPYnNlcnZlcik7CisgICAgSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlclNjcmlwdFByb2ZpbGVyRGlzcGF0Y2hlcihuZXcgV0kuU2NyaXB0UHJv
ZmlsZXJPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlclRpbWVsaW5lRGlz
cGF0Y2hlcihuZXcgV0kuVGltZWxpbmVPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckNTU0Rpc3BhdGNoZXIobmV3IFdJLkNTU09ic2VydmVyKTsKICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyTGF5ZXJUcmVlRGlzcGF0Y2hlcihuZXcgV0kuTGF5ZXJUcmVlT2JzZXJ2
ZXIpOwpAQCAtNTEsMTIgKzUzLDE1IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
V0kudGFyZ2V0TWFuYWdlciA9IG5ldyBXSS5UYXJnZXRNYW5hZ2VyLAogICAgICAgICBXSS5uZXR3
b3JrTWFuYWdlciA9IG5ldyBXSS5OZXR3b3JrTWFuYWdlciwKICAgICAgICAgV0kuZG9tU3RvcmFn
ZU1hbmFnZXIgPSBuZXcgV0kuRE9NU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIFdJLmRhdGFiYXNl
TWFuYWdlciA9IG5ldyBXSS5EYXRhYmFzZU1hbmFnZXIsCisgICAgICAgIFdJLmluZGV4ZWREQk1h
bmFnZXIgPSBuZXcgV0kuSW5kZXhlZERCTWFuYWdlciwKICAgICAgICAgV0kuZG9tTWFuYWdlciA9
IG5ldyBXSS5ET01NYW5hZ2VyLAogICAgICAgICBXSS5jc3NNYW5hZ2VyID0gbmV3IFdJLkNTU01h
bmFnZXIsCiAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyID0gbmV3IFdJLkNvbnNvbGVNYW5hZ2Vy
LAogICAgICAgICBXSS5ydW50aW1lTWFuYWdlciA9IG5ldyBXSS5SdW50aW1lTWFuYWdlciwKICAg
ICAgICAgV0kuaGVhcE1hbmFnZXIgPSBuZXcgV0kuSGVhcE1hbmFnZXIsCiAgICAgICAgIFdJLm1l
bW9yeU1hbmFnZXIgPSBuZXcgV0kuTWVtb3J5TWFuYWdlciwKKyAgICAgICAgV0kuYXBwbGljYXRp
b25DYWNoZU1hbmFnZXIgPSBuZXcgV0kuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIsCiAgICAgICAg
IFdJLnRpbWVsaW5lTWFuYWdlciA9IG5ldyBXSS5UaW1lbGluZU1hbmFnZXIsCiAgICAgICAgIFdJ
LmF1ZGl0TWFuYWdlciA9IG5ldyBXSS5BdWRpdE1hbmFnZXIsCiAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlciA9IG5ldyBXSS5EZWJ1Z2dlck1hbmFnZXIsCkBAIC0xMjcsNyArMTMyLDExIEBAIFdJ
LnJlZGlyZWN0R2xvYmFsQWdlbnRzVG9Db25uZWN0aW9uID0gZnVuY3Rpb24oY29ubmVjdGlvbikK
IFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgLy8gVGhpbmdzIHRoYXQgd291
bGQgbm9ybWFsbHkgZ2V0IGNhbGxlZCBieSB0aGUgVUksIHRoYXQgd2Ugc3RpbGwgd2FudCB0byBk
byBpbiB0ZXN0cy4KKyAgICBXSS5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5lbmFibGUoKTsKICAg
ICBXSS5jYW52YXNNYW5hZ2VyLmVuYWJsZSgpOworICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyLmVu
YWJsZSgpOworICAgIFdJLmRhdGFiYXNlTWFuYWdlci5lbmFibGUoKTsKKyAgICBXSS5pbmRleGVk
REJNYW5hZ2VyLmVuYWJsZSgpOwogCiAgICAgLy8gU2lnbmFsIHRoYXQgdGhlIGZyb250ZW5kIGlz
IG5vdyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzLgogICAgIEluc3BlY3RvckZyb250ZW5kQVBJ
LmxvYWRDb21wbGV0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcwppbmRl
eCAzN2UzNzNjYTljNjQzYjEyMTBkMTFjNjY3ZWM1OGQwMWNiNzgyOGQ1Li4yMzQ5YTlkZGZhMDg4
MWE1YmE0YThlM2FhNWFkMmExMGJhYTNkZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRl
bnRWaWV3LmpzCkBAIC0zMSw2ICszMSwxMSBAQCBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcgPSBj
bGFzcyBTdG9yYWdlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlcgogICAg
ICAgICBsZXQgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyA9IFtXSS5BcHBsaWNhdGlv
bkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCwgV0kuSW5kZXhlZERhdGFiYXNlRGV0YWlsc1NpZGVi
YXJQYW5lbF07CiAKICAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAic3RvcmFnZSIsICJzdG9y
YWdlIiwgdGFiQmFySXRlbSwgV0kuU3RvcmFnZVNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQ
YW5lbENvbnN0cnVjdG9ycyk7CisKKyAgICAgICAgV0kuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
ZW5hYmxlKCk7CisgICAgICAgIFdJLmRhdGFiYXNlTWFuYWdlci5lbmFibGUoKTsKKyAgICAgICAg
V0kuZG9tU3RvcmFnZU1hbmFnZXIuZW5hYmxlKCk7CisgICAgICAgIFdJLmluZGV4ZWREQk1hbmFn
ZXIuZW5hYmxlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIHRhYkluZm8oKQpAQCAtNDMsNyArNDgs
NyBAQCBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlcgogCiAgICAgc3RhdGljIGlzVGFiQWxsb3dlZCgp
CiAgICAgewotICAgICAgICByZXR1cm4gISF3aW5kb3cuRE9NU3RvcmFnZUFnZW50IHx8ICEhd2lu
ZG93LkRhdGFiYXNlQWdlbnQgfHwgISF3aW5kb3cuSW5kZXhlZERCQWdlbnQ7CisgICAgICAgIHJl
dHVybiAhISh3aW5kb3cuQXBwbGljYXRpb25DYWNoZUFnZW50IHx8IHdpbmRvdy5ET01TdG9yYWdl
QWdlbnQgfHwgd2luZG93LkRhdGFiYXNlQWdlbnQgfHwgd2luZG93LkluZGV4ZWREQkFnZW50KTsK
ICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTYwLDEwICs2NSwyNCBAQCBXSS5TdG9yYWdlVGFi
Q29udGVudFZpZXcgPSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50QnJvd3NlcgogCiAgICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2Jq
ZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V0kuRE9NU3RvcmFnZU9iamVjdCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkNv
b2tpZVN0b3JhZ2VPYmplY3QgfHwKLSAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV0kuRGF0YWJhc2VUYWJsZU9iamVjdCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdJLkRhdGFiYXNlT2JqZWN0IHx8Ci0gICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdJLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSB8fCByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlIHx8Ci0gICAgICAgICAgICBy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkluZGV4ZWREYXRhYmFzZSB8fCByZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXg7
CisgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkFwcGxpY2F0
aW9uQ2FjaGVGcmFtZQorICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXSS5Db29raWVTdG9yYWdlT2JqZWN0CisgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdJLkRPTVN0b3JhZ2VPYmplY3QKKyAgICAgICAgICAgIHx8IHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRGF0YWJhc2VPYmplY3QKKyAgICAgICAgICAgIHx8IHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRGF0YWJhc2VUYWJsZU9iamVjdAorICAgICAg
ICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5JbmRleGVkRGF0YWJhc2UK
KyAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmUKKyAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleDsKKyAgICB9CisKKyAgICBj
bG9zZWQoKQorICAgIHsKKyAgICAgICAgV0kuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuZGlzYWJs
ZSgpOworICAgICAgICBXSS5kYXRhYmFzZU1hbmFnZXIuZGlzYWJsZSgpOworICAgICAgICBXSS5k
b21TdG9yYWdlTWFuYWdlci5kaXNhYmxlKCk7CisgICAgICAgIFdJLmluZGV4ZWREQk1hbmFnZXIu
ZGlzYWJsZSgpOworCisgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogICAgIH0KIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>