<?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>226624</bug_id>
          
          <creation_ts>2021-06-03 21:42:04 -0700</creation_ts>
          <short_desc>Web Inspector: Add instrumentation to node destruction for InspectorDOMAgent</short_desc>
          <delta_ts>2021-06-11 15:37:50 -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>189687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>boelife</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yusufalaaothman001</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766661</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-03 21:42:04 -0700</bug_when>
    <thetext>&lt;rdar://69543874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766664</commentid>
    <comment_count>1</comment_count>
      <attachid>430538</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-03 21:45:30 -0700</bug_when>
    <thetext>Created attachment 430538
WIP v0.1 - Patch for EWS testing of base changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766813</commentid>
    <comment_count>2</comment_count>
      <attachid>430586</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-04 09:44:30 -0700</bug_when>
    <thetext>Created attachment 430586
WIP v0.2 - Patch for EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767105</commentid>
    <comment_count>3</comment_count>
      <attachid>430643</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-04 22:09:27 -0700</bug_when>
    <thetext>Created attachment 430643
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767449</commentid>
    <comment_count>4</comment_count>
      <attachid>430643</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-07 08:30:48 -0700</bug_when>
    <thetext>Comment on attachment 430643
Patch v1.0

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:175
&gt; -        pageDOMDebuggerAgent-&gt;didRemoveDOMNode(node);
&gt; +        pageDOMDebuggerAgent-&gt;willDestroyDOMNode(node);

I think we should keep `PageDOMDebuggerAgent::didRemoveDOMNode` and add a new `PageDOMDebuggerAgent::willDestroyDOMNode` that just calls `didRemoveDOMNode(node)` with a comment like `// Treat destruction as though the DOM node was just removed from the main DOM tree.` for the sake of readability/searchability

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2492
&gt; +    // If parent is not mapped yet/anymore -&gt; ignore the event.
&gt; +    if (!m_documentNodeToIdMap.contains(parent))

I feel like we should still attempt to `unbind` even if `parent` hasn&apos;t been instrumented, just in case.  Like what about if the `Node` is not attached to the main DOM tree and is just a totally isolated node?  We may need to add a new event to the frontend like `DOM.nodeDestroyed` that ensures that the frontend removes the `WI.DOMNode`.  This function being called should ensure that `Node` is not found _anywhere_ in _any_ of the `HashMap`, regardless of the state of the `Node` and/or any ancestors.

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2510
&gt; +    unbind(&amp;node, &amp;m_documentNodeToIdMap);

Are we sure that we really need to do a full `unbind`?  This also does stuff like walking the entire subtree and calling `unbind` for all those nodes too.  I don&apos;t think it&apos;d be a problem here, but doing more complex stuff inside a destructor can be risky, so perhaps we should only do things related to the given `node` directly and let any related stuff (e.g. subtree nodes) be handled by their own `willDestroyDOMNode`.

ditto for `InspectorDOMDebuggerAgent::willDestroyDOMNode` too

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2516
&gt; +    for (auto parentID : m_childNodeCountUpdatedIdentifiers)
&gt; +        m_frontendDispatcher-&gt;childNodeCountUpdated(parentID, 0);

I think we need to make sure that the parent node still has no children before sending this.  We wouldn&apos;t want any new child nodes added to the parent in between `InspectorDOMAgent::willDestroyDOMNode` and the timer firing to be wiped out.

NIT: I think this could use a better name since it only every sends a count of `0`.  Maybe `m_pendingChildUpdateIdentifiersForEmptyParentNodes`?

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2517
&gt; +    m_childNodeCountUpdatedIdentifiers.clear();

NIT: you can do this in one line :)
```
    for (auto parentID : std::exchange(m_childNodeCountUpdatedIdentifiers, { })
```

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2520
&gt; +    for (auto pair : m_childNodeRemovedIdentifiers)
&gt; +        m_frontendDispatcher-&gt;childNodeRemoved(pair.first, pair.second);

NIT: I&apos;d extract first and second into better named variables
```
    for (auto&amp; [parentId, nodeId] : std::exchange(m_pendingChildNodeRemovedIdentifiers, { })
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767990</commentid>
    <comment_count>5</comment_count>
      <attachid>430922</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-08 17:29:36 -0700</bug_when>
    <thetext>Created attachment 430922
WIP v1.1 - First pass of review notes for EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767991</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-06-08 17:30:26 -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>1768006</commentid>
    <comment_count>7</comment_count>
      <attachid>430922</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-08 18:02:50 -0700</bug_when>
    <thetext>Comment on attachment 430922
WIP v1.1 - First pass of review notes for EWS testing

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

Looking good :)

Any idea if you can write a test for this?

&gt; Source/JavaScriptCore/inspector/protocol/DOM.json:682
&gt; +            &quot;name&quot;: &quot;detachedNodeDestroyed&quot;,

NIT: While this is technically correct, i think for the sake of &quot;future proofing&quot; it may be better to just call this `willDestroyDOMNode` both to match the `InspectorInstrumentation` name and so that this better fits into &lt;https://webkit.org/b/189687&gt;.  We probably eventually want to have this event be the teardown instead of `childNodeRemoved`, so if/when that day comes having to add yet another event (i.e. having both `detachedNodeDestroyed` and `willDestroyDOMNode`) would be odd.   If your goal is to avoid dispatching unnecessary events (e.g. for a node that is attached, this is probably redundant), I&apos;d rename it and then just add another sentence to the `&quot;description&quot;` explaining how right now this is only called for detached nodes, but I personally don&apos;t think it&apos;s a big deal.

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2493
&gt; +    ContainerNode* parent = node.parentNode();

`auto`

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2499
&gt; +        m_pendingNodeDestroyedIdentifiers.append(std::make_pair(parentId, nodeId));

NIT: I think you can just `{ parentId, nodeId }`

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2507
&gt; +    m_idToNode.remove(nodeId);
&gt; +    m_documentNodeToIdMap.remove(&amp;node);

When do we remove from `m_childrenRequested`?

What about `m_idToNodesMap` as well?

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js:186
&gt; +    detachedNodeDestroyed(nodeId)

Style: this should go in the `// DOMObserver` section since that&apos;s what calls this, probably right above `didAddEventListener` (nearest match in `DOM.json`)

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js:188
&gt; +        var node = this._idToDOMNode[nodeId];

`let`

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeUpdater.js:-106
&gt; -        this._recentlyDeletedNodes.set(event.data.node, {parent: event.data.parent});

nice job catching this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768765</commentid>
    <comment_count>8</comment_count>
      <attachid>431141</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-10 15:18:16 -0700</bug_when>
    <thetext>Created attachment 431141
Patch v2.0 - Revised node mapping strategy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768777</commentid>
    <comment_count>9</comment_count>
      <attachid>431141</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-10 15:42:02 -0700</bug_when>
    <thetext>Comment on attachment 431141
Patch v2.0 - Revised node mapping strategy

Missing an import in Node.cpp 😔 - new patch that should actually build in just a moment...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768790</commentid>
    <comment_count>10</comment_count>
      <attachid>431155</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-10 16:06:39 -0700</bug_when>
    <thetext>Created attachment 431155
Patch v2.1 - Add missing forward declaration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768792</commentid>
    <comment_count>11</comment_count>
      <attachid>431155</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-10 16:09:19 -0700</bug_when>
    <thetext>Comment on attachment 431155
Patch v2.1 - Add missing forward declaration

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

This is so awesome!!!  I&apos;ve been wanting to do something like this for a while now.  Not sure why I never have, but glad to see it finally happening :)

&gt; Source/WebCore/dom/Node.h:56
&gt; +class InspectorInstrumentation;

I think you actually need to actually add `#include &quot;InspectorInstrumentation.h&quot;` to `Node.cpp` 😅

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:384
&gt; +    auto id = m_nodeToId.get(node);

NIT: you could use `HashMap::ensure` to make this a little cleaner
```
    return m_nodeToId.ensure(node, [&amp;] {
        auto id = m_lastNodeId++;
        m_idToNode.set(id, node);
        return id;
    });
```

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:417
&gt; +    m_nodeToId.remove(node);

I&apos;d move this to be right next to `m_idToNode.remove(id)` (or vice versa) so that it&apos;s clear that operations to one are meant to happen to the other ASAP.

I wonder if it makes any difference where the `.remove(` are inside this function.  If not, I&apos;d suggest putting it at the very top so that it avoids reentrancy.

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2480
&gt; +    if (auto parentId = m_nodeToId.get(parent))

NIT: I&apos;d probably add a FIXME comment for &lt;https://webkit.org/b/189687&gt; in here somewhere as we&apos;d probably eventually want to unify `m_destroyedAttachedNodeIdentifiers` and `m_destroyedDetachedNodeIdentifiers`.

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.h:267
&gt; +    Vector&lt;std::pair&lt;Inspector::Protocol::DOM::NodeId, Inspector::Protocol::DOM::NodeId&gt;&gt; m_destroyedNodeIdentifiers;

i&apos;d rename this `m_destroyedAttachedNodeIdentifiers` so it&apos;s more clear how it&apos;s different from `m_destroyedDetachedNodeIdentifiers`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768863</commentid>
    <comment_count>12</comment_count>
      <attachid>431174</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-10 20:28:24 -0700</bug_when>
    <thetext>Created attachment 431174
Patch v2.2 - Review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769028</commentid>
    <comment_count>13</comment_count>
      <attachid>431219</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-11 12:27:45 -0700</bug_when>
    <thetext>Created attachment 431219
Patch v2.3 - Add valid key check to InspectorDOMAgent::boundNodeId</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769030</commentid>
    <comment_count>14</comment_count>
      <attachid>431219</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-11 12:36:51 -0700</bug_when>
    <thetext>Comment on attachment 431219
Patch v2.3 - Add valid key check to InspectorDOMAgent::boundNodeId

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

r=mews, awesome awesome awesome

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:382
&gt; +Protocol::DOM::NodeId InspectorDOMAgent::bind(Node* node)

NIT: I wonder if we should make this into `Node&amp;` while here so that we know for sure that `m_nodeToId.ensure` won&apos;t complain about an invalid key (e.g. not `nullptr`).  Alternatively you could check it just like `boundNodeId`.

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:391
&gt; +void InspectorDOMAgent::unbind(Node* node)

ditto (:382)

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2367
&gt; +    auto prevId = previousSibling ? boundNodeId(previousSibling) : 0;

you can drop the `previousSibling ? ` check now that `boundNodeId` does it for you

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2425
&gt;      if (!parent)

ditto (:2367)

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:2439
&gt; +        auto prevId = prevSibling ? boundNodeId(prevSibling) : 0;

ditto (:2367)

&gt; Source/WebCore/inspector/agents/page/PageConsoleAgent.cpp:56
&gt;  Protocol::ErrorStringOr&lt;void&gt; PageConsoleAgent::clearMessages()

you can just remove this function entirely now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769042</commentid>
    <comment_count>15</comment_count>
      <attachid>431225</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-06-11 13:02:14 -0700</bug_when>
    <thetext>Created attachment 431225
Patch v2.4 - Review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769098</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-11 15:37:47 -0700</bug_when>
    <thetext>Committed r278785 (238742@main): &lt;https://commits.webkit.org/238742@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431225.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430538</attachid>
            <date>2021-06-03 21:45:30 -0700</date>
            <delta_ts>2021-06-04 09:44:28 -0700</delta_ts>
            <desc>WIP v0.1 - Patch for EWS testing of base changes</desc>
            <filename>bug-226624-20210603214529.patch</filename>
            <type>text/plain</type>
            <size>2800</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYwZmIyZGZjYzJlMjRi
NTI1MjhmYTExZjE4ZDY2OTU1NzljNTUxNC4uYmY5ZWRiMDQzZWUzNzQ2MDBiNzJmNjJjZmIyZTVl
ZDUwNDJkZDRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTAzICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBV
c2UgV2Vha1B0ciBpbiBJbnNwZWN0b3JET01BZ2VudCBmb3IgbWFwcGluZyBub2RlcyB0byBJRHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YmluZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvcklkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisKIDIwMjEtMDYtMDEgIENh
bWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZHVw
bGljYXRlICJiZWhhdmlvciBmb3IgZml4ZWQiIGVudHJ5IGZyb20gc2Nyb2xsaW5nIHN0YXRlIHRy
ZWUgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBkNDYyZWZjMzA2YTI5OWI1OGU3OGM1ZDk0ZTZlODc1
N2UxNzM0ZDgyLi44ZDRkMTA5ODRjODgzNjE5YjQ3YWUxYjFiZGYyOGExYzI5OTdmN2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIFByb3RvY29sOjpET006Ok5vZGVJZCBJbnNwZWN0
b3JET01BZ2VudDo6YmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiAgICAg
ICAgIHJldHVybiBpZDsKICAgICBpZCA9IG1fbGFzdE5vZGVJZCsrOwogICAgIG5vZGVzTWFwLT5z
ZXQobm9kZSwgaWQpOwotICAgIG1faWRUb05vZGUuc2V0KGlkLCBub2RlKTsKKyAgICBtX2lkVG9O
b2RlLnNldChpZCwgbWFrZVdlYWtQdHIobm9kZSkpOwogICAgIG1faWRUb05vZGVzTWFwLnNldChp
ZCwgbm9kZXNNYXApOwogICAgIHJldHVybiBpZDsKIH0KQEAgLTU3NCw3ICs1NzQsMTEgQEAgTm9k
ZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChQcm90b2NvbDo6RE9NOjpOb2RlSWQgaWQp
CiAgICAgaWYgKCFtX2lkVG9Ob2RlLmlzVmFsaWRLZXkoaWQpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBtX2lkVG9Ob2RlLmdldChpZCk7CisgICAgaWYgKGF1dG8gbm9k
ZSA9IG1faWRUb05vZGUuZ2V0KGlkKSkKKyAgICAgICAgcmV0dXJuIG5vZGUuZ2V0KCk7CisKKyAg
ICBtX2lkVG9Ob2RlLnJlbW92ZShpZCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0Q2hpbGRO
b2RlcyhQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBzdGQ6Om9wdGlvbmFsPGludD4mJiBk
ZXB0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuaAppbmRleCA3NGE2MGY2MTgwOTI2NzZkOGJlZTg3NTM4YzlkNjk3ZjNjNTg0MzA0
Li4wMWZmZjQzMWI2MTU0MTBkYmZmOGNiMDUzOTMyYTMwNDNiY2Y2YzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0y
NTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICBOb2RlVG9JZE1hcCBtX2RvY3VtZW50Tm9kZVRv
SWRNYXA7CiAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBkYW5nbGluZyBub2Rlcy4KICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE5vZGVUb0lkTWFwPj4gbV9kYW5nbGluZ05vZGVUb0lk
TWFwczsKLSAgICBIYXNoTWFwPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBOb2Rl
Kj4gbV9pZFRvTm9kZTsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkLCBXZWFrUHRyPE5vZGU+PiBtX2lkVG9Ob2RlOwogICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CiAgICAg
SGFzaFNldDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gbV9jaGlsZHJlblJlcXVl
c3RlZDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBtX2xhc3ROb2RlSWQg
eyAxIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430586</attachid>
            <date>2021-06-04 09:44:30 -0700</date>
            <delta_ts>2021-06-04 22:09:25 -0700</delta_ts>
            <desc>WIP v0.2 - Patch for EWS testing</desc>
            <filename>bug-226624-20210604094429.patch</filename>
            <type>text/plain</type>
            <size>2935</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYwZmIyZGZjYzJlMjRi
NTI1MjhmYTExZjE4ZDY2OTU1NzljNTUxNC4uYmY5ZWRiMDQzZWUzNzQ2MDBiNzJmNjJjZmIyZTVl
ZDUwNDJkZDRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA2LTAzICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBV
c2UgV2Vha1B0ciBpbiBJbnNwZWN0b3JET01BZ2VudCBmb3IgbWFwcGluZyBub2RlcyB0byBJRHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YmluZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvcklkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisKIDIwMjEtMDYtMDEgIENh
bWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZHVw
bGljYXRlICJiZWhhdmlvciBmb3IgZml4ZWQiIGVudHJ5IGZyb20gc2Nyb2xsaW5nIHN0YXRlIHRy
ZWUgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBkNDYyZWZjMzA2YTI5OWI1OGU3OGM1ZDk0ZTZlODc1
N2UxNzM0ZDgyLi40NjdjM2Y3ZDU2NDkxNjRkOGYyNjUyZGVkOWU4YzUwYWY4NjkwMjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIFByb3RvY29sOjpET006Ok5vZGVJZCBJbnNwZWN0
b3JET01BZ2VudDo6YmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiAgICAg
ICAgIHJldHVybiBpZDsKICAgICBpZCA9IG1fbGFzdE5vZGVJZCsrOwogICAgIG5vZGVzTWFwLT5z
ZXQobm9kZSwgaWQpOwotICAgIG1faWRUb05vZGUuc2V0KGlkLCBub2RlKTsKKyAgICBtX2lkVG9O
b2RlLnNldChpZCwgbWFrZVdlYWtQdHIobm9kZSkpOwogICAgIG1faWRUb05vZGVzTWFwLnNldChp
ZCwgbm9kZXNNYXApOwogICAgIHJldHVybiBpZDsKIH0KQEAgLTU3NCw3ICs1NzQsMTUgQEAgTm9k
ZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChQcm90b2NvbDo6RE9NOjpOb2RlSWQgaWQp
CiAgICAgaWYgKCFtX2lkVG9Ob2RlLmlzVmFsaWRLZXkoaWQpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBtX2lkVG9Ob2RlLmdldChpZCk7CisgICAgYXV0byBub2RlID0g
bV9pZFRvTm9kZS5nZXQoaWQpOworCisgICAgQVNTRVJUKG5vZGUpOyAvLyBOb24tZXhpc3RhbnQg
bm9kZXMgc2hvdWxkIGhhdmUgYmVlbiBwcm9wZXJseSByZW1vdmVkIHZpYSBgSW5zcGVjdG9yRE9N
QWdlbnQ6OnVuYmluZGAuCisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIG1faWRUb05vZGUucmVt
b3ZlKGlkKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG5v
ZGUuZ2V0KCk7CiB9CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRP
TUFnZW50OjpyZXF1ZXN0Q2hpbGROb2RlcyhQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBz
dGQ6Om9wdGlvbmFsPGludD4mJiBkZXB0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA3NGE2MGY2MTgwOTI2NzZkOGJl
ZTg3NTM4YzlkNjk3ZjNjNTg0MzA0Li4wMWZmZjQzMWI2MTU0MTBkYmZmOGNiMDUzOTMyYTMwNDNi
Y2Y2YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICBOb2RlVG9J
ZE1hcCBtX2RvY3VtZW50Tm9kZVRvSWRNYXA7CiAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZv
ciBkYW5nbGluZyBub2Rlcy4KICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE5vZGVUb0lkTWFw
Pj4gbV9kYW5nbGluZ05vZGVUb0lkTWFwczsKLSAgICBIYXNoTWFwPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkLCBOb2RlKj4gbV9pZFRvTm9kZTsKKyAgICBIYXNoTWFwPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBXZWFrUHRyPE5vZGU+PiBtX2lkVG9Ob2RlOwogICAg
IEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE5vZGVUb0lkTWFwKj4g
bV9pZFRvTm9kZXNNYXA7CiAgICAgSGFzaFNldDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZD4gbV9jaGlsZHJlblJlcXVlc3RlZDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGVJZCBtX2xhc3ROb2RlSWQgeyAxIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430643</attachid>
            <date>2021-06-04 22:09:27 -0700</date>
            <delta_ts>2021-06-08 17:29:34 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-226624-20210604220926.patch</filename>
            <type>text/plain</type>
            <size>12949</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYwZmIyZGZjYzJlMjRi
NTI1MjhmYTExZjE4ZDY2OTU1NzljNTUxNC4uMWE0YmY1ZmEwZDA3OWExMzUxN2U1MTM2ODY1MmFh
OGVkMjIyN2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA2LTA0ICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgaW5zdHJ1bWVudGF0aW9uIHRvIG5vZGUgZGVzdHJ1Y3Rpb24gZm9yIEluc3BlY3RvckRPTUFn
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0
cnVtZW50IGRlc3RydWN0aW9uIG9mIGBOb2RlYHMgc28gd2UgY2FuIHJlbW92ZSB0aGVtIGZyb20g
b3VyIG1hcHBlZCBsaXN0IG9mIG5vZGVzIGFuZCBub3RpZnkgdGhlIGZyb250ZW5kCisgICAgICAg
IHRoYXQgdGhlIG5vZGUgbm8gbG9uZ2VyIGV4aXN0cy4gVGhpcyBpcyBhbiBpbml0aWFsIHN0ZXAg
aW4gaW1wbGVtZW50aW5nIDxodHRwczovL3dlYmtpdC5vcmcvYi8xODk2ODc+IChXZWIKKyAgICAg
ICAgSW5zcGVjdG9yOiBwcmVzZXJ2ZSBET00uTm9kZUlkIGlmIGEgbm9kZSBpcyByZW1vdmVkIGFu
ZCByZS1hZGRlZCkgdG8gZXZlbnR1YWxseSBvbmx5IGZvcmdldCBhYm91dCBub2RlcyB1cG9uCisg
ICAgICAgIGRlc3RydWN0aW9uLCBpbnN0ZWFkIG9mIHJlbW92YWwgZnJvbSB0aGUgRE9NIHRyZWUu
CisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9k
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5v
ZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lET01Ob2RlSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAgICAtIEFkZCBuZXcgaW5zdHJ1bWVudGF0aW9u
IHBvaW50IGZvciBhIE5vZGUgYmVpbmcgZGVzdHJveWVkLgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
d2lsbERlc3Ryb3lET01Ob2RlKToKKyAgICAgICAgLSBIYW5kbGUgZGVzdHJveWVkIGBOb2RlYHMg
aW4gYSAoY3VycmVudGx5KSBzaW1pbGFyIHdheSB0byBoYW5kbGluZyByZW1vdmVkIGBOb2RlYHMs
IGJ1dCBzZW5kIG1lc3NhZ2VzIGxhdGVyIHRvCisgICAgICAgIHByZXZlbnQgYWxsb2NhdGluZyBp
biB0aGUgZnJvbnRlbmQgZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbi4KKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpkZXN0cm95ZWROb2Rlc1RpbWVyRmlyZWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50
Lmg6CisKIDIwMjEtMDYtMDEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgZHVwbGljYXRlICJiZWhhdmlvciBmb3IgZml4ZWQiIGVudHJ5IGZy
b20gc2Nyb2xsaW5nIHN0YXRlIHRyZWUgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGZkYWJj
ZDNlN2I4OTJlNTAxZDg3OTQzMmFjNDZjM2Q3MTNmOGViMDAuLjE5ZDVhZDc4NWQ5MWI1NDg3MWVm
NDdjZTdhOTM4NGQzYTAzMmMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM0OSw2ICszNDksOCBA
QCBOb2RlOjp+Tm9kZSgpCiAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgQVNT
RVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxEZXN0cm95RE9NTm9kZSgqdGhpcyk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYg
KCFpZ25vcmVTZXQoKS5yZW1vdmUoKnRoaXMpKQogICAgICAgICBub2RlQ291bnRlci5kZWNyZW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKaW5kZXggMjE4Y2U0Yjk0N2M0MjU0N2VjNGY5Y2Y5ZTg1MTdhNWRjMzUy
YzRjNC4uZWM1ODE2MDcxODJhNWI5ZjU1ODBlMTNhNTRmZDBlZTFmN2I1ZjZlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKQEAgLTE3MCwxMiArMTcwLDIxIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1CiAKIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2RlKQogeworICAgIC8vIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzE4OTY4Nz4gUHJlc2VydmUgRE9NLk5vZGVJZCBpZiBhIG5vZGUg
aXMgcmVtb3ZlZCBhbmQgcmUtYWRkZWQKICAgICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgpKQot
ICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKKyAg
ICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPndpbGxEZXN0cm95RE9NTm9kZShub2RlKTsKICAg
ICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01B
Z2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgbm9kZSkKK3sKKyAg
ICBpZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVu
YWJsZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2Vu
dC0+d2lsbERlc3Ryb3lET01Ob2RlKG5vZGUpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50
LT53aWxsRGVzdHJveURPTU5vZGUobm9kZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpub2RlTGF5b3V0Q29udGV4dENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUsIFJlbmRlck9iamVjdCogbmV3UmVuZGVy
ZXIpCiB7CiAgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkQ1NTQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA4ZjA0MDQ0NGJiMTgzZDE2MmM2MGY2ZmQ0NzUyYmVj
ZDljZTZhYjk5Li5jZTEwMTE5Yzg2MWNhYjk1NGVlYzM3YzQ4ZTkxOTdjMzIzNDBjZmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEluc2Vy
dERPTU5vZGUoRG9jdW1lbnQmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURP
TU5vZGUoRG9jdW1lbnQmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9k
ZShEb2N1bWVudCYsIE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUo
Tm9kZSYpOwogICAgIHN0YXRpYyB2b2lkIG5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZChOb2RlJiwg
UmVuZGVyT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9jdW1l
bnQmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJp
bmcmIG5ld1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3VtZW50
JiwgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKTsKQEAgLTM1MCw2ICszNTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZElu
c2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CiAgICAgc3RhdGlj
IHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveURPTU5vZGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgbm9kZUxheW91dENvbnRl
eHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYsIFJlbmRlck9iamVjdCop
OwogICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3Ry
aW5nJiBuZXdWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSk7CkBAIC02MDEsNiArNjAzLDEzIEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZShEb2N1bWVudCYgZG9jdW1l
bnQsIE5vZGUmCiAgICAgICAgIGRpZFJlbW92ZURPTU5vZGVJbXBsKCphZ2VudHMsIG5vZGUpOwog
fQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9N
Tm9kZShOb2RlJiBub2RlKQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOworICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKG5vZGUuZG9j
dW1lbnQoKSkpCisgICAgICAgIHdpbGxEZXN0cm95RE9NTm9kZUltcGwoKmFnZW50cywgbm9kZSk7
Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENv
bnRleHRDaGFuZ2VkKE5vZGUmIG5vZGUsIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIpCiB7CiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQ0
NjJlZmMzMDZhMjk5YjU4ZTc4YzVkOTRlNmU4NzU3ZTE3MzRkODIuLjgwMDBlY2VkYzg4NmYwZjNl
MGM3ZWE3YWYyZDdiNTEwMDU1MzViMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yODksNiArMjg5LDcgQEAg
SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNv
bnRleHQsIEluc3BlY3Rvck92ZXJsYXkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkK
ICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQorICAgICwgbV9kZXN0cm95ZWROb2Rlc1RpbWVyKCp0
aGlzLCAmSW5zcGVjdG9yRE9NQWdlbnQ6OmRlc3Ryb3llZE5vZGVzVGltZXJGaXJlZCkKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgLCBtX21lZGlhTWV0cmljc1RpbWVyKCp0aGlzLCAmSW5zcGVjdG9y
RE9NQWdlbnQ6Om1lZGlhTWV0cmljc1RpbWVyRmlyZWQpCiAjZW5kaWYKQEAgLTM1NCw2ICszNTUs
MTEgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQoKQogICAgIGlmIChtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrKQogICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5yZXNl
dCgpOwogICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOworCisgICAgbV9jaGlsZE5vZGVDb3VudFVw
ZGF0ZWRJZGVudGlmaWVycy5jbGVhcigpOworICAgIG1fY2hpbGROb2RlUmVtb3ZlZElkZW50aWZp
ZXJzLmNsZWFyKCk7CisgICAgaWYgKG1fZGVzdHJveWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX2Rlc3Ryb3llZE5vZGVzVGltZXIuc3RvcCgpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yNDY1LDYgKzI0
NzEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUmIG5v
ZGUpCiAKICAgICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwYXJl
bnQpOwogCisgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMTg5Njg3PiBQcmVzZXJ2ZSBET00u
Tm9kZUlkIGlmIGEgbm9kZSBpcyByZW1vdmVkIGFuZCByZS1hZGRlZAogICAgIGlmICghbV9jaGls
ZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKICAgICAgICAgLy8gTm8gY2hpbGRy
ZW4gYXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24gY2hhbmdlcyBvZiBoYXNDaGlsZHJl
bi4KICAgICAgICAgaWYgKGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSA9PSAxKQpAQCAtMjQ3
NCw2ICsyNDgxLDQ2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUo
Tm9kZSYgbm9kZSkKICAgICB1bmJpbmQoJm5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwog
fQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYgbm9k
ZSkKK3sKKyAgICBpZiAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoJm5vZGUpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUo
KTsKKworICAgIC8vIElmIHBhcmVudCBpcyBub3QgbWFwcGVkIHlldC9hbnltb3JlIC0+IGlnbm9y
ZSB0aGUgZXZlbnQuCisgICAgaWYgKCFtX2RvY3VtZW50Tm9kZVRvSWRNYXAuY29udGFpbnMocGFy
ZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBwYXJlbnRJZCA9IG1fZG9jdW1lbnRO
b2RlVG9JZE1hcC5nZXQocGFyZW50KTsKKworICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5j
b250YWlucyhwYXJlbnRJZCkpIHsKKyAgICAgICAgLy8gTm8gY2hpbGRyZW4gYXJlIG1hcHBlZCB5
ZXQgLT4gb25seSBub3RpZnkgb24gY2hhbmdlcyBvZiBoYXNDaGlsZHJlbi4KKyAgICAgICAgaWYg
KGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSA9PSAxKQorICAgICAgICAgICAgbV9jaGlsZE5v
ZGVDb3VudFVwZGF0ZWRJZGVudGlmaWVycy5hcHBlbmQocGFyZW50SWQpOworICAgIH0gZWxzZQor
ICAgICAgICBtX2NoaWxkTm9kZVJlbW92ZWRJZGVudGlmaWVycy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIocGFyZW50SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJm5vZGUpKSk7CisKKyAgICAv
LyBUaGlzIGNhbiBiZSBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gR0MuIER1ZSB0byB0aGUgc2luZ2xl
LXByb2Nlc3MgbW9kZWwgdXNlZCBpbiBXZWJLaXQxLCB0aGUKKyAgICAvLyBldmVudCBtdXN0IGJl
IGRpc3BhdGNoZWQgZnJvbSBhIHRpbWVyIHRvIHByZXZlbnQgdGhlIGZyb250ZW5kIGZyb20gbWFr
aW5nIEpTIGFsbG9jYXRpb25zCisgICAgLy8gd2hpbGUgdGhlIEdDIGlzIHN0aWxsIGFjdGl2ZS4K
KyAgICBpZiAoIW1fZGVzdHJveWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2Rl
c3Ryb3llZE5vZGVzVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKKyAgICB1bmJpbmQoJm5vZGUs
ICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpk
ZXN0cm95ZWROb2Rlc1RpbWVyRmlyZWQoKQoreworICAgIGZvciAoYXV0byBwYXJlbnRJRCA6IG1f
Y2hpbGROb2RlQ291bnRVcGRhdGVkSWRlbnRpZmllcnMpCisgICAgICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5jaGlsZE5vZGVDb3VudFVwZGF0ZWQocGFyZW50SUQsIDApOworICAgIG1fY2hpbGRO
b2RlQ291bnRVcGRhdGVkSWRlbnRpZmllcnMuY2xlYXIoKTsKKworICAgIGZvciAoYXV0byBwYWly
IDogbV9jaGlsZE5vZGVSZW1vdmVkSWRlbnRpZmllcnMpCisgICAgICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKyAgICBt
X2NoaWxkTm9kZVJlbW92ZWRJZGVudGlmaWVycy5jbGVhcigpOworfQorCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIG1fc3VwcHJlc3NB
dHRyaWJ1dGVNb2RpZmllZEV2ZW50ID0gKG9sZFZhbHVlID09IG5ld1ZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRl
eCA3NGE2MGY2MTgwOTI2NzZkOGJlZTg3NTM4YzlkNjk3ZjNjNTg0MzA0Li40YThiMjM1MTE5MmY0
NDk5NzI5NzZhNjc4YmY5NGFlNDVlYzBkZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xNTksNiArMTU5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcnNUb05vZGUoTm9kZSYpOwogICAgIHZv
aWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5v
ZGUmKTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCB3aWxs
TW9kaWZ5RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0
IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKICAgICB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVu
dCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKICAg
ICB2b2lkIGRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUp
OwpAQCAtMjQyLDYgKzI0Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlubmVySGlnaGxpZ2h0
UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBj
b2xvciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogCisgICAgdm9pZCBkZXN0cm95ZWROb2Rlc1Rp
bWVyRmlyZWQoKTsKKwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01G
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwpAQCAtMjY1
LDYgKzI2OCwxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JIaXN0
b3J5PiBtX2hpc3Rvcnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTUVkaXRvcj4gbV9kb21FZGl0
b3I7CiAKKyAgICBWZWN0b3I8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IG1fY2hp
bGROb2RlQ291bnRVcGRhdGVkSWRlbnRpZmllcnM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlSWQ+PiBtX2NoaWxkTm9kZVJlbW92ZWRJZGVudGlmaWVyczsKKyAgICBUaW1lciBtX2Rlc3Ry
b3llZE5vZGVzVGltZXI7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgVGltZXIgbV9tZWRpYU1l
dHJpY3NUaW1lcjsKICAgICBzdHJ1Y3QgTWVkaWFNZXRyaWNzIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IDZjMjA3MmM0Mjk5NGNlN2VlMjQ1ZjcwODYzMWE2Y2M4M2RmNzFhNWUuLjdj
MGM2MjNkYzc3MjE5MTM4YmE0MjI3OTAxMDdiZWIyMGI5Zjg4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6
OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpE
T00sIFdURk1vdmUocGF1c2VEYXRhKSwgV1RGTW92ZShjbG9zZXN0QnJlYWtwb2ludCkpOwogfQog
Ci12b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUp
Cit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYgbm9k
ZSkKIHsKICAgICBhdXRvIG5vZGVDb250YWluc0JyZWFrcG9pbnRPd25lciA9IFsmXSAoYXV0byYg
ZW50cnkpIHsKICAgICAgICAgcmV0dXJuIG5vZGUuY29udGFpbnMoZW50cnkua2V5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01E
ZWJ1Z2dlckFnZW50LmgKaW5kZXggZDg3MjgyOTI1ZWM2OTMxMGUwYmMwZTc4ODNjZGNhNTA4ZDEw
MzUyMi4uNjIzNjBkZThjNGNlZjVhMTFkOTA4MDY2YjA4Mzc5NzQ0YjIwM2EyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01E
ZWJ1Z2dlckFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZnJhbWVE
b2N1bWVudFVwZGF0ZWQoRnJhbWUmKTsKICAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUm
IHBhcmVudCk7CiAgICAgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShOb2RlJik7Ci0gICAgdm9pZCBk
aWRSZW1vdmVET01Ob2RlKE5vZGUmKTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RE9NTm9kZShOb2Rl
Jik7CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxs
SW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlv
bkZyYW1lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430922</attachid>
            <date>2021-06-08 17:29:36 -0700</date>
            <delta_ts>2021-06-10 15:18:13 -0700</delta_ts>
            <desc>WIP v1.1 - First pass of review notes for EWS testing</desc>
            <filename>bug-226624-20210608172935.patch</filename>
            <type>text/plain</type>
            <size>18350</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi45NThiMDdkODgwMWJiNjQ3
ZDA0MzMyOTE5MDVkODA3MjUwYzQ5ZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNi0wOCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluc3BlY3RvciBwcm90b2NvbCBldmVudCBmb3Ig
ZGV0YWNoZWQgRE9NIG5vZGVzIGJlaW5nIGRlc3Ryb3llZC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9ET00uanNvbjoKKwogMjAyMS0wNi0wMSAgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
byAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gU3VwcG9ydCBidWls
ZGluZyBhZ2FpbnN0IHVDbGliYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2MGZiMmRmY2MyZTI0YjUyNTI4ZmEx
MWYxOGQ2Njk1NTc5YzU1MTQuLjU4ODM5MzljMDYxM2VkM2E3MjI4YmViYWU1MDgzNzAwNDJjZWY3
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wNi0wOCAgUGF0cmljayBBbmds
ZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3Ry
dW1lbnRhdGlvbiB0byBub2RlIGRlc3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdHJ1bWVudCBk
ZXN0cnVjdGlvbiBvZiBgTm9kZWBzIHNvIHdlIGNhbiByZW1vdmUgdGhlbSBmcm9tIG91ciBtYXBw
ZWQgbGlzdCBvZiBub2RlcyBhbmQgbm90aWZ5IHRoZSBmcm9udGVuZAorICAgICAgICB0aGF0IHRo
ZSBub2RlIG5vIGxvbmdlciBleGlzdHMuIFRoaXMgaXMgYW4gaW5pdGlhbCBzdGVwIGluIGltcGxl
bWVudGluZyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg5Njg3PiAoV2ViCisgICAgICAgIEluc3Bl
Y3RvcjogcHJlc2VydmUgRE9NLk5vZGVJZCBpZiBhIG5vZGUgaXMgcmVtb3ZlZCBhbmQgcmUtYWRk
ZWQpIHRvIGV2ZW50dWFsbHkgb25seSBmb3JnZXQgYWJvdXQgbm9kZXMgdXBvbgorICAgICAgICBk
ZXN0cnVjdGlvbiwgaW5zdGVhZCBvZiByZW1vdmFsIGZyb20gdGhlIERPTSB0cmVlLgorCisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveURPTU5vZGVJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9k
ZSk6CisgICAgICAgIC0gQWRkIGluc3RydW1lbnRhdGlvbiB0byBkZXN0cnVjdGlvbiBvZiBhIE5v
ZGUuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRlc3Ryb3llZE5vZGVzVGltZXJGaXJlZCk6CisgICAgICAg
IC0gSGFuZGxlIGRlc3RydWN0aW9uIG9mIGF0dGFjaGVkIGFuZCBkZXRhY2hlZCBub2RlcyBieSBy
ZW1vdmluZyBhbnkgcmVmZXJlbmNlcyB3ZSBtYXkgaGF2ZSBhbmQgaW5mb3JtaW5nIHRoZQorICAg
ICAgICBmcm9udGVuZCBhcHByb3ByaWF0ZWx5LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2Vy
QWdlbnQ6OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50Lmg6CisKIDIwMjEtMDYtMDEgIENhbWVyb24gTWNDb3Jt
YWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZHVwbGljYXRlICJiZWhh
dmlvciBmb3IgZml4ZWQiIGVudHJ5IGZyb20gc2Nyb2xsaW5nIHN0YXRlIHRyZWUgbG9nZ2luZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggM2M2MTc3MzEyZWY2OTZmYjYyYmE4OTI4YjFmNGY0
Y2Y4MTM0ZGNjMC4uZmNlYjViOTA3Mzk4ZDNmOTdiYzI2NWYyMTllYWI5ZmNiZjU1Y2E5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDYtMDggIFBhdHJp
Y2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBpbnN0cnVtZW50YXRpb24gdG8gbm9kZSBkZXN0cnVjdGlvbiBmb3IgSW5zcGVjdG9yRE9NQWdl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYy
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBo
YW5kbGluZyBmb3IgZGVzdHJ1Y3Rpb24gb2YgZGV0YWNoZWQgRE9NIG5vZGVzLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
RE9NTWFuYWdlci5wcm90b3R5cGUuZGV0YWNoZWROb2RlRGVzdHJveWVkKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzOgorICAgICAgICAoV0kuRE9NT2Jz
ZXJ2ZXIucHJvdG90eXBlLmRldGFjaGVkTm9kZURlc3Ryb3llZCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVVcGRh
dGVyLnByb3RvdHlwZS5fbm9kZVJlbW92ZWQpOgorICAgICAgICAtIElnbm9yZSBldmVudHMgZm9y
IGRldGFjaGVkIG5vZGVzIGJlaW5nIHJlbW92ZWQsIGFzIHRoZXkgZG8gbm90IGhhdmUgYSBwYXJl
bnQgbm9kZS4KKwogMjAyMS0wNS0xNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNyZWF0ZUNv
bmljR3JhZGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0RPTS5qc29uCmluZGV4IDE2MjBjMDAzZjA3NmVlZTMxZGRjOGJlNjlhODRlNDk5NTI5OTg5
MmEuLjhjNDVjMmMzMmI0M2JmYTA0NTI3ZTVhMDI1YTZmYmFkZmJjZjVlMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtNjc4
LDYgKzY3OCwxMyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYi
OiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRoYXQgaGFzIGJlZW4g
cmVtb3ZlZC4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAiZGV0YWNoZWROb2RlRGVzdHJveWVkIiwKKyAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJGaXJlZCB3aGVuIGEgZGV0YWNoZWQgRE9NIG5vZGUgaXMgZGVzdHJveWVkLiIs
CisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9k
ZSB0aGF0IGhhcyBiZWVuIGRlc3Ryb3llZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwK
ICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAic2hhZG93Um9vdFB1c2hlZCIsCiAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FsbGVkIHdoZW4gc2hhZG93IHJvb3QgaXMgcHVzaGVk
IGludG8gdGhlIGVsZW1lbnQuIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZGFiY2QzZTdiODkyZTUw
MWQ4Nzk0MzJhYzQ2YzNkNzEzZjhlYjAwLi4xOWQ1YWQ3ODVkOTFiNTQ4NzFlZjQ3Y2U3YTkzODRk
M2EwMzJjM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zNDksNiArMzQ5LDggQEAgTm9kZTo6fk5v
ZGUoKQogICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFTU0VSVCghbV9hZG9w
dGlvbklzUmVxdWlyZWQpOwogCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVz
dHJveURPTU5vZGUoKnRoaXMpOworCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmICghaWdub3JlU2V0
KCkucmVtb3ZlKCp0aGlzKSkKICAgICAgICAgbm9kZUNvdW50ZXIuZGVjcmVtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IDIxOGNlNGI5NDdjNDI1NDdlYzRmOWNmOWU4NTE3YTVkYzM1MmM0YzQuLmE2MGQ0
NjQzNDRmZDkwMTQwMjg4YTBhY2NlNWIzOWIxMTE0NDE0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xNzYs
NiArMTc2LDE0IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01O
b2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIGRvbUFnZW50LT5k
aWRSZW1vdmVET01Ob2RlKG5vZGUpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERlc3Ryb3lET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBOb2RlJiBub2RlKQoreworICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KCkp
CisgICAgICAgIHBhZ2VET01EZWJ1Z2dlckFnZW50LT53aWxsRGVzdHJveURPTU5vZGUobm9kZSk7
CisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50
RE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPndpbGxEZXN0cm95RE9NTm9kZShub2RlKTsK
K30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5vZGVMYXlvdXRDb250ZXh0Q2hh
bmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYg
bm9kZSwgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlcikKIHsKICAgICBpZiAoYXV0byogY3NzQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhm
MDQwNDQ0YmIxODNkMTYyYzYwZjZmZDQ3NTJiZWNkOWNlNmFiOTkuLmNlMTAxMTljODYxY2FiOTU0
ZWVjMzdjNDhlOTE5N2MzMjM0MGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShEb2N1bWVudCYsIE5vZGUmKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShEb2N1bWVudCYsIE5vZGUmKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVET01Ob2RlKERvY3VtZW50JiwgTm9kZSYpOworICAgIHN0
YXRpYyB2b2lkIHdpbGxEZXN0cm95RE9NTm9kZShOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgbm9k
ZUxheW91dENvbnRleHRDaGFuZ2VkKE5vZGUmLCBSZW5kZXJPYmplY3QqKTsKICAgICBzdGF0aWMg
dm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihEb2N1bWVudCYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpOwogICAgIHN0YXRpYyB2
b2lkIGRpZE1vZGlmeURPTUF0dHIoRG9jdW1lbnQmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpOwpAQCAtMzUwLDYgKzM1MSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIE5vZGUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIE5vZGUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVE
T01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOworICAgIHN0YXRpYyB2b2lk
IHdpbGxEZXN0cm95RE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIE5vZGUmKTsKICAg
ICBzdGF0aWMgdm9pZCBub2RlTGF5b3V0Q29udGV4dENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBOb2RlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlm
eURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKQEAgLTYw
MSw2ICs2MDMsMTMgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVET01Ob2RlKERvY3VtZW50JiBkb2N1bWVudCwgTm9kZSYKICAgICAgICAgZGlkUmVtb3Zl
RE9NTm9kZUltcGwoKmFnZW50cywgbm9kZSk7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmIG5vZGUpCit7CisgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKGF1dG8qIGFnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHMobm9kZS5kb2N1bWVudCgpKSkKKyAgICAgICAgd2lsbERlc3Ry
b3lET01Ob2RlSW1wbCgqYWdlbnRzLCBub2RlKTsKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpub2RlTGF5b3V0Q29udGV4dENoYW5nZWQoTm9kZSYgbm9kZSwgUmVu
ZGVyT2JqZWN0KiBuZXdSZW5kZXJlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVO
RFModm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMDRjMTc1NzJmZjY1NmYyMjJhMTMxZTgwYTk3MzEz
ZWRiNTMyMWY0ZS4uNmFmYjJhMWEyMjQ2MmM4ZDY0NTAyZWNiZmVhMzU0N2ExNjVkZDJjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTExNjAsNiArMTE2MCw3IEBAIFJlZlB0cjxQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlCiAK
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSwgUHJv
dG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCkKIHsKKyAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQg
aW4gcmVzcG9uc2UgdG8gR0MuCiAgICAgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLnJlbW92
ZShub2RlSWQpOwogCiAgICAgYXV0byBzaGVldCA9IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVl
dC50YWtlKCZub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZDQ2MmVmYzMwNmEyOTliNThlNzhjNWQ5NGU2
ZTg3NTdlMTczNGQ4Mi4uM2Q5OTRkNDg3MWJjY2VkNDc2NzAyNzQyYjIzNDQ2NGQwNjBmYjhlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVj
dG9yRE9NQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yT3ZlcmxheQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3Bl
Y3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkp
CisgICAgLCBtX2Rlc3Ryb3llZE5vZGVzVGltZXIoKnRoaXMsICZJbnNwZWN0b3JET01BZ2VudDo6
ZGVzdHJveWVkTm9kZXNUaW1lckZpcmVkKQogI2lmIEVOQUJMRShWSURFTykKICAgICAsIG1fbWVk
aWFNZXRyaWNzVGltZXIoKnRoaXMsICZJbnNwZWN0b3JET01BZ2VudDo6bWVkaWFNZXRyaWNzVGlt
ZXJGaXJlZCkKICNlbmRpZgpAQCAtMzU0LDYgKzM1NSwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpyZXNldCgpCiAgICAgaWYgKG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2spCiAgICAgICAg
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnJlc2V0KCk7CiAgICAgbV9kb2N1bWVudCA9IG51
bGxwdHI7CisKKyAgICBtX3BlbmRpbmdEZXRhY2hlZE5vZGVEZXN0cm95ZWRJZGVudGlmaWVycy5j
bGVhcigpOworICAgIG1fcGVuZGluZ05vZGVEZXN0cm95ZWRJZGVudGlmaWVycy5jbGVhcigpOwor
ICAgIGlmIChtX2Rlc3Ryb3llZE5vZGVzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9kZXN0
cm95ZWROb2Rlc1RpbWVyLnN0b3AoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0
RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjQ2NSw2ICsyNDcxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogCiAgICAgYXV0
byBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKIAorICAgIC8v
IEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE4OTY4Nz4gUHJlc2VydmUgRE9NLk5vZGVJZCBpZiBhIG5v
ZGUgaXMgcmVtb3ZlZCBhbmQgcmUtYWRkZWQKICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQu
Y29udGFpbnMocGFyZW50SWQpKSB7CiAgICAgICAgIC8vIE5vIGNoaWxkcmVuIGFyZSBtYXBwZWQg
eWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4uCiAgICAgICAgIGlm
IChpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKQEAgLTI0NzQsNiArMjQ4MSw1MCBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAg
ICAgdW5iaW5kKCZub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKIH0KIAordm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmIG5vZGUpCit7CisgICAgaWYg
KGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKCZub2RlKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBub2RlSWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZub2RlKTsKKyAgICBp
ZiAoIW5vZGVJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50
ID0gbm9kZS5wYXJlbnROb2RlKCk7CisKKyAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgaW4gcmVz
cG9uc2UgdG8gR0MuIER1ZSB0byB0aGUgc2luZ2xlLXByb2Nlc3MgbW9kZWwgdXNlZCBpbiBXZWJL
aXQxLCB0aGUKKyAgICAvLyBldmVudCBtdXN0IGJlIGRpc3BhdGNoZWQgZnJvbSBhIHRpbWVyIHRv
IHByZXZlbnQgdGhlIGZyb250ZW5kIGZyb20gbWFraW5nIEpTIGFsbG9jYXRpb25zCisgICAgLy8g
d2hpbGUgdGhlIEdDIGlzIHN0aWxsIGFjdGl2ZS4KKyAgICBpZiAoYXV0byBwYXJlbnRJZCA9IG1f
ZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KSkKKyAgICAgICAgbV9wZW5kaW5nTm9kZURl
c3Ryb3llZElkZW50aWZpZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihwYXJlbnRJZCwgbm9kZUlk
KSk7CisgICAgZWxzZQorICAgICAgICBtX3BlbmRpbmdEZXRhY2hlZE5vZGVEZXN0cm95ZWRJZGVu
dGlmaWVycy5hcHBlbmQobm9kZUlkKTsKKworICAgIGlmICghbV9kZXN0cm95ZWROb2Rlc1RpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fZGVzdHJveWVkTm9kZXNUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKKworICAgIG1faWRUb05vZGUucmVtb3ZlKG5vZGVJZCk7CisgICAgbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLnJlbW92ZSgmbm9kZSk7CisKKyAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5k
aWRSZW1vdmVET01Ob2RlKG5vZGUsIG5vZGVJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmRlc3Ryb3llZE5vZGVzVGltZXJGaXJlZCgpCit7CisgICAgZm9yIChhdXRvJiBbcGFyZW50
SWQsIG5vZGVJZF0gOiBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ05vZGVEZXN0cm95ZWRJZGVudGlm
aWVycywgeyB9KSkgeworICAgICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMo
cGFyZW50SWQpKSB7CisgICAgICAgICAgICBhdXRvKiBwYXJlbnQgPSBub2RlRm9ySWQocGFyZW50
SWQpOworICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVu
dCkgPT0gMSkKKyAgICAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2Rl
Q291bnRVcGRhdGVkKHBhcmVudElkLCAwKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgbm9kZUlkKTsK
KyAgICB9CisgICAgCisgICAgZm9yIChhdXRvIG5vZGVJZCA6IHN0ZDo6ZXhjaGFuZ2UobV9wZW5k
aW5nRGV0YWNoZWROb2RlRGVzdHJveWVkSWRlbnRpZmllcnMsIHsgfSkpCisgICAgICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kZXRhY2hlZE5vZGVEZXN0cm95ZWQobm9kZUlkKTsKK30KKwogdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0
b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBt
X3N1cHByZXNzQXR0cmlidXRlTW9kaWZpZWRFdmVudCA9IChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmgKaW5kZXggNzRhNjBmNjE4MDkyNjc2ZDhiZWU4NzUzOGM5ZDY5N2YzYzU4NDMwNC4uMWFj
NDQxYTYyZWM4MzFkN2U2NDI5ZDIyN2EyOTRmMzY4ODQ3MGI5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTU5LDYg
KzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJzVG9Ob2RlKE5vZGUm
KTsKICAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQgZGlkUmVtb3Zl
RE9NTm9kZShOb2RlJik7CisgICAgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYpOwogICAg
IHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7CiAgICAgdm9pZCBkaWRNb2RpZnlET01B
dHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSk7CiAgICAgdm9pZCBkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKTsKQEAgLTI0Miw2ICsyNDMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbm5l
ckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAorICAgIHZvaWQgZGVzdHJv
eWVkTm9kZXNUaW1lckZpcmVkKCk7CisKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFu
YWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKQEAgLTI2NSw2ICsyNjgsMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01FZGl0b3I+
IG1fZG9tRWRpdG9yOwogCisgICAgVmVjdG9yPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkPiBtX3BlbmRpbmdEZXRhY2hlZE5vZGVEZXN0cm95ZWRJZGVudGlmaWVyczsKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGVJZD4+IG1fcGVuZGluZ05vZGVEZXN0cm95ZWRJZGVudGlmaWVy
czsKKyAgICBUaW1lciBtX2Rlc3Ryb3llZE5vZGVzVGltZXI7CisKICNpZiBFTkFCTEUoVklERU8p
CiAgICAgVGltZXIgbV9tZWRpYU1ldHJpY3NUaW1lcjsKICAgICBzdHJ1Y3QgTWVkaWFNZXRyaWNz
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDZjMjA3MmM0Mjk5NGNlN2VlMjQ1Zjcw
ODYzMWE2Y2M4M2RmNzFhNWUuLjEwNGFkYTg4MTVkNDkxNWNiYzI5NjgwYzViMjNlN2E2ZTJkNzhj
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMjc3LDYgKzI3NywxMyBAQCB2b2lk
IFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAg
bV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLnJlbW92ZUlmKG5vZGVDb250YWluc0JyZWFrcG9p
bnRPd25lcik7CiB9CiAKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RE9N
Tm9kZShOb2RlJiBub2RlKQoreworICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBpbiByZXNwb25z
ZSB0byBHQy4KKyAgICAvLyBET00gTm9kZSBkZXN0cnVjdGlvbiBzaG91bGQgYmUgdHJlYXRlZCBh
cyBpZiB0aGUgbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4KKyAgICBkaWRSZW1v
dmVET01Ob2RlKG5vZGUpOworfQorCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsTW9k
aWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50
LT5icmVha3BvaW50c0FjdGl2ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBkODcyODI5
MjVlYzY5MzEwZTBiYzBlNzg4M2NkY2E1MDhkMTAzNTIyLi5iODFiNWIzMTVkNzZjY2U2MmIzZGU0
MWY3M2I1Y2FmNTM4MmNjYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaApAQCAtNTMsNiArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpOwog
ICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQgZGlkUmVtb3ZlRE9N
Tm9kZShOb2RlJik7CisgICAgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYpOwogICAgIHZv
aWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYpOwogICAgIHZvaWQgd2lsbEludmFsaWRhdGVT
dHlsZUF0dHIoRWxlbWVudCYpOwogICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRE9NTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKaW5kZXggNzBiOGZkODlhMDBiOGFmOTAyZjE5NjJiM2Mx
ZGMzZDQ3ZTY1YWJjNi4uYTM3Yzc0ZTI4ZTZjMjczMzdkOGFjYTdkYWJlNjdjMjhjMmMwM2ZhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRE9NTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCkBAIC0xODMsNiArMTgzLDE1IEBAIFdJLkRPTU1h
bmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0sIGNh
bGxiYWNrKTsKICAgICB9CiAKKyAgICBkZXRhY2hlZE5vZGVEZXN0cm95ZWQobm9kZUlkKQorICAg
IHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOworICAgICAg
ICBub2RlLm1hcmtEZXN0cm95ZWQoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2lkVG9ET01Ob2Rl
W25vZGVJZF07CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
TWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwge25vZGV9KTsKKyAgICB9CisKICAgICAvLyBET01P
YnNlcnZlcgogCiAgICAgZGlkQWRkRXZlbnRMaXN0ZW5lcihub2RlSWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2Vy
dmVyLmpzCmluZGV4IDY0ZjlhMTJjNjNjZDFhNDBhODBkMjNmYzI3NzZmOThhNGJiMDM0NmUuLmRh
MTBhNTBiODZhMWY2N2I5NThmMzdmMjI5M2NjYTJhMmJhY2Y3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2Vy
dmVyLmpzCkBAIC03Nyw2ICs3NywxMSBAQCBXSS5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2Vy
dmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAgICAgICAgIFdJLmRvbU1h
bmFnZXIuX2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwogICAgIH0KIAor
ICAgIGRldGFjaGVkTm9kZURlc3Ryb3llZChub2RlSWQpCisgICAgeworICAgICAgICBXSS5kb21N
YW5hZ2VyLmRldGFjaGVkTm9kZURlc3Ryb3llZChub2RlSWQpOworICAgIH0KKwogICAgIHNoYWRv
d1Jvb3RQdXNoZWQoaG9zdElkLCByb290KQogICAgIHsKICAgICAgICAgV0kuZG9tTWFuYWdlci5f
Y2hpbGROb2RlSW5zZXJ0ZWQoaG9zdElkLCAwLCByb290KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMK
aW5kZXggMTBmOTIyOTBmMWUxNmE1ODljZTRhN2M4YmU0M2U5OWQyZTg2ZDRkOC4uNmMwYWU4YTE2
Zjk0MzZlYzZiMmVmYmZmMmFiNDgyOGIzMjFiODFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMK
QEAgLTEwMyw3ICsxMDMsMTEgQEAgV0kuRE9NVHJlZVVwZGF0ZXIucHJvdG90eXBlID0gewogCiAg
ICAgX25vZGVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Jl
Y2VudGx5RGVsZXRlZE5vZGVzLnNldChldmVudC5kYXRhLm5vZGUsIHtwYXJlbnQ6IGV2ZW50LmRh
dGEucGFyZW50fSk7CisgICAgICAgIGxldCBwYXJlbnQgPSBldmVudC5kYXRhLnBhcmVudDsKKyAg
ICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
cmVjZW50bHlEZWxldGVkTm9kZXMuc2V0KGV2ZW50LmRhdGEubm9kZSwge3BhcmVudH0pOwogICAg
ICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91
cGRhdGVNb2RpZmllZE5vZGVzRGVib3VuY2VyLmRlbGF5Rm9yRnJhbWUoKTsKICAgICB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431141</attachid>
            <date>2021-06-10 15:18:16 -0700</date>
            <delta_ts>2021-06-10 16:14:51 -0700</delta_ts>
            <desc>Patch v2.0 - Revised node mapping strategy</desc>
            <filename>bug-226624-20210610151815.patch</filename>
            <type>text/plain</type>
            <size>46829</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi5jMzUzZGU3OGY5NzU1NGMz
Njg4NTY2ODhiMGE3NTM1NjQwZmJmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBgRE9NLndpbGxEZXN0cm95RE9NTm9kZWAg
ZXZlbnQgdG8gaW5mb3JtIHRoZSBmcm9udGVuZCBvZiBET00gbm9kZXMgdGhhdCBubyBsb25nZXIg
ZXhpc3QsIGV2ZW4gaWYgdGhleQorICAgICAgICB3ZXJlbid0IGluIHRoZSBET00gdHJlZS4gVGhp
cyB3b3JrIHNlcnZlcyBhcyBhIHByZWx1ZGUgdG8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTY4
Nz4gKFdlYiBJbnNwZWN0b3I6IHByZXNlcnZlCisgICAgICAgIERPTS5Ob2RlSWQgaWYgYSBub2Rl
IGlzIHJlbW92ZWQgYW5kIHJlLWFkZGVkKSB0byBldmVudHVhbGx5IG9ubHkgZm9yZ2V0IGFib3V0
IG5vZGVzIHVwb24gZGVzdHJ1Y3Rpb24sIGluc3RlYWQgb2YKKyAgICAgICAgcmVtb3ZhbCBmcm9t
IHRoZSBET00gdHJlZS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoK
KwogMjAyMS0wNi0wMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXUEVdW0dUS10gU3VwcG9ydCBidWlsZGluZyBhZ2FpbnN0IHVDbGliYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDk2MGZiMmRmY2MyZTI0YjUyNTI4ZmExMWYxOGQ2Njk1NTc5YzU1MTQuLjAx
Y2MyOWQ1ODBkNzdjNmY4OGM5ZGI3ZTdjNzMyZGRhN2FmMjhlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURP
TU5vZGUuaHRtbAorCisgICAgICAgIEFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGRlc3RydWN0aW9u
IG9mIG5vZGVzIGluIG9yZGVyIHRvIGNlYXNlIGluc3RydW1lbnRpbmcgbm9kZXMgYW5kIGluZm9y
bSB0aGUgZnJvbnRlbmQgdGhhdAorICAgICAgICB0aGUgbm9kZSBubyBsb25nZXIgZXhpc3RzLiBU
aGlzIHdvcmsgc2VydmVzIGFzIGEgcHJlbHVkZSB0byA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg5
Njg3PiAoV2ViIEluc3BlY3RvcjoKKyAgICAgICAgcHJlc2VydmUgRE9NLk5vZGVJZCBpZiBhIG5v
ZGUgaXMgcmVtb3ZlZCBhbmQgcmUtYWRkZWQpIHRvIGV2ZW50dWFsbHkgb25seSBmb3JnZXQgYWJv
dXQgbm9kZXMgdXBvbiBkZXN0cnVjdGlvbiwKKyAgICAgICAgaW5zdGVhZCBvZiByZW1vdmFsIGZy
b20gdGhlIERPTSB0cmVlLiBBZGRpdGlvbmFsbHksIHRoZSBzdG9yYWdlIG9mIG5vZGVzIGlzIHNp
bXBsaWZpZWQgZG93biB0byB0d28gaW52ZXJzZSBtYXBzLAorICAgICAgICBvbmUgdGhhdCBtYXBz
IGBOb2RlYCB0byBgTm9kZUlkYCwgYW5kIGFub3RoZXIgdGhhdCBtYXBzIGBOb2RlSWRgIHRvIGBO
b2RlYC4gVGhlc2UgYXJlIGtlcHQgaW4gc3luYyB0aHJvdWdob3V0LAorICAgICAgICBhbmQgYm90
aCBhdHRhY2hlZCBhbmQgZGV0YWNoZWQgbm9kZXMgYXJlIG5vdyBoYW5kbGVkIGFzIHBhcnQgb2Yg
dGhlc2UgdHdvIG1hcHMgb2YgTm9kZXMuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpiaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Ym91bmROb2RlSWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZGVzdHJveWVkTm9kZXNUaW1lckZpcmVkKToKKyAgICAgICAgLSBBZGRlZCBpbnN0
cnVtZW50YXRpb24gcG9pbnQgZm9yIERPTSBub2RlcyBiZWluZyBkZXN0cm95ZWQgc28gdGhleSBj
YW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhZ2VudCwgYW5kIHRoZQorICAgICAgICBmcm9udGVuZCBj
YW4gYWxzbyBiZSBpbmZvcm1lZCBvZiB0aGVpciBjZWFzaW5nIHRvIGV4aXN0LgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUHVzaFNoYWRvd1Jvb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxQb3BTaGFkb3dSb290
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDaGFuZ2VDdXN0b21F
bGVtZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBzZXVk
b0VsZW1lbnRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
c2V1ZG9FbGVtZW50RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpyZWxlYXNlRGFuZ2xpbmdOb2Rlcyk6IERlbGV0ZWQuCisgICAgICAgIC0gUmVtb3ZlZCB1
c2FnZSBvZiBOb2RlVG9JZE1hcCBhbmQgbmVzdGVkIG1hcHMgb2Ygbm9kZXMgdGhyb3VnaG91dCBp
biBmYXZvciBvZiB0d28gaW52ZXJzZSBtYXBzIGZvciByZWxhdGluZworICAgICAgICBgTm9kZWBz
IGFuZCBgTm9kZUlkYHMuIEJlY2F1c2UgdGhlcmUgaXMgbm93IGEgc2luZ2xlIHNldCBvZiBjYW5v
bmljYWwgbm9kZSBtYXBzLCB3ZSBubyBsb25nZXIgdG8gdG8gcGFzcyBhCisgICAgICAgIE5vZGVU
b0lkTWFwIHRocm91Z2hvdXQgdGhlIGFnZW50LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjpQ
YWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQWdlbnQ6OmNs
ZWFyTWVzc2FnZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29s
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxs
RGVzdHJveURPTU5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5oOgorCiAyMDIxLTA2LTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGR1cGxpY2F0ZSAiYmVoYXZpb3IgZm9yIGZp
eGVkIiBlbnRyeSBmcm9tIHNjcm9sbGluZyBzdGF0ZSB0cmVlIGxvZ2dpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDNjNjE3NzMxMmVmNjk2ZmI2MmJhODkyOGIxZjRmNGNmODEzNGRjYzAu
LjgxMjMzYzNiNjFhZTRhOTdiMjNkNDRhN2I3ODkyNmMyYWJmOGFkYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTEwICBQYXRyaWNrIEFuZ2xlICA8
cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgaW5zdHJ1bWVu
dGF0aW9uIHRvIG5vZGUgZGVzdHJ1Y3Rpb24gZm9yIEluc3BlY3RvckRPTUFnZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaXN0ZW4gZm9yIHRoZSBu
ZXcgYERPTS53aWxsRGVzdHJveURPTU5vZGVgIGV2ZW50IGluIG9yZGVyIHRvIGNsZWFudXAgYW5k
IHJlbWFpbmluZyByZWZlcmVuY2VzIHRvIHRoYXQgTm9kZS4KKyAgICAgICAgVGhpcyB3b3JrIHNl
cnZlcyBhcyBhIHByZWx1ZGUgdG8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTY4Nz4gKFdlYiBJ
bnNwZWN0b3I6IHByZXNlcnZlIERPTS5Ob2RlSWQgaWYgYSBub2RlIGlzCisgICAgICAgIHJlbW92
ZWQgYW5kIHJlLWFkZGVkKSB0byBldmVudHVhbGx5IG9ubHkgZm9yZ2V0IGFib3V0IG5vZGVzIHVw
b24gZGVzdHJ1Y3Rpb24sIGluc3RlYWQgb2YgcmVtb3ZhbCBmcm9tIHRoZSBET00KKyAgICAgICAg
dHJlZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5q
czoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLndpbGxEZXN0cm95RE9NTm9kZSk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qczoKKyAgICAg
ICAgKFdJLkRPTU9ic2VydmVyLnByb3RvdHlwZS53aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanM6CisgICAgICAgIChXSS5E
T01UcmVlVXBkYXRlci5wcm90b3R5cGUuX25vZGVSZW1vdmVkKToKKwogMjAyMS0wNS0xNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNyZWF0ZUNvbmljR3JhZGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCmluZGV4IDE2MjBjMDAz
ZjA3NmVlZTMxZGRjOGJlNjlhODRlNDk5NTI5OTg5MmEuLjNhOTFhYzZiNTdmYWQ3ZjQ3MmRhYTJl
MjEwN2IzYjQ4M2RlNzAxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtNjc4LDYgKzY3OCwxMyBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjog
IklkIG9mIHRoZSBub2RlIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAid2lsbERlc3Ryb3lE
T01Ob2RlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIGEgZGV0YWNo
ZWQgRE9NIG5vZGUgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiBDdXJyZW50bHksIHRoaXMgZXZl
bnQgd2lsbCBvbmx5IGJlIGZpcmVkIHdoZW4gYSBET00gbm9kZSB0aGF0IGlzIGRldGFjaGVkIGlz
IGFib3V0IHRvIGJlIGRlc3RydWN0ZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRl
c2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRoYXQgd2lsbCBiZSBkZXN0cm95ZWQuIiB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
InNoYWRvd1Jvb3RQdXNoZWQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhbGxlZCB3
aGVuIHNoYWRvdyByb290IGlzIHB1c2hlZCBpbnRvIHRoZSBlbGVtZW50LiIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggZmRhYmNkM2U3Yjg5MmU1MDFkODc5NDMyYWM0NmMzZDcxM2Y4ZWIwMC4uMTlkNWFk
Nzg1ZDkxYjU0ODcxZWY0N2NlN2E5Mzg0ZDNhMDMyYzNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
MzQ5LDYgKzM0OSw4IEBAIE5vZGU6On5Ob2RlKCkKICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0Jl
Z3VuKTsKICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIAorICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlKCp0aGlzKTsKKwogI2lmbmRlZiBO
REVCVUcKICAgICBpZiAoIWlnbm9yZVNldCgpLnJlbW92ZSgqdGhpcykpCiAgICAgICAgIG5vZGVD
b3VudGVyLmRlY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0Zjlj
ZjllODUxN2E1ZGMzNTJjNGM0Li5hNjBkNDY0MzQ0ZmQ5MDE0MDI4OGEwYWNjZTViMzliMTExNDQx
NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtMTc2LDYgKzE3NiwxNCBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bQogICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgbm9kZSkKK3sKKyAgICBp
ZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+
d2lsbERlc3Ryb3lET01Ob2RlKG5vZGUpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT53
aWxsRGVzdHJveURPTU5vZGUobm9kZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpub2RlTGF5b3V0Q29udGV4dENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUsIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIp
CiB7CiAgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
Q1NTQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAppbmRleCA4ZjA0MDQ0NGJiMTgzZDE2MmM2MGY2ZmQ0NzUyYmVjZDlj
ZTZhYjk5Li5jZTEwMTE5Yzg2MWNhYjk1NGVlYzM3YzQ4ZTkxOTdjMzIzNDBjZmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEluc2VydERP
TU5vZGUoRG9jdW1lbnQmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURPTU5v
ZGUoRG9jdW1lbnQmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShE
b2N1bWVudCYsIE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUoTm9k
ZSYpOwogICAgIHN0YXRpYyB2b2lkIG5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZChOb2RlJiwgUmVu
ZGVyT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQm
LCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcm
IG5ld1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3VtZW50Jiwg
RWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KTsKQEAgLTM1MCw2ICszNTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEluc2Vy
dERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CiAgICAgc3RhdGljIHZv
aWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveURPTU5vZGVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgbm9kZUxheW91dENvbnRleHRD
aGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYsIFJlbmRlck9iamVjdCopOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5n
JiBuZXdWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSk7CkBAIC02MDEsNiArNjAzLDEzIEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZShEb2N1bWVudCYgZG9jdW1lbnQs
IE5vZGUmCiAgICAgICAgIGRpZFJlbW92ZURPTU5vZGVJbXBsKCphZ2VudHMsIG5vZGUpOwogfQog
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9k
ZShOb2RlJiBub2RlKQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OworICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKG5vZGUuZG9jdW1l
bnQoKSkpCisgICAgICAgIHdpbGxEZXN0cm95RE9NTm9kZUltcGwoKmFnZW50cywgbm9kZSk7Cit9
CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENvbnRl
eHRDaGFuZ2VkKE5vZGUmIG5vZGUsIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDA0YzE3
NTcyZmY2NTZmMjIyYTEzMWU4MGE5NzMxM2VkYjUzMjFmNGUuLjZhZmIyYTFhMjI0NjJjOGQ2NDUw
MmVjYmZlYTM1NDdhMTY1ZGQyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xMTYwLDYgKzExNjAsNyBAQCBS
ZWZQdHI8UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9i
amVjdEZvckF0dHJpYnV0ZXNTdHlsZQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1v
dmVET01Ob2RlKE5vZGUmIG5vZGUsIFByb3RvY29sOjpET006Ok5vZGVJZCBub2RlSWQpCiB7Cisg
ICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIGluIHJlc3BvbnNlIHRvIEdDLgogICAgIG1fbm9kZUlk
VG9Gb3JjZWRQc2V1ZG9TdGF0ZS5yZW1vdmUobm9kZUlkKTsKIAogICAgIGF1dG8gc2hlZXQgPSBt
X25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQudGFrZSgmbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQ0
NjJlZmMzMDZhMjk5YjU4ZTc4YzVkOTRlNmU4NzU3ZTE3MzRkODIuLmYxNjE1OWU4NWMyMGUxZWQ0
ZTcwN2UzMzZiNmE4MTQwZTFlMjFkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yODksNiArMjg5LDcgQEAg
SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNv
bnRleHQsIEluc3BlY3Rvck92ZXJsYXkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkK
ICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQorICAgICwgbV9kZXN0cm95ZWROb2Rlc1RpbWVyKCp0
aGlzLCAmSW5zcGVjdG9yRE9NQWdlbnQ6OmRlc3Ryb3llZE5vZGVzVGltZXJGaXJlZCkKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgLCBtX21lZGlhTWV0cmljc1RpbWVyKCp0aGlzLCAmSW5zcGVjdG9y
RE9NQWdlbnQ6Om1lZGlhTWV0cmljc1RpbWVyRmlyZWQpCiAjZW5kaWYKQEAgLTM1NCw2ICszNTUs
MTEgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQoKQogICAgIGlmIChtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrKQogICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5yZXNl
dCgpOwogICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOworCisgICAgbV9kZXN0cm95ZWREZXRhY2hl
ZE5vZGVJZGVudGlmaWVycy5jbGVhcigpOworICAgIG1fZGVzdHJveWVkTm9kZUlkZW50aWZpZXJz
LmNsZWFyKCk7CisgICAgaWYgKG1fZGVzdHJveWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICBtX2Rlc3Ryb3llZE5vZGVzVGltZXIuc3RvcCgpOwogfQogCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0zNzMsMjYgKzM3OSwy
MCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb2N1bWVudFVwZGF0ZWQoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVsZWFzZURhbmdsaW5nTm9kZXMoKQotewotICAg
IG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuY2xlYXIoKTsKLX0KLQotUHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkIEluc3BlY3RvckRPTUFnZW50OjpiaW5kKE5vZGUqIG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rl
c01hcCkKK1Byb3RvY29sOjpET006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6YmluZChOb2Rl
KiBub2RlKQogewotICAgIGF1dG8gaWQgPSBub2Rlc01hcC0+Z2V0KG5vZGUpOworICAgIGF1dG8g
aWQgPSBtX25vZGVUb0lkLmdldChub2RlKTsKICAgICBpZiAoaWQpCiAgICAgICAgIHJldHVybiBp
ZDsKICAgICBpZCA9IG1fbGFzdE5vZGVJZCsrOwotICAgIG5vZGVzTWFwLT5zZXQobm9kZSwgaWQp
OwogICAgIG1faWRUb05vZGUuc2V0KGlkLCBub2RlKTsKLSAgICBtX2lkVG9Ob2Rlc01hcC5zZXQo
aWQsIG5vZGVzTWFwKTsKKyAgICBtX25vZGVUb0lkLnNldChub2RlLCBpZCk7CiAgICAgcmV0dXJu
IGlkOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQoTm9kZSogbm9kZSwgTm9k
ZVRvSWRNYXAqIG5vZGVzTWFwKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5iaW5kKE5vZGUq
IG5vZGUpCiB7Ci0gICAgYXV0byBpZCA9IG5vZGVzTWFwLT5nZXQobm9kZSk7CisgICAgYXV0byBp
ZCA9IG1fbm9kZVRvSWQuZ2V0KG5vZGUpOwogICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNDAxLDIwICs0MDEsMjAgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5iaW5kKE5v
ZGUqIG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKICAgICBpZiAobm9kZS0+aXNGcmFtZU93
bmVyRWxlbWVudCgpKSB7CiAgICAgICAgIGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJh
bWVPd25lciA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KG5vZGUp
OwogICAgICAgICBpZiAoRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCA9IGZyYW1lT3duZXItPmNv
bnRlbnREb2N1bWVudCgpKQotICAgICAgICAgICAgdW5iaW5kKGNvbnRlbnREb2N1bWVudCwgbm9k
ZXNNYXApOworICAgICAgICAgICAgdW5iaW5kKGNvbnRlbnREb2N1bWVudCk7CiAgICAgfQogCiAg
ICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgewogICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0g
ZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwogICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9
IGVsZW1lbnQuc2hhZG93Um9vdCgpKQotICAgICAgICAgICAgdW5iaW5kKHJvb3QsIG5vZGVzTWFw
KTsKKyAgICAgICAgICAgIHVuYmluZChyb290KTsKICAgICAgICAgaWYgKFBzZXVkb0VsZW1lbnQq
IGJlZm9yZUVsZW1lbnQgPSBlbGVtZW50LmJlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAg
ICAgIHVuYmluZChiZWZvcmVFbGVtZW50LCBub2Rlc01hcCk7CisgICAgICAgICAgICB1bmJpbmQo
YmVmb3JlRWxlbWVudCk7CiAgICAgICAgIGlmIChQc2V1ZG9FbGVtZW50KiBhZnRlckVsZW1lbnQg
PSBlbGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpKQotICAgICAgICAgICAgdW5iaW5kKGFmdGVy
RWxlbWVudCwgbm9kZXNNYXApOworICAgICAgICAgICAgdW5iaW5kKGFmdGVyRWxlbWVudCk7CiAg
ICAgfQogCi0gICAgbm9kZXNNYXAtPnJlbW92ZShub2RlKTsKKyAgICBtX25vZGVUb0lkLnJlbW92
ZShub2RlKTsKIAogICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkQ1NTQWdlbnQoKSkKICAgICAgICAgY3NzQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUo
Km5vZGUsIGlkKTsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1
bmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQogICAgIGlmIChtX2NoaWxk
cmVuUmVxdWVzdGVkLnJlbW92ZShpZCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdvdWxkIGJlIGJl
dHRlciB0byBkbyB0aGlzIGl0ZXJhdGl2ZWx5IHJhdGhlciB0aGFuIHJlY3Vyc2l2ZWx5LgogICAg
ICAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hp
bGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAgICAgICAgIHVuYmluZChjaGlsZCwg
bm9kZXNNYXApOworICAgICAgICAgICAgdW5iaW5kKGNoaWxkKTsKICAgICB9CiB9CiAKQEAgLTUw
MCw3ICs1MDAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OkRPTTo6
Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudAogICAgIHJlc2V0KCk7CiAgICAg
bV9kb2N1bWVudCA9IGRvY3VtZW50OwogCi0gICAgYXV0byByb290ID0gYnVpbGRPYmplY3RGb3JO
b2RlKG1fZG9jdW1lbnQuZ2V0KCksIDIsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgIGF1
dG8gcm9vdCA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShtX2RvY3VtZW50LmdldCgpLCAyKTsKIAogICAg
IGlmIChtX25vZGVUb0ZvY3VzKQogICAgICAgICBmb2N1c05vZGUoKTsKQEAgLTUxNCw4ICs1MTQs
NiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoUHJv
dG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgaQogICAgIGlmICghbm9kZSB8fCAobm9kZS0+bm9k
ZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2Rl
OjpET0NVTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJB
R01FTlRfTk9ERSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5vZGVUb0lkTWFwKiBub2RlTWFw
ID0gbV9pZFRvTm9kZXNNYXAuZ2V0KG5vZGVJZCk7Ci0KICAgICBpZiAobV9jaGlsZHJlblJlcXVl
c3RlZC5jb250YWlucyhub2RlSWQpKSB7CiAgICAgICAgIGlmIChkZXB0aCA8PSAxKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTIzLDcgKzUyMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBp
CiAgICAgICAgIGRlcHRoLS07CiAKICAgICAgICAgZm9yIChub2RlID0gaW5uZXJGaXJzdENoaWxk
KG5vZGUpOyBub2RlOyBub2RlID0gaW5uZXJOZXh0U2libGluZyhub2RlKSkgewotICAgICAgICAg
ICAgYXV0byBjaGlsZE5vZGVJZCA9IG5vZGVNYXAtPmdldChub2RlKTsKKyAgICAgICAgICAgIGF1
dG8gY2hpbGROb2RlSWQgPSBtX25vZGVUb0lkLmdldChub2RlKTsKICAgICAgICAgICAgIEFTU0VS
VChjaGlsZE5vZGVJZCk7CiAgICAgICAgICAgICBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoY2hp
bGROb2RlSWQsIGRlcHRoKTsKICAgICAgICAgfQpAQCAtNTMxLDE3ICs1MjksMTYgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKFByb3RvY29sOjpET006
Ok5vZGVJZCBub2RlSWQsIGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2hp
bGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVN
YXApOworICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4o
bm9kZSwgZGVwdGgpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5v
ZGVJZCwgV1RGTW92ZShjaGlsZHJlbikpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpk
aXNjYXJkQmluZGluZ3MoKQogewotICAgIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5jbGVhcigpOwor
ICAgIG1fbm9kZVRvSWQuY2xlYXIoKTsKICAgICBtX2lkVG9Ob2RlLmNsZWFyKCk7CiAgICAgbV9k
aXNwYXRjaGVkRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9ldmVudExpc3RlbmVyRW50cmllcy5jbGVh
cigpOwotICAgIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAgICAgbV9jaGlsZHJlblJlcXVlc3Rl
ZC5jbGVhcigpOwogfQogCkBAIC02NTQsNTEgKzY1MSw0NSBAQCBQcm90b2NvbDo6RE9NOjpOb2Rl
SWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoUHJvdG9jb2w6OkVy
cm9yUwogICAgIH0KIAogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEzNDk5
PiBXZWIgSW5zcGVjdG9yOiBhbGxvdyBET00gbm9kZXMgdG8gYmUgaW5zdHJ1bWVudGVkIGF0IGFu
eSBwb2ludCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBtYWluIGRvY3VtZW50IGhhcyBhbHNv
IGJlZW4gaW5zdHJ1bWVudGVkCi0gICAgaWYgKCFtX2RvY3VtZW50Tm9kZVRvSWRNYXAuY29udGFp
bnMobV9kb2N1bWVudCkpIHsKKyAgICBpZiAoIW1fbm9kZVRvSWQuY29udGFpbnMobV9kb2N1bWVu
dC5nZXQoKSkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiRG9jdW1lbnQgbXVzdCBoYXZlIGJl
ZW4gcmVxdWVzdGVkIl9zOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyBSZXR1
cm4gaWQgaW4gY2FzZSB0aGUgbm9kZSBpcyBrbm93bi4KLSAgICBpZiAoYXV0byByZXN1bHQgPSBt
X2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGVUb1B1c2gpKQorICAgIGlmIChhdXRvIHJlc3Vs
dCA9IG1fbm9kZVRvSWQuZ2V0KG5vZGVUb1B1c2gpKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgTm9kZSogbm9kZSA9IG5vZGVUb1B1c2g7CiAgICAgVmVjdG9yPE5vZGUqPiBwYXRoOwot
ICAgIE5vZGVUb0lkTWFwKiBkYW5nbGluZ01hcCA9IDA7CiAKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CiAgICAgICAgIGlm
ICghcGFyZW50KSB7CiAgICAgICAgICAgICAvLyBOb2RlIGJlaW5nIHB1c2hlZCBpcyBkZXRhY2hl
ZCAtPiBwdXNoIHN1YnRyZWUgcm9vdC4KLSAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gbWFrZVVu
aXF1ZTxOb2RlVG9JZE1hcD4oKTsKLSAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFwLmdl
dCgpOwotICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFwLnJl
bGVhc2UoKSk7CiAgICAgICAgICAgICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRl
bShidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgZGFuZ2xpbmdNYXApKTsKKyAgICAgICAgICAg
IGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwKSk7CiAgICAgICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2RlcygwLCBXVEZNb3ZlKGNoaWxk
cmVuKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHBhdGguYXBwZW5kKHBhcmVudCk7Ci0gICAgICAgICAgICBpZiAobV9kb2N1bWVudE5vZGVUb0lk
TWFwLmdldChwYXJlbnQpKQorICAgICAgICAgICAgaWYgKG1fbm9kZVRvSWQuZ2V0KHBhcmVudCkp
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbm9kZSA9IHBhcmVudDsKKyAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBOb2RlVG9JZE1hcCogbWFwID0gZGFuZ2xpbmdNYXAgPyBkYW5nbGluZ01h
cCA6ICZtX2RvY3VtZW50Tm9kZVRvSWRNYXA7CiAgICAgZm9yIChpbnQgaSA9IHBhdGguc2l6ZSgp
IC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgYXV0byBub2RlSWQgPSBtYXAtPmdldChwYXRo
LmF0KGkpKTsKKyAgICAgICAgYXV0byBub2RlSWQgPSBtX25vZGVUb0lkLmdldChwYXRoLmF0KGkp
KTsKICAgICAgICAgQVNTRVJUKG5vZGVJZCk7CiAgICAgICAgIHB1c2hDaGlsZE5vZGVzVG9Gcm9u
dGVuZChub2RlSWQpOwogICAgIH0KLSAgICByZXR1cm4gbWFwLT5nZXQobm9kZVRvUHVzaCk7Cisg
ICAgcmV0dXJuIG1fbm9kZVRvSWQuZ2V0KG5vZGVUb1B1c2gpOwogfQogCiBQcm90b2NvbDo6RE9N
OjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKGNvbnN0IE5vZGUqIG5vZGUp
CiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoY29uc3RfY2FzdDxOb2Rl
Kj4obm9kZSkpOworICAgIHJldHVybiBtX25vZGVUb0lkLmdldChjb25zdF9jYXN0PE5vZGUqPihu
b2RlKSk7CiB9CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFn
ZW50OjpzZXRBdHRyaWJ1dGVWYWx1ZShQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0xNzEyLDkgKzE3MDMsOSBA
QCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInNoYTI1Ni0iLCBi
YXNlNjRFbmNvZGVkKGRpZ2VzdC5kYXRhKCksIGRpZ2VzdC5zaXplKCkpKTsKIH0KIAotUmVmPFBy
b3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUo
Tm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCitSZWY8UHJvdG9j
b2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2Rl
KiBub2RlLCBpbnQgZGVwdGgpCiB7Ci0gICAgYXV0byBpZCA9IGJpbmQobm9kZSwgbm9kZXNNYXAp
OworICAgIGF1dG8gaWQgPSBiaW5kKG5vZGUpOwogICAgIFN0cmluZyBub2RlTmFtZTsKICAgICBT
dHJpbmcgbG9jYWxOYW1lOwogICAgIFN0cmluZyBub2RlVmFsdWU7CkBAIC0xNzU2LDcgKzE3NDcs
NyBAQCBSZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZAogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5v
ZGUoKSkgewogICAgICAgICBpbnQgbm9kZUNvdW50ID0gaW5uZXJDaGlsZE5vZGVDb3VudChub2Rl
KTsKICAgICAgICAgdmFsdWUtPnNldENoaWxkTm9kZUNvdW50KG5vZGVDb3VudCk7Ci0gICAgICAg
IGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVw
dGgsIG5vZGVzTWFwKTsKKyAgICAgICAgYXV0byBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250
YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCk7CiAgICAgICAgIGlmIChjaGlsZHJlbi0+bGVuZ3Ro
KCkgPiAwKQogICAgICAgICAgICAgdmFsdWUtPnNldENoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4p
KTsKICAgICB9CkBAIC0xNzc1LDE3ICsxNzY2LDE3IEBAIFJlZjxQcm90b2NvbDo6RE9NOjpOb2Rl
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGludCBk
CiAgICAgICAgIHZhbHVlLT5zZXRBdHRyaWJ1dGVzKGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmli
dXRlcygmZWxlbWVudCkpOwogICAgICAgICBpZiAoaXM8SFRNTEZyYW1lT3duZXJFbGVtZW50Pihl
bGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8SFRN
TEZyYW1lT3duZXJFbGVtZW50PihlbGVtZW50KS5jb250ZW50RG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgICAgICB2YWx1ZS0+c2V0Q29udGVudERvY3VtZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZShkb2N1
bWVudCwgMCwgbm9kZXNNYXApKTsKKyAgICAgICAgICAgICAgICB2YWx1ZS0+c2V0Q29udGVudERv
Y3VtZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZShkb2N1bWVudCwgMCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKSkgewogICAg
ICAgICAgICAgYXV0byBzaGFkb3dSb290cyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6
Tm9kZT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgc2hhZG93Um9vdHMtPmFkZEl0ZW0oYnVpbGRP
YmplY3RGb3JOb2RlKHJvb3QsIDAsIG5vZGVzTWFwKSk7CisgICAgICAgICAgICBzaGFkb3dSb290
cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUocm9vdCwgMCkpOwogICAgICAgICAgICAgdmFs
dWUtPnNldFNoYWRvd1Jvb3RzKFdURk1vdmUoc2hhZG93Um9vdHMpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgICAg
IHZhbHVlLT5zZXRUZW1wbGF0ZUNvbnRlbnQoYnVpbGRPYmplY3RGb3JOb2RlKCZkb3duY2FzdDxI
VE1MVGVtcGxhdGVFbGVtZW50PihlbGVtZW50KS5jb250ZW50KCksIDAsIG5vZGVzTWFwKSk7Cisg
ICAgICAgICAgICB2YWx1ZS0+c2V0VGVtcGxhdGVDb250ZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZSgm
ZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oZWxlbWVudCkuY29udGVudCgpLCAwKSk7CiAK
ICAgICAgICAgaWYgKGlzPEhUTUxTdHlsZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MU2Ny
aXB0RWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIpKSkKICAgICAgICAgICAgIHZhbHVlLT5zZXRD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKGVsZW1lbnQpKTsKQEAgLTE3OTksNyArMTc5MCw3IEBAIFJlZjxQcm90b2NvbDo6RE9N
OjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUs
IGludCBkCiAgICAgICAgICAgICBpZiAocHNldWRvRWxlbWVudFR5cGUoZWxlbWVudC5wc2V1ZG9J
ZCgpLCAmcHNldWRvVHlwZSkpCiAgICAgICAgICAgICAgICAgdmFsdWUtPnNldFBzZXVkb1R5cGUo
cHNldWRvVHlwZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwc2V1
ZG9FbGVtZW50cyA9IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhlbGVtZW50LCBub2Rlc01h
cCkpCisgICAgICAgICAgICBpZiAoYXV0byBwc2V1ZG9FbGVtZW50cyA9IGJ1aWxkQXJyYXlGb3JQ
c2V1ZG9FbGVtZW50cyhlbGVtZW50KSkKICAgICAgICAgICAgICAgICB2YWx1ZS0+c2V0UHNldWRv
RWxlbWVudHMocHNldWRvRWxlbWVudHMucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKGlzPERvY3VtZW50Pigqbm9kZSkpIHsKQEAgLTE4MzksMzEgKzE4MzAsMzEg
QEAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJy
YXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGUKICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlOwog
fQogCi1SZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUmVmPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVy
Q2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgpCiB7CiAgICAgYXV0byBjaGlsZHJl
biA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgIGlm
IChkZXB0aCA9PSAwKSB7CiAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSB0aGUgb25seSB0ZXh0IGNo
aWxkIC0gcHJldGVuZCB0aGF0IGNvbnRhaW5lcidzIGNoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0
ZWQuCiAgICAgICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsK
ICAgICAgICAgaWYgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpURVhUX05PREUgJiYgIWZpcnN0Q2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAg
IGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShmaXJzdENoaWxkLCAwLCBub2Rl
c01hcCkpOwotICAgICAgICAgICAgbV9jaGlsZHJlblJlcXVlc3RlZC5hZGQoYmluZChjb250YWlu
ZXIsIG5vZGVzTWFwKSk7CisgICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVj
dEZvck5vZGUoZmlyc3RDaGlsZCwgMCkpOworICAgICAgICAgICAgbV9jaGlsZHJlblJlcXVlc3Rl
ZC5hZGQoYmluZChjb250YWluZXIpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gY2hpbGRy
ZW47CiAgICAgfQogCiAgICAgTm9kZSogY2hpbGQgPSBpbm5lckZpcnN0Q2hpbGQoY29udGFpbmVy
KTsKICAgICBkZXB0aC0tOwotICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuYWRkKGJpbmQoY29udGFp
bmVyLCBub2Rlc01hcCkpOworICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuYWRkKGJpbmQoY29udGFp
bmVyKSk7CiAKICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCBkZXB0aCwgbm9kZXNNYXApKTsKKyAgICAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCBkZXB0aCkpOwogICAgICAg
ICBjaGlsZCA9IGlubmVyTmV4dFNpYmxpbmcoY2hpbGQpOwogICAgIH0KICAgICByZXR1cm4gY2hp
bGRyZW47CiB9CiAKLVJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+PiBJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKK1JlZlB0cjxKU09OOjpBcnJheU9m
PFByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBz
ZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgUHNldWRvRWxlbWVu
dCogYmVmb3JlRWxlbWVudCA9IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpOwogICAgIFBz
ZXVkb0VsZW1lbnQqIGFmdGVyRWxlbWVudCA9IGVsZW1lbnQuYWZ0ZXJQc2V1ZG9FbGVtZW50KCk7
CkBAIC0xODcyLDkgKzE4NjMsOSBAQCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RE9N
OjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZAogCiAgICAgYXV0
byBwc2V1ZG9FbGVtZW50cyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNy
ZWF0ZSgpOwogICAgIGlmIChiZWZvcmVFbGVtZW50KQotICAgICAgICBwc2V1ZG9FbGVtZW50cy0+
YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoYmVmb3JlRWxlbWVudCwgMCwgbm9kZXNNYXApKTsK
KyAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGJlZm9y
ZUVsZW1lbnQsIDApKTsKICAgICBpZiAoYWZ0ZXJFbGVtZW50KQotICAgICAgICBwc2V1ZG9FbGVt
ZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoYWZ0ZXJFbGVtZW50LCAwLCBub2Rlc01h
cCkpOworICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUo
YWZ0ZXJFbGVtZW50LCAwKSk7CiAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRzOwogfQogCkBAIC0y
MzYzLDE4ICsyMzU0LDE4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIGlmICghZnJhbWVPd25lcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBmcmFtZU93bmVySWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGZy
YW1lT3duZXIpOworICAgIGF1dG8gZnJhbWVPd25lcklkID0gbV9ub2RlVG9JZC5nZXQoZnJhbWVP
d25lci5nZXQoKSk7CiAgICAgaWYgKCFmcmFtZU93bmVySWQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFJlLWFkZCBmcmFtZSBvd25lciBlbGVtZW50IHRvZ2V0aGVyIHdpdGggaXRzIG5ldyBj
aGlsZHJlbi4KLSAgICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChp
bm5lclBhcmVudE5vZGUoZnJhbWVPd25lci5nZXQoKSkpOworICAgIGF1dG8gcGFyZW50SWQgPSBt
X25vZGVUb0lkLmdldChpbm5lclBhcmVudE5vZGUoZnJhbWVPd25lci5nZXQoKSkpOwogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBmcmFtZU93bmVy
SWQpOwotICAgIHVuYmluZChmcmFtZU93bmVyLmdldCgpLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFw
KTsKKyAgICB1bmJpbmQoZnJhbWVPd25lci5nZXQoKSk7CiAKLSAgICBhdXRvIHZhbHVlID0gYnVp
bGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIuZ2V0KCksIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRN
YXApOworICAgIGF1dG8gdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUoZnJhbWVPd25lci5nZXQo
KSwgMCk7CiAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxpbmco
ZnJhbWVPd25lci5nZXQoKSk7Ci0gICAgYXV0byBwcmV2SWQgPSBwcmV2aW91c1NpYmxpbmcgPyBt
X2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHByZXZpb3VzU2libGluZykgOiAwOworICAgIGF1dG8g
cHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gbV9ub2RlVG9JZC5nZXQocHJldmlvdXNTaWJsaW5n
KSA6IDA7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVu
dElkLCBwcmV2SWQsIFdURk1vdmUodmFsdWUpKTsKIH0KIApAQCAtMjQyOSwxMyArMjQyMCwxMyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGNvdWxkIGJlIGF0dGFjaGluZyBleGlzdGluZyBz
dWJ0cmVlLiBGb3JnZXQgdGhlIGJpbmRpbmdzLgotICAgIHVuYmluZCgmbm9kZSwgJm1fZG9jdW1l
bnROb2RlVG9JZE1hcCk7CisgICAgdW5iaW5kKCZub2RlKTsKIAogICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChw
YXJlbnQpOworICAgIGF1dG8gcGFyZW50SWQgPSBtX25vZGVUb0lkLmdldChwYXJlbnQpOwogICAg
IC8vIFJldHVybiBpZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQuCiAgICAgaWYgKCFwYXJlbnRJ
ZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0Niw4ICsyNDM3LDggQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlJiBub2RlKQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIENoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQgLT4gcmV0dXJuIHZhbHVlIG9mIGEg
bmV3IGNoaWxkLgogICAgICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJs
aW5nKCZub2RlKTsKLSAgICAgICAgYXV0byBwcmV2SWQgPSBwcmV2U2libGluZyA/IG1fZG9jdW1l
bnROb2RlVG9JZE1hcC5nZXQocHJldlNpYmxpbmcpIDogMDsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IGJ1aWxkT2JqZWN0Rm9yTm9kZSgmbm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7Cisg
ICAgICAgIGF1dG8gcHJldklkID0gcHJldlNpYmxpbmcgPyBtX25vZGVUb0lkLmdldChwcmV2U2li
bGluZykgOiAwOworICAgICAgICBhdXRvIHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKCZub2Rl
LCAwKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBh
cmVudElkLCBwcmV2SWQsIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiB9CkBAIC0yNDYwLDE4ICsy
NDUxLDYxIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSYg
bm9kZSkKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKIAog
ICAgIC8vIElmIHBhcmVudCBpcyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50Lgot
ICAgIGlmICghbV9kb2N1bWVudE5vZGVUb0lkTWFwLmNvbnRhaW5zKHBhcmVudCkpCisgICAgaWYg
KCFtX25vZGVUb0lkLmNvbnRhaW5zKHBhcmVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7CisgICAgYXV0
byBwYXJlbnRJZCA9IG1fbm9kZVRvSWQuZ2V0KHBhcmVudCk7CiAKKyAgICAvLyBGSVhNRTogPHdl
YmtpdC5vcmcvYi8xODk2ODc+IFByZXNlcnZlIERPTS5Ob2RlSWQgaWYgYSBub2RlIGlzIHJlbW92
ZWQgYW5kIHJlLWFkZGVkCiAgICAgaWYgKCFtX2NoaWxkcmVuUmVxdWVzdGVkLmNvbnRhaW5zKHBh
cmVudElkKSkgewogICAgICAgICAvLyBObyBjaGlsZHJlbiBhcmUgbWFwcGVkIHlldCAtPiBvbmx5
IG5vdGlmeSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVuLgogICAgICAgICBpZiAoaW5uZXJDaGls
ZE5vZGVDb3VudChwYXJlbnQpID09IDEpCiAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElkLCAwKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92ZWQocGFyZW50SWQsIG1fZG9j
dW1lbnROb2RlVG9JZE1hcC5nZXQoJm5vZGUpKTsKLSAgICB1bmJpbmQoJm5vZGUsICZtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXApOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2Rl
UmVtb3ZlZChwYXJlbnRJZCwgbV9ub2RlVG9JZC5nZXQoJm5vZGUpKTsKKyAgICB1bmJpbmQoJm5v
ZGUpOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveURPTU5vZGUoTm9k
ZSYgbm9kZSkKK3sKKyAgICBhdXRvIG5vZGVJZCA9IG1fbm9kZVRvSWQuZ2V0KCZub2RlKTsKKyAg
ICBpZiAoIW5vZGVJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBwYXJlbnQgPSBub2Rl
LnBhcmVudE5vZGUoKTsKKworICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBpbiByZXNwb25zZSB0
byBHQy4gRHVlIHRvIHRoZSBzaW5nbGUtcHJvY2VzcyBtb2RlbCB1c2VkIGluIFdlYktpdDEsIHRo
ZQorICAgIC8vIGV2ZW50IG11c3QgYmUgZGlzcGF0Y2hlZCBmcm9tIGEgdGltZXIgdG8gcHJldmVu
dCB0aGUgZnJvbnRlbmQgZnJvbSBtYWtpbmcgSlMgYWxsb2NhdGlvbnMKKyAgICAvLyB3aGlsZSB0
aGUgR0MgaXMgc3RpbGwgYWN0aXZlLgorICAgIGlmIChhdXRvIHBhcmVudElkID0gbV9ub2RlVG9J
ZC5nZXQocGFyZW50KSkKKyAgICAgICAgbV9kZXN0cm95ZWROb2RlSWRlbnRpZmllcnMuYXBwZW5k
KHsgcGFyZW50SWQsIG5vZGVJZCB9KTsKKyAgICBlbHNlCisgICAgICAgIG1fZGVzdHJveWVkRGV0
YWNoZWROb2RlSWRlbnRpZmllcnMuYXBwZW5kKG5vZGVJZCk7CisKKyAgICBpZiAoIW1fZGVzdHJv
eWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2Rlc3Ryb3llZE5vZGVzVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CisKKyAgICBtX2lkVG9Ob2RlLnJlbW92ZShub2RlSWQpOworICAg
IG1fbm9kZVRvSWQucmVtb3ZlKCZub2RlKTsKKyAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLnJlbW92
ZShub2RlSWQpOworCisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkUmVtb3ZlRE9NTm9k
ZShub2RlLCBub2RlSWQpOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkZXN0cm95ZWRO
b2Rlc1RpbWVyRmlyZWQoKQoreworICAgIGZvciAoYXV0byYgW3BhcmVudElkLCBub2RlSWRdIDog
c3RkOjpleGNoYW5nZShtX2Rlc3Ryb3llZE5vZGVJZGVudGlmaWVycywgeyB9KSkgeworICAgICAg
ICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CisgICAgICAg
ICAgICBhdXRvKiBwYXJlbnQgPSBub2RlRm9ySWQocGFyZW50SWQpOworICAgICAgICAgICAgaWYg
KHBhcmVudCAmJiBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKKyAgICAgICAgICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElk
LCAwKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgbm9kZUlkKTsKKyAgICB9CisgICAgCisgICAgZm9y
IChhdXRvIG5vZGVJZCA6IHN0ZDo6ZXhjaGFuZ2UobV9kZXN0cm95ZWREZXRhY2hlZE5vZGVJZGVu
dGlmaWVycywgeyB9KSkKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndpbGxEZXN0cm95
RE9NTm9kZShub2RlSWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsTW9kaWZ5
RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21T
dHJpbmcmIG5ld1ZhbHVlKQpAQCAtMjUyNiw3ICsyNTYwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBl
bGVtZW4KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENo
YXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiB7Ci0gICAgYXV0byBpZCA9IG1fZG9jdW1lbnRO
b2RlVG9JZE1hcC5nZXQoJmNoYXJhY3RlckRhdGEpOworICAgIGF1dG8gaWQgPSBtX25vZGVUb0lk
LmdldCgmY2hhcmFjdGVyRGF0YSk7CiAgICAgaWYgKCFpZCkgewogICAgICAgICAvLyBQdXNoIHRl
eHQgbm9kZSBpZiBpdCBpcyBiZWluZyBjcmVhdGVkLgogICAgICAgICBkaWRJbnNlcnRET01Ob2Rl
KGNoYXJhY3RlckRhdGEpOwpAQCAtMjUzNyw3ICsyNTcxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEp
CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVu
dCYgZWxlbWVudCkKIHsKLSAgICBhdXRvIGlkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgm
ZWxlbWVudCk7CisgICAgYXV0byBpZCA9IG1fbm9kZVRvSWQuZ2V0KCZlbGVtZW50KTsKICAgICBp
ZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKQEAgLTI1NDgsMjIgKzI1ODIsMjIgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50
KQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50JiBo
b3N0LCBTaGFkb3dSb290JiByb290KQogewotICAgIGF1dG8gaG9zdElkID0gbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmdldCgmaG9zdCk7CisgICAgYXV0byBob3N0SWQgPSBtX25vZGVUb0lkLmdldCgm
aG9zdCk7CiAgICAgaWYgKGhvc3RJZCkKLSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNo
YWRvd1Jvb3RQdXNoZWQoaG9zdElkLCBidWlsZE9iamVjdEZvck5vZGUoJnJvb3QsIDAsICZtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXApKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNoYWRv
d1Jvb3RQdXNoZWQoaG9zdElkLCBidWlsZE9iamVjdEZvck5vZGUoJnJvb3QsIDApKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwg
U2hhZG93Um9vdCYgcm9vdCkKIHsKLSAgICBhdXRvIGhvc3RJZCA9IG1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5nZXQoJmhvc3QpOwotICAgIGF1dG8gcm9vdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFw
LmdldCgmcm9vdCk7CisgICAgYXV0byBob3N0SWQgPSBtX25vZGVUb0lkLmdldCgmaG9zdCk7Cisg
ICAgYXV0byByb290SWQgPSBtX25vZGVUb0lkLmdldCgmcm9vdCk7CiAgICAgaWYgKGhvc3RJZCAm
JiByb290SWQpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zaGFkb3dSb290UG9wcGVk
KGhvc3RJZCwgcm9vdElkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ2hhbmdl
Q3VzdG9tRWxlbWVudFN0YXRlKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgYXV0byBlbGVtZW50
SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZlbGVtZW50KTsKKyAgICBhdXRvIGVsZW1l
bnRJZCA9IG1fbm9kZVRvSWQuZ2V0KCZlbGVtZW50KTsKICAgICBpZiAoIWVsZW1lbnRJZCkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yNTkwLDI3ICsyNjI0LDI3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnBzZXVkb0VsZW1lbnRDcmVhdGVkKFBzZXVkb0VsZW1lbnQmIHBzZXVkb0VsZW1lbnQp
CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFyZW50SWQg
PSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7CisgICAgYXV0byBwYXJlbnRJZCA9
IG1fbm9kZVRvSWQuZ2V0KHBhcmVudCk7CiAgICAgaWYgKCFwYXJlbnRJZCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKHBhcmVudElkLCAxKTsKLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cHNldWRvRWxlbWVudEFkZGVkKHBhcmVudElkLCBidWlsZE9i
amVjdEZvck5vZGUoJnBzZXVkb0VsZW1lbnQsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cHNldWRvRWxlbWVudEFkZGVkKHBhcmVudElkLCBi
dWlsZE9iamVjdEZvck5vZGUoJnBzZXVkb0VsZW1lbnQsIDApKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9F
bGVtZW50KQogewotICAgIGF1dG8gcHNldWRvRWxlbWVudElkID0gbV9kb2N1bWVudE5vZGVUb0lk
TWFwLmdldCgmcHNldWRvRWxlbWVudCk7CisgICAgYXV0byBwc2V1ZG9FbGVtZW50SWQgPSBtX25v
ZGVUb0lkLmdldCgmcHNldWRvRWxlbWVudCk7CiAgICAgaWYgKCFwc2V1ZG9FbGVtZW50SWQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIGEgUHNldWRvRWxlbWVudCBpcyBib3VuZCwgaXRz
IHBhcmVudCBlbGVtZW50IG11c3QgaGF2ZSBiZWVuIGJvdW5kLgogICAgIEVsZW1lbnQqIHBhcmVu
dCA9IHBzZXVkb0VsZW1lbnQuaG9zdEVsZW1lbnQoKTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAg
ICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwYXJlbnQpOworICAg
IGF1dG8gcGFyZW50SWQgPSBtX25vZGVUb0lkLmdldChwYXJlbnQpOwogICAgIEFTU0VSVChwYXJl
bnRJZCk7CiAKLSAgICB1bmJpbmQoJnBzZXVkb0VsZW1lbnQsICZtX2RvY3VtZW50Tm9kZVRvSWRN
YXApOworICAgIHVuYmluZCgmcHNldWRvRWxlbWVudCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnBzZXVkb0VsZW1lbnRSZW1vdmVkKHBhcmVudElkLCBwc2V1ZG9FbGVtZW50SWQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmgKaW5kZXggNzRhNjBmNjE4MDkyNjc2ZDhiZWU4NzUzOGM5ZDY5N2YzYzU4NDMwNC4uODVk
Njg1OWFiYjA3YzI5MWJlOGFlMDM4OTIzM2FlNDQ0ZGUwZjU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTU5LDYg
KzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJzVG9Ob2RlKE5vZGUm
KTsKICAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQgZGlkUmVtb3Zl
RE9NTm9kZShOb2RlJik7CisgICAgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYpOwogICAg
IHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7CiAgICAgdm9pZCBkaWRNb2RpZnlET01B
dHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSk7CiAgICAgdm9pZCBkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKTsKQEAgLTE3OSw3ICsxODAsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsYmFj
a3MgdGhhdCBkb24ndCBkaXJlY3RseSBjb3JyZXNwb25kIHRvIGFuIGluc3RydW1lbnRhdGlvbiBl
bnRyeSBwb2ludC4KICAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0gICAgdm9pZCBy
ZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogCiAgICAgdm9pZCBzdHlsZUF0dHJpYnV0ZUludmFsaWRh
dGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKTsKIApAQCAtMjE4LDE5ICsyMTgs
MTggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yT3ZlcmxheTo6R3Jp
ZDo6Q29uZmlnPiBncmlkT3ZlcmxheUNvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGdyaWRPdmVy
bGF5SW5zcGVjdG9yT2JqZWN0KTsKIAogICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgotICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZUlkPiBOb2RlVG9JZE1hcDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJ
ZCBiaW5kKE5vZGUqLCBOb2RlVG9JZE1hcCopOwotICAgIHZvaWQgdW5iaW5kKE5vZGUqLCBOb2Rl
VG9JZE1hcCopOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIGJpbmQoTm9k
ZSopOworICAgIHZvaWQgdW5iaW5kKE5vZGUqKTsKIAogICAgIE5vZGUqIGFzc2VydEVkaXRhYmxl
Tm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkKTsKICAgICBFbGVtZW50KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGVJZCk7CiAKICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGVJZCwgaW50IGRlcHRoID0gMSk7CiAKLSAgICBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBk
ZXB0aCwgTm9kZVRvSWRNYXAqKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCk7CiAgICAgUmVmPEpTT046
OkFycmF5T2Y8U3RyaW5nPj4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQq
KTsKLSAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVw
dGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRz
KGNvbnN0IEVsZW1lbnQmLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFJlZjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250
YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCk7CisgICAgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZv
clBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2
ZW50TGlzdGVuZXJJZCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgY29uc3QgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4m
KTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlJik7CiAgICAg
dm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYsIEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+Jik7CkBAIC0yNDIsMTYgKzI0
MSwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlx
dWVfcHRyPEZsb2F0UXVhZD4sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFn
ZUNvb3JkaW5hdGVzKTsKIAorICAgIHZvaWQgZGVzdHJveWVkTm9kZXNUaW1lckZpcmVkKCk7CisK
ICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01CYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBQYWdlJiBtX2luc3BlY3Rl
ZFBhZ2U7CiAgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5IHsgbnVsbHB0ciB9OwotICAg
IE5vZGVUb0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKLSAgICAvLyBPd25zIG5vZGUgbWFw
cGluZ3MgZm9yIGRhbmdsaW5nIG5vZGVzLgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Tm9k
ZVRvSWRNYXA+PiBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzOworICAgIEhhc2hNYXA8Tm9kZSosIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBtX25vZGVUb0lkOwogICAgIEhhc2hNYXA8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE5vZGUqPiBtX2lkVG9Ob2RlOwotICAg
IEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE5vZGVUb0lkTWFwKj4g
bV9pZFRvTm9kZXNNYXA7CiAgICAgSGFzaFNldDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZD4gbV9jaGlsZHJlblJlcXVlc3RlZDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGVJZCBtX2xhc3ROb2RlSWQgeyAxIH07CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3Vt
ZW50OwpAQCAtMjY1LDYgKzI2MywxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTUVkaXRv
cj4gbV9kb21FZGl0b3I7CiAKKyAgICBWZWN0b3I8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlSWQ+IG1fZGVzdHJveWVkRGV0YWNoZWROb2RlSWRlbnRpZmllcnM7CisgICAgVmVjdG9yPHN0
ZDo6cGFpcjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlSWQ+PiBtX2Rlc3Ryb3llZE5vZGVJZGVudGlmaWVyczsKKyAgICBUaW1l
ciBtX2Rlc3Ryb3llZE5vZGVzVGltZXI7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgVGltZXIg
bV9tZWRpYU1ldHJpY3NUaW1lcjsKICAgICBzdHJ1Y3QgTWVkaWFNZXRyaWNzIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFn
ZW50LmNwcAppbmRleCAwMjgzMGZkMDY0OWFmZjE4MzA1NTVjNGNhOGZkOGRjOGZlMTM2ZDNiLi41
ZWQ1MTMwZThhZjJkMDU0ZTc5MWY0MDExMzA5MjIxM2U2NDcxNDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQu
Y3BwCkBAIC00Nyw3ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFBhZ2VD
b25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0KQotICAgICwgbV9pbnN0cnVtZW50aW5nQWdl
bnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFnZShj
b250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CiB9CkBAIC01Niw5ICs1NSw2IEBAIFBhZ2VDb25zb2xl
QWdlbnQ6On5QYWdlQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0OwogCiBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBQYWdlQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKCkKIHsKLSAgICBp
ZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFn
ZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT5yZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwotCiAgICAg
cmV0dXJuIFdlYkNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQu
aAppbmRleCA0MWZlNzZkMDMyMDcwZTBkNDEwM2U0MGEyYzE0NGNlMzc5ODFjODMzLi5mY2RkMjQ3
MjNmYTI2ZjYwYjFmNTY4MjM0NDZiNDIzZTZmZDUxNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmgKQEAgLTQ5
LDcgKzQ5LDYgQEAgcHVibGljOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gc2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChJbnNwZWN0b3I6OlByb3RvY29sOjpDb25z
b2xlOjpDaGFubmVsU291cmNlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
TGV2ZWwpOwogCiBwcml2YXRlOgotICAgIEluc3RydW1lbnRpbmdBZ2VudHMmIG1faW5zdHJ1bWVu
dGluZ0FnZW50czsKICAgICBQYWdlJiBtX2luc3BlY3RlZFBhZ2U7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1
Z2dlckFnZW50LmNwcAppbmRleCA2YzIwNzJjNDI5OTRjZTdlZTI0NWY3MDg2MzFhNmNjODNkZjcx
YTVlLi4xMDRhZGE4ODE1ZDQ5MTVjYmMyOTY4MGM1YjIzZTdhNmUyZDc4YzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTI3Nyw2ICsyNzcsMTMgQEAgdm9pZCBQYWdlRE9NRGVidWdn
ZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogICAgIG1fZG9tTm9kZVJlbW92
ZWRCcmVha3BvaW50cy5yZW1vdmVJZihub2RlQ29udGFpbnNCcmVha3BvaW50T3duZXIpOwogfQog
Cit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYgbm9k
ZSkKK3sKKyAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gR0MuCisgICAg
Ly8gRE9NIE5vZGUgZGVzdHJ1Y3Rpb24gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgaWYgdGhlIG5vZGUg
d2FzIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHRyZWUuCisgICAgZGlkUmVtb3ZlRE9NTm9kZShub2Rl
KTsKK30KKwogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIoRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNB
Y3RpdmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggZDg3MjgyOTI1ZWM2OTMxMGUwYmMw
ZTc4ODNjZGNhNTA4ZDEwMzUyMi4uYjgxYjViMzE1ZDc2Y2NlNjJiM2RlNDFmNzNiNWNhZjUzODJj
Y2JiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KTsKICAgICB2b2lkIHdpbGxS
ZW1vdmVET01Ob2RlKE5vZGUmKTsKICAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYpOwor
ICAgIHZvaWQgd2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmKTsKICAgICB2b2lkIHdpbGxNb2RpZnlE
T01BdHRyKEVsZW1lbnQmKTsKICAgICB2b2lkIHdpbGxJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1l
bnQmKTsKICAgICB2b2lkIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01N
YW5hZ2VyLmpzCmluZGV4IDcwYjhmZDg5YTAwYjhhZjkwMmYxOTYyYjNjMWRjM2Q0N2U2NWFiYzYu
LjgwMDljZTgxY2U4YjFkMjc3NzMxYzg3M2NiMzNkZjE1NTk0ZDgyZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RE9NTWFuYWdlci5qcwpAQCAtMTg1LDYgKzE4NSwxNSBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3Mg
RE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gRE9NT2JzZXJ2ZXIKIAorICAg
IHdpbGxEZXN0cm95RE9NTm9kZShub2RlSWQpCisgICAgeworICAgICAgICBsZXQgbm9kZSA9IHRo
aXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIG5vZGUubWFya0Rlc3Ryb3llZCgpOwor
ICAgICAgICBkZWxldGUgdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVk
LCB7bm9kZX0pOworICAgIH0KKwogICAgIGRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKQogICAg
IHsKICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2Jz
ZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9E
T01PYnNlcnZlci5qcwppbmRleCA2NGY5YTEyYzYzY2QxYTQwYTgwZDIzZmMyNzc2Zjk4YTRiYjAz
NDZlLi4xZWE5YzI0NzU4YjlhNDVjZjNlMjk0ZjNmZDA0NjMyNGFmZjQyZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9E
T01PYnNlcnZlci5qcwpAQCAtNzcsNiArNzcsMTEgQEAgV0kuRE9NT2JzZXJ2ZXIgPSBjbGFzcyBE
T01PYnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgogICAgICAgICBX
SS5kb21NYW5hZ2VyLl9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKTsKICAg
ICB9CiAKKyAgICB3aWxsRGVzdHJveURPTU5vZGUobm9kZUlkKQorICAgIHsKKyAgICAgICAgV0ku
ZG9tTWFuYWdlci53aWxsRGVzdHJveURPTU5vZGUobm9kZUlkKTsKKyAgICB9CisKICAgICBzaGFk
b3dSb290UHVzaGVkKGhvc3RJZCwgcm9vdCkKICAgICB7CiAgICAgICAgIFdJLmRvbU1hbmFnZXIu
X2NoaWxkTm9kZUluc2VydGVkKGhvc3RJZCwgMCwgcm9vdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpz
CmluZGV4IDEwZjkyMjkwZjFlMTZhNTg5Y2U0YTdjOGJlNDNlOTlkMmU4NmQ0ZDguLjZjMGFlOGEx
NmY5NDM2ZWM2YjJlZmJmZjJhYjQ4MjhiMzIxYjgxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpz
CkBAIC0xMDMsNyArMTAzLDExIEBAIFdJLkRPTVRyZWVVcGRhdGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgIF9ub2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9y
ZWNlbnRseURlbGV0ZWROb2Rlcy5zZXQoZXZlbnQuZGF0YS5ub2RlLCB7cGFyZW50OiBldmVudC5k
YXRhLnBhcmVudH0pOworICAgICAgICBsZXQgcGFyZW50ID0gZXZlbnQuZGF0YS5wYXJlbnQ7Cisg
ICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
X3JlY2VudGx5RGVsZXRlZE5vZGVzLnNldChldmVudC5kYXRhLm5vZGUsIHtwYXJlbnR9KTsKICAg
ICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7CiAgICAgfSwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAyYTcyMWUyYjczNzU1MTQ5ZjZiMzUwMTMwNTQ0YWZiOWIxOTM5Mjg1Li44ZDU3YTYyOTMx
YjkyMjgxODRiZTUzNjc2NDU1MjE2N2JkNWUxZGQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMDYtMTAgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEFkZCBpbnN0cnVtZW50YXRpb24gdG8gbm9kZSBkZXN0cnVjdGlvbiBmb3Ig
SW5zcGVjdG9yRE9NQWdlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS5odG1s
OiBBZGRlZC4KKwogMjAyMS0wNi0wMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgU3VwcG9ydCBjYWxjKCkgb24gY29tcG9uZW50cyBpbnNpZGUgcmVsYXRpdmUgY29s
b3Igc3ludGF4IGNvbG9ycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS93
aWxsRGVzdHJveURPTU5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS93aWxsRGVzdHJveURPTU5vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxMjhlNjQ1Mjk2
NGEzMTk1ZGUwNzhiZjYwMGY0MTY3NTM4NzBkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGVzdCBmb3IgRE9NLndpbGxEZXN0cm95RE9NTm9kZS4KKworCis9PSBSdW5u
aW5nIHRlc3Qgc3VpdGU6IERPTS53aWxsRGVzdHJveURPTU5vZGUKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBET00ud2lsbERlc3Ryb3lET01Ob2RlLkNyZWF0ZURlbGV0ZUFuZEdDRGV0YWNoZWROb2Rl
CitDcmVhdGluZyBuZXcgZGV0YWNoZWQgRE9NIG5vZGUuCitSZXF1ZXN0aW5nIERPTSBub2RlIGlu
IG9yZGVyIHRvIHJlY2VpdmUgZnV0dXJlIGV2ZW50cy4KK1JlbGVhc2luZyBub2RlIGFuZCB0aGVu
IHRyaWdnZXJpbmcgZ2FyYmFnZSBjb2xsZWN0aW9uIHdoaWxlIGF3YWl0aW5nIGBET00ud2lsbERl
c3Ryb3lET01Ob2RlYCBldmVudC4KK1JlY2VpdmVkIGV2ZW50IGBET00ud2lsbERlc3RvcnlET01O
b2RlYCBhZnRlciBnYXJiYWdlIGNvbGxlY3Rpb24uCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2OGM5YjBkMGEw
ZTNjNzdiMmMwYmJjYjNiMWU4ODQ4ZDU4NTgxYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS5odG1sCkBAIC0wLDAgKzEsNDcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gUHJvdG9jb2xU
ZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTS53aWxsRGVzdHJveURPTU5vZGUiKTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS53aWxsRGVzdHJveURPTU5vZGUu
Q3JlYXRlRGVsZXRlQW5kR0NEZXRhY2hlZE5vZGUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNy
ZWF0ZSBhIG5ldyBET00gbm9kZSB0aGF0IGlzIG5vdCBhdHRhY2hlZCB0aGUgRE9NIHRyZWUsIGFu
ZCB0aGVuIGFsbG93IGl0IHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkLiIsCisgICAgICAgIGFzeW5j
IHRlc3QoKSB7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJDcmVhdGluZyBuZXcgZGV0
YWNoZWQgRE9NIG5vZGUuIik7CisgICAgICAgICAgICBsZXQgZG9tTm9kZVJlc3BvbnNlID0gYXdh
aXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHsgbWV0aG9kOiAiUnVudGltZS5ldmFs
dWF0ZSIsIHBhcmFtczogeyBleHByZXNzaW9uOiBgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIp
YCB9IH0pOworICAgICAgICAgICAgbGV0IG9iamVjdElkID0gZG9tTm9kZVJlc3BvbnNlLnJlc3Vs
dC5vYmplY3RJZDsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5hc3NlcnQoIWRvbU5vZGVSZXNw
b25zZS53YXNUaHJvd24pOworCisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJSZXF1ZXN0
aW5nIERPTSBub2RlIGluIG9yZGVyIHRvIHJlY2VpdmUgZnV0dXJlIGV2ZW50cy4iKTsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEzNDk5PiBXZWIgSW5zcGVj
dG9yOiBhbGxvdyBET00gbm9kZXMgdG8gYmUgaW5zdHJ1bWVudGVkIGF0IGFueSBwb2ludCwgcmVn
YXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBtYWluIGRvY3VtZW50IGhhcyBhbHNvIGJlZW4gaW5zdHJ1
bWVudGVkCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQo
eyBtZXRob2Q6ICJET00uZ2V0RG9jdW1lbnQifSk7CisgICAgICAgICAgICBsZXQgbm9kZSA9IGF3
YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7IG1ldGhvZDogIkRPTS5yZXF1ZXN0
Tm9kZSIsIHBhcmFtczogeyBvYmplY3RJZCB9IH0pOworCisgICAgICAgICAgICAvLyBQcm90b2Nv
bFRlc3QubG9nKCJSZWxlYXNpbmcgcmVmZXJlbmNlIHRvIG5vZGUgaGVsZCBieSByZW1vdGUgb2Jq
ZWN0LiIpCisgICAgICAgICAgICAvLyBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1h
bmQoeyBtZXRob2Q6ICJDb25zb2xlLmNsZWFyTWVzc2FnZXMiIH0pOworCisgICAgICAgICAgICBQ
cm90b2NvbFRlc3QubG9nKCJSZWxlYXNpbmcgbm9kZSBhbmQgdGhlbiB0cmlnZ2VyaW5nIGdhcmJh
Z2UgY29sbGVjdGlvbiB3aGlsZSBhd2FpdGluZyBgRE9NLndpbGxEZXN0cm95RE9NTm9kZWAgZXZl
bnQuIik7CisgICAgICAgICAgICBsZXQgZGVsZXRlTm9kZVByb21pc2UgPSBJbnNwZWN0b3JQcm90
b2NvbC5hd2FpdENvbW1hbmQoeyBtZXRob2Q6ICJSdW50aW1lLnJlbGVhc2VPYmplY3QiLCBwYXJh
bXM6IHsgb2JqZWN0SWQgfSB9KTsKKyAgICAgICAgICAgIGxldCBnY1Byb21pc2UgPSBQcm90b2Nv
bFRlc3QuZXZhbHVhdGVJblBhZ2UoYEdDQ29udHJvbGxlci5jb2xsZWN0KClgKTsKKworICAgICAg
ICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3Rv
Y29sLmF3YWl0RXZlbnQoe2V2ZW50OiJET00ud2lsbERlc3Ryb3lET01Ob2RlIn0pLAorICAgICAg
ICAgICAgICAgIGRlbGV0ZU5vZGVQcm9taXNlLnRoZW4oKHJlc29sdmUpID0+IGdjUHJvbWlzZSks
CisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUmVjZWl2
ZWQgZXZlbnQgYERPTS53aWxsRGVzdG9yeURPTU5vZGVgIGFmdGVyIGdhcmJhZ2UgY29sbGVjdGlv
bi4iKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsi
PgorPHA+VGVzdCBmb3IgRE9NLndpbGxEZXN0cm95RE9NTm9kZS48L3A+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="452833"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431155</attachid>
            <date>2021-06-10 16:06:39 -0700</date>
            <delta_ts>2021-06-10 20:28:21 -0700</delta_ts>
            <desc>Patch v2.1 - Add missing forward declaration</desc>
            <filename>bug-226624-20210610160638.patch</filename>
            <type>text/plain</type>
            <size>47257</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi5jMzUzZGU3OGY5NzU1NGMz
Njg4NTY2ODhiMGE3NTM1NjQwZmJmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBgRE9NLndpbGxEZXN0cm95RE9NTm9kZWAg
ZXZlbnQgdG8gaW5mb3JtIHRoZSBmcm9udGVuZCBvZiBET00gbm9kZXMgdGhhdCBubyBsb25nZXIg
ZXhpc3QsIGV2ZW4gaWYgdGhleQorICAgICAgICB3ZXJlbid0IGluIHRoZSBET00gdHJlZS4gVGhp
cyB3b3JrIHNlcnZlcyBhcyBhIHByZWx1ZGUgdG8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTY4
Nz4gKFdlYiBJbnNwZWN0b3I6IHByZXNlcnZlCisgICAgICAgIERPTS5Ob2RlSWQgaWYgYSBub2Rl
IGlzIHJlbW92ZWQgYW5kIHJlLWFkZGVkKSB0byBldmVudHVhbGx5IG9ubHkgZm9yZ2V0IGFib3V0
IG5vZGVzIHVwb24gZGVzdHJ1Y3Rpb24sIGluc3RlYWQgb2YKKyAgICAgICAgcmVtb3ZhbCBmcm9t
IHRoZSBET00gdHJlZS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoK
KwogMjAyMS0wNi0wMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXUEVdW0dUS10gU3VwcG9ydCBidWlsZGluZyBhZ2FpbnN0IHVDbGliYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDk2MGZiMmRmY2MyZTI0YjUyNTI4ZmExMWYxOGQ2Njk1NTc5YzU1MTQuLjAx
Y2MyOWQ1ODBkNzdjNmY4OGM5ZGI3ZTdjNzMyZGRhN2FmMjhlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURP
TU5vZGUuaHRtbAorCisgICAgICAgIEFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGRlc3RydWN0aW9u
IG9mIG5vZGVzIGluIG9yZGVyIHRvIGNlYXNlIGluc3RydW1lbnRpbmcgbm9kZXMgYW5kIGluZm9y
bSB0aGUgZnJvbnRlbmQgdGhhdAorICAgICAgICB0aGUgbm9kZSBubyBsb25nZXIgZXhpc3RzLiBU
aGlzIHdvcmsgc2VydmVzIGFzIGEgcHJlbHVkZSB0byA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg5
Njg3PiAoV2ViIEluc3BlY3RvcjoKKyAgICAgICAgcHJlc2VydmUgRE9NLk5vZGVJZCBpZiBhIG5v
ZGUgaXMgcmVtb3ZlZCBhbmQgcmUtYWRkZWQpIHRvIGV2ZW50dWFsbHkgb25seSBmb3JnZXQgYWJv
dXQgbm9kZXMgdXBvbiBkZXN0cnVjdGlvbiwKKyAgICAgICAgaW5zdGVhZCBvZiByZW1vdmFsIGZy
b20gdGhlIERPTSB0cmVlLiBBZGRpdGlvbmFsbHksIHRoZSBzdG9yYWdlIG9mIG5vZGVzIGlzIHNp
bXBsaWZpZWQgZG93biB0byB0d28gaW52ZXJzZSBtYXBzLAorICAgICAgICBvbmUgdGhhdCBtYXBz
IGBOb2RlYCB0byBgTm9kZUlkYCwgYW5kIGFub3RoZXIgdGhhdCBtYXBzIGBOb2RlSWRgIHRvIGBO
b2RlYC4gVGhlc2UgYXJlIGtlcHQgaW4gc3luYyB0aHJvdWdob3V0LAorICAgICAgICBhbmQgYm90
aCBhdHRhY2hlZCBhbmQgZGV0YWNoZWQgbm9kZXMgYXJlIG5vdyBoYW5kbGVkIGFzIHBhcnQgb2Yg
dGhlc2UgdHdvIG1hcHMgb2YgTm9kZXMuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpiaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Ym91bmROb2RlSWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZGVzdHJveWVkTm9kZXNUaW1lckZpcmVkKToKKyAgICAgICAgLSBBZGRlZCBpbnN0
cnVtZW50YXRpb24gcG9pbnQgZm9yIERPTSBub2RlcyBiZWluZyBkZXN0cm95ZWQgc28gdGhleSBj
YW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhZ2VudCwgYW5kIHRoZQorICAgICAgICBmcm9udGVuZCBj
YW4gYWxzbyBiZSBpbmZvcm1lZCBvZiB0aGVpciBjZWFzaW5nIHRvIGV4aXN0LgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUHVzaFNoYWRvd1Jvb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxQb3BTaGFkb3dSb290
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDaGFuZ2VDdXN0b21F
bGVtZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBzZXVk
b0VsZW1lbnRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
c2V1ZG9FbGVtZW50RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpyZWxlYXNlRGFuZ2xpbmdOb2Rlcyk6IERlbGV0ZWQuCisgICAgICAgIC0gUmVtb3ZlZCB1
c2FnZSBvZiBOb2RlVG9JZE1hcCBhbmQgbmVzdGVkIG1hcHMgb2Ygbm9kZXMgdGhyb3VnaG91dCBp
biBmYXZvciBvZiB0d28gaW52ZXJzZSBtYXBzIGZvciByZWxhdGluZworICAgICAgICBgTm9kZWBz
IGFuZCBgTm9kZUlkYHMuIEJlY2F1c2UgdGhlcmUgaXMgbm93IGEgc2luZ2xlIHNldCBvZiBjYW5v
bmljYWwgbm9kZSBtYXBzLCB3ZSBubyBsb25nZXIgdG8gdG8gcGFzcyBhCisgICAgICAgIE5vZGVU
b0lkTWFwIHRocm91Z2hvdXQgdGhlIGFnZW50LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjpQ
YWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQWdlbnQ6OmNs
ZWFyTWVzc2FnZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29s
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxs
RGVzdHJveURPTU5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5oOgorCiAyMDIxLTA2LTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGR1cGxpY2F0ZSAiYmVoYXZpb3IgZm9yIGZp
eGVkIiBlbnRyeSBmcm9tIHNjcm9sbGluZyBzdGF0ZSB0cmVlIGxvZ2dpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDNjNjE3NzMxMmVmNjk2ZmI2MmJhODkyOGIxZjRmNGNmODEzNGRjYzAu
LjgxMjMzYzNiNjFhZTRhOTdiMjNkNDRhN2I3ODkyNmMyYWJmOGFkYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTEwICBQYXRyaWNrIEFuZ2xlICA8
cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgaW5zdHJ1bWVu
dGF0aW9uIHRvIG5vZGUgZGVzdHJ1Y3Rpb24gZm9yIEluc3BlY3RvckRPTUFnZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaXN0ZW4gZm9yIHRoZSBu
ZXcgYERPTS53aWxsRGVzdHJveURPTU5vZGVgIGV2ZW50IGluIG9yZGVyIHRvIGNsZWFudXAgYW5k
IHJlbWFpbmluZyByZWZlcmVuY2VzIHRvIHRoYXQgTm9kZS4KKyAgICAgICAgVGhpcyB3b3JrIHNl
cnZlcyBhcyBhIHByZWx1ZGUgdG8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTY4Nz4gKFdlYiBJ
bnNwZWN0b3I6IHByZXNlcnZlIERPTS5Ob2RlSWQgaWYgYSBub2RlIGlzCisgICAgICAgIHJlbW92
ZWQgYW5kIHJlLWFkZGVkKSB0byBldmVudHVhbGx5IG9ubHkgZm9yZ2V0IGFib3V0IG5vZGVzIHVw
b24gZGVzdHJ1Y3Rpb24sIGluc3RlYWQgb2YgcmVtb3ZhbCBmcm9tIHRoZSBET00KKyAgICAgICAg
dHJlZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5q
czoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLndpbGxEZXN0cm95RE9NTm9kZSk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qczoKKyAgICAg
ICAgKFdJLkRPTU9ic2VydmVyLnByb3RvdHlwZS53aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanM6CisgICAgICAgIChXSS5E
T01UcmVlVXBkYXRlci5wcm90b3R5cGUuX25vZGVSZW1vdmVkKToKKwogMjAyMS0wNS0xNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNyZWF0ZUNvbmljR3JhZGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCmluZGV4IDE2MjBjMDAz
ZjA3NmVlZTMxZGRjOGJlNjlhODRlNDk5NTI5OTg5MmEuLjNhOTFhYzZiNTdmYWQ3ZjQ3MmRhYTJl
MjEwN2IzYjQ4M2RlNzAxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtNjc4LDYgKzY3OCwxMyBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjog
IklkIG9mIHRoZSBub2RlIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAid2lsbERlc3Ryb3lE
T01Ob2RlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIGEgZGV0YWNo
ZWQgRE9NIG5vZGUgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiBDdXJyZW50bHksIHRoaXMgZXZl
bnQgd2lsbCBvbmx5IGJlIGZpcmVkIHdoZW4gYSBET00gbm9kZSB0aGF0IGlzIGRldGFjaGVkIGlz
IGFib3V0IHRvIGJlIGRlc3RydWN0ZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRl
c2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRoYXQgd2lsbCBiZSBkZXN0cm95ZWQuIiB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
InNoYWRvd1Jvb3RQdXNoZWQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhbGxlZCB3
aGVuIHNoYWRvdyByb290IGlzIHB1c2hlZCBpbnRvIHRoZSBlbGVtZW50LiIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggZmRhYmNkM2U3Yjg5MmU1MDFkODc5NDMyYWM0NmMzZDcxM2Y4ZWIwMC4uMTlkNWFk
Nzg1ZDkxYjU0ODcxZWY0N2NlN2E5Mzg0ZDNhMDMyYzNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
MzQ5LDYgKzM0OSw4IEBAIE5vZGU6On5Ob2RlKCkKICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0Jl
Z3VuKTsKICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIAorICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlKCp0aGlzKTsKKwogI2lmbmRlZiBO
REVCVUcKICAgICBpZiAoIWlnbm9yZVNldCgpLnJlbW92ZSgqdGhpcykpCiAgICAgICAgIG5vZGVD
b3VudGVyLmRlY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYjk2NTY5MTg2MmQ1ZDAyNjZhNGQy
YWMwMmM3ZGZkYzAzN2Q2ZjEyNS4uOTFlNzJjMDU1ZGRkNDQ0MGVlNWFjMDdiMDAzNDYwZDhmYjgx
MjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGbG9hdFBvaW50OwogY2xhc3MgSFRNTFF1YWxpZmllZE5hbWU7CiBjbGFzcyBIVE1MU2xvdEVs
ZW1lbnQ7CitjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBNYXRoTUxRdWFs
aWZpZWROYW1lOwogY2xhc3MgTmFtZWROb2RlTWFwOwogY2xhc3MgTm9kZUxpc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IDIxOGNlNGI5NDdjNDI1NDdlYzRmOWNmOWU4NTE3YTVkYzM1MmM0YzQuLmE2MGQ0NjQz
NDRmZDkwMTQwMjg4YTBhY2NlNWIzOWIxMTE0NDE0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xNzYsNiAr
MTc2LDE0IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2Rl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIGRvbUFnZW50LT5kaWRS
ZW1vdmVET01Ob2RlKG5vZGUpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERlc3Ryb3lET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBOb2RlJiBub2RlKQoreworICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCisg
ICAgICAgIHBhZ2VET01EZWJ1Z2dlckFnZW50LT53aWxsRGVzdHJveURPTU5vZGUobm9kZSk7Cisg
ICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9N
QWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPndpbGxEZXN0cm95RE9NTm9kZShub2RlKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5vZGVMYXlvdXRDb250ZXh0Q2hhbmdl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgbm9k
ZSwgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlcikKIHsKICAgICBpZiAoYXV0byogY3NzQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhmMDQw
NDQ0YmIxODNkMTYyYzYwZjZmZDQ3NTJiZWNkOWNlNmFiOTkuLmNlMTAxMTljODYxY2FiOTU0ZWVj
MzdjNDhlOTE5N2MzMjM0MGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShEb2N1bWVudCYsIE5vZGUmKTsKICAg
ICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShEb2N1bWVudCYsIE5vZGUmKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRSZW1vdmVET01Ob2RlKERvY3VtZW50JiwgTm9kZSYpOworICAgIHN0YXRp
YyB2b2lkIHdpbGxEZXN0cm95RE9NTm9kZShOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgbm9kZUxh
eW91dENvbnRleHRDaGFuZ2VkKE5vZGUmLCBSZW5kZXJPYmplY3QqKTsKICAgICBzdGF0aWMgdm9p
ZCB3aWxsTW9kaWZ5RE9NQXR0cihEb2N1bWVudCYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpOwogICAgIHN0YXRpYyB2b2lk
IGRpZE1vZGlmeURPTUF0dHIoRG9jdW1lbnQmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpOwpAQCAtMzUwLDYgKzM1MSw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIE5vZGUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIE5vZGUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVET01O
b2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOworICAgIHN0YXRpYyB2b2lkIHdp
bGxEZXN0cm95RE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIE5vZGUmKTsKICAgICBz
dGF0aWMgdm9pZCBub2RlTGF5b3V0Q29udGV4dENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBOb2RlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURP
TUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgY29uc3QgQXRvbVN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYsIGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKQEAgLTYwMSw2
ICs2MDMsMTMgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1v
dmVET01Ob2RlKERvY3VtZW50JiBkb2N1bWVudCwgTm9kZSYKICAgICAgICAgZGlkUmVtb3ZlRE9N
Tm9kZUltcGwoKmFnZW50cywgbm9kZSk7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmIG5vZGUpCit7CisgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMobm9kZS5kb2N1bWVudCgpKSkKKyAgICAgICAgd2lsbERlc3Ryb3lE
T01Ob2RlSW1wbCgqYWdlbnRzLCBub2RlKTsKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpub2RlTGF5b3V0Q29udGV4dENoYW5nZWQoTm9kZSYgbm9kZSwgUmVuZGVy
T2JqZWN0KiBuZXdSZW5kZXJlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMDRjMTc1NzJmZjY1NmYyMjJhMTMxZTgwYTk3MzEzZWRi
NTMyMWY0ZS4uNmFmYjJhMWEyMjQ2MmM4ZDY0NTAyZWNiZmVhMzU0N2ExNjVkZDJjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKQEAgLTExNjAsNiArMTE2MCw3IEBAIFJlZlB0cjxQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlCiAKIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSwgUHJvdG9j
b2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCkKIHsKKyAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgaW4g
cmVzcG9uc2UgdG8gR0MuCiAgICAgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLnJlbW92ZShu
b2RlSWQpOwogCiAgICAgYXV0byBzaGVldCA9IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC50
YWtlKCZub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZDQ2MmVmYzMwNmEyOTliNThlNzhjNWQ5NGU2ZTg3
NTdlMTczNGQ4Mi4uZjE2MTU5ZTg1YzIwZTFlZDRlNzA3ZTMzNmI2YTgxNDBlMWUyMWQ1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9y
RE9NQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yT3ZlcmxheQogICAg
ICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3Rl
ZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCisg
ICAgLCBtX2Rlc3Ryb3llZE5vZGVzVGltZXIoKnRoaXMsICZJbnNwZWN0b3JET01BZ2VudDo6ZGVz
dHJveWVkTm9kZXNUaW1lckZpcmVkKQogI2lmIEVOQUJMRShWSURFTykKICAgICAsIG1fbWVkaWFN
ZXRyaWNzVGltZXIoKnRoaXMsICZJbnNwZWN0b3JET01BZ2VudDo6bWVkaWFNZXRyaWNzVGltZXJG
aXJlZCkKICNlbmRpZgpAQCAtMzU0LDYgKzM1NSwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpyZXNldCgpCiAgICAgaWYgKG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2spCiAgICAgICAgIG1f
cmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnJlc2V0KCk7CiAgICAgbV9kb2N1bWVudCA9IG51bGxw
dHI7CisKKyAgICBtX2Rlc3Ryb3llZERldGFjaGVkTm9kZUlkZW50aWZpZXJzLmNsZWFyKCk7Cisg
ICAgbV9kZXN0cm95ZWROb2RlSWRlbnRpZmllcnMuY2xlYXIoKTsKKyAgICBpZiAobV9kZXN0cm95
ZWROb2Rlc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZGVzdHJveWVkTm9kZXNUaW1lci5z
dG9wKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERvY3VtZW50KERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTM3MywyNiArMzc5LDIwIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmRvY3VtZW50VXBkYXRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojpy
ZWxlYXNlRGFuZ2xpbmdOb2RlcygpCi17Ci0gICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5jbGVh
cigpOwotfQotCi1Qcm90b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJpbmQo
Tm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUHJvdG9jb2w6OkRPTTo6Tm9kZUlk
IEluc3BlY3RvckRPTUFnZW50OjpiaW5kKE5vZGUqIG5vZGUpCiB7Ci0gICAgYXV0byBpZCA9IG5v
ZGVzTWFwLT5nZXQobm9kZSk7CisgICAgYXV0byBpZCA9IG1fbm9kZVRvSWQuZ2V0KG5vZGUpOwog
ICAgIGlmIChpZCkKICAgICAgICAgcmV0dXJuIGlkOwogICAgIGlkID0gbV9sYXN0Tm9kZUlkKys7
Ci0gICAgbm9kZXNNYXAtPnNldChub2RlLCBpZCk7CiAgICAgbV9pZFRvTm9kZS5zZXQoaWQsIG5v
ZGUpOwotICAgIG1faWRUb05vZGVzTWFwLnNldChpZCwgbm9kZXNNYXApOworICAgIG1fbm9kZVRv
SWQuc2V0KG5vZGUsIGlkKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCit2b2lkIElu
c3BlY3RvckRPTUFnZW50Ojp1bmJpbmQoTm9kZSogbm9kZSkKIHsKLSAgICBhdXRvIGlkID0gbm9k
ZXNNYXAtPmdldChub2RlKTsKKyAgICBhdXRvIGlkID0gbV9ub2RlVG9JZC5nZXQobm9kZSk7CiAg
ICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MDEsMjAgKzQwMSwyMCBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5vZGVz
TWFwKQogICAgIGlmIChub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgY29u
c3QgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBmcmFtZU93bmVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIGlmIChEb2N1bWVudCogY29u
dGVudERvY3VtZW50ID0gZnJhbWVPd25lci0+Y29udGVudERvY3VtZW50KCkpCi0gICAgICAgICAg
ICB1bmJpbmQoY29udGVudERvY3VtZW50LCBub2Rlc01hcCk7CisgICAgICAgICAgICB1bmJpbmQo
Y29udGVudERvY3VtZW50KTsKICAgICB9CiAKICAgICBpZiAoaXM8RWxlbWVudD4oKm5vZGUpKSB7
CiAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAg
ICAgICAgIGlmIChTaGFkb3dSb290KiByb290ID0gZWxlbWVudC5zaGFkb3dSb290KCkpCi0gICAg
ICAgICAgICB1bmJpbmQocm9vdCwgbm9kZXNNYXApOworICAgICAgICAgICAgdW5iaW5kKHJvb3Qp
OwogICAgICAgICBpZiAoUHNldWRvRWxlbWVudCogYmVmb3JlRWxlbWVudCA9IGVsZW1lbnQuYmVm
b3JlUHNldWRvRWxlbWVudCgpKQotICAgICAgICAgICAgdW5iaW5kKGJlZm9yZUVsZW1lbnQsIG5v
ZGVzTWFwKTsKKyAgICAgICAgICAgIHVuYmluZChiZWZvcmVFbGVtZW50KTsKICAgICAgICAgaWYg
KFBzZXVkb0VsZW1lbnQqIGFmdGVyRWxlbWVudCA9IGVsZW1lbnQuYWZ0ZXJQc2V1ZG9FbGVtZW50
KCkpCi0gICAgICAgICAgICB1bmJpbmQoYWZ0ZXJFbGVtZW50LCBub2Rlc01hcCk7CisgICAgICAg
ICAgICB1bmJpbmQoYWZ0ZXJFbGVtZW50KTsKICAgICB9CiAKLSAgICBub2Rlc01hcC0+cmVtb3Zl
KG5vZGUpOworICAgIG1fbm9kZVRvSWQucmVtb3ZlKG5vZGUpOwogCiAgICAgaWYgKGF1dG8qIGNz
c0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQogICAgICAg
ICBjc3NBZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZSgqbm9kZSwgaWQpOwpAQCAtNDIyLDcgKzQyMiw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1h
cCogbm9kZXNNYXApCiAgICAgaWYgKG1fY2hpbGRyZW5SZXF1ZXN0ZWQucmVtb3ZlKGlkKSkgewog
ICAgICAgICAvLyBGSVhNRTogV291bGQgYmUgYmV0dGVyIHRvIGRvIHRoaXMgaXRlcmF0aXZlbHkg
cmF0aGVyIHRoYW4gcmVjdXJzaXZlbHkuCiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBpbm5l
ckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGlsZCA9IGlubmVyTmV4dFNpYmxpbmcoY2hpbGQp
KQotICAgICAgICAgICAgdW5iaW5kKGNoaWxkLCBub2Rlc01hcCk7CisgICAgICAgICAgICB1bmJp
bmQoY2hpbGQpOwogICAgIH0KIH0KIApAQCAtNTAwLDcgKzUwMCw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dERvY3VtZW50CiAgICAgcmVzZXQoKTsKICAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CiAKLSAg
ICBhdXRvIHJvb3QgPSBidWlsZE9iamVjdEZvck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMiwgJm1f
ZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgYXV0byByb290ID0gYnVpbGRPYmplY3RGb3JOb2Rl
KG1fZG9jdW1lbnQuZ2V0KCksIDIpOwogCiAgICAgaWYgKG1fbm9kZVRvRm9jdXMpCiAgICAgICAg
IGZvY3VzTm9kZSgpOwpAQCAtNTE0LDggKzUxNCw2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBp
CiAgICAgaWYgKCFub2RlIHx8IChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkVMRU1FTlRfTk9E
RSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUgJiYgbm9kZS0+bm9k
ZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTm9kZVRvSWRNYXAqIG5vZGVNYXAgPSBtX2lkVG9Ob2Rlc01hcC5nZXQobm9kZUlk
KTsKLQogICAgIGlmIChtX2NoaWxkcmVuUmVxdWVzdGVkLmNvbnRhaW5zKG5vZGVJZCkpIHsKICAg
ICAgICAgaWYgKGRlcHRoIDw9IDEpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01MjMsNyArNTIx
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKFBy
b3RvY29sOjpET006Ok5vZGVJZCBub2RlSWQsIGkKICAgICAgICAgZGVwdGgtLTsKIAogICAgICAg
ICBmb3IgKG5vZGUgPSBpbm5lckZpcnN0Q2hpbGQobm9kZSk7IG5vZGU7IG5vZGUgPSBpbm5lck5l
eHRTaWJsaW5nKG5vZGUpKSB7Ci0gICAgICAgICAgICBhdXRvIGNoaWxkTm9kZUlkID0gbm9kZU1h
cC0+Z2V0KG5vZGUpOworICAgICAgICAgICAgYXV0byBjaGlsZE5vZGVJZCA9IG1fbm9kZVRvSWQu
Z2V0KG5vZGUpOwogICAgICAgICAgICAgQVNTRVJUKGNoaWxkTm9kZUlkKTsKICAgICAgICAgICAg
IHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChjaGlsZE5vZGVJZCwgZGVwdGgpOwogICAgICAgICB9
CkBAIC01MzEsMTcgKzUyOSwxNiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGRO
b2Rlc1RvRnJvbnRlbmQoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgaQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWlu
ZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZU1hcCk7CisgICAgYXV0byBjaGlsZHJlbiA9IGJ1
aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCk7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlkLCBXVEZNb3ZlKGNoaWxkcmVuKSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCiB7Ci0gICAgbV9k
b2N1bWVudE5vZGVUb0lkTWFwLmNsZWFyKCk7CisgICAgbV9ub2RlVG9JZC5jbGVhcigpOwogICAg
IG1faWRUb05vZGUuY2xlYXIoKTsKICAgICBtX2Rpc3BhdGNoZWRFdmVudHMuY2xlYXIoKTsKICAg
ICBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLmNsZWFyKCk7Ci0gICAgcmVsZWFzZURhbmdsaW5nTm9k
ZXMoKTsKICAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLmNsZWFyKCk7CiB9CiAKQEAgLTY1NCw1MSAr
NjUxLDQ1IEBAIFByb3RvY29sOjpET006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChQcm90b2NvbDo6RXJyb3JTCiAgICAgfQogCiAgICAgLy8gRklYTUU6
IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTM0OTk+IFdlYiBJbnNwZWN0b3I6IGFsbG93IERPTSBu
b2RlcyB0byBiZSBpbnN0cnVtZW50ZWQgYXQgYW55IHBvaW50LCByZWdhcmRsZXNzIG9mIHdoZXRo
ZXIgdGhlIG1haW4gZG9jdW1lbnQgaGFzIGFsc28gYmVlbiBpbnN0cnVtZW50ZWQKLSAgICBpZiAo
IW1fZG9jdW1lbnROb2RlVG9JZE1hcC5jb250YWlucyhtX2RvY3VtZW50KSkgeworICAgIGlmICgh
bV9ub2RlVG9JZC5jb250YWlucyhtX2RvY3VtZW50LmdldCgpKSkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJEb2N1bWVudCBtdXN0IGhhdmUgYmVlbiByZXF1ZXN0ZWQiX3M7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAogICAgIC8vIFJldHVybiBpZCBpbiBjYXNlIHRoZSBub2RlIGlzIGtu
b3duLgotICAgIGlmIChhdXRvIHJlc3VsdCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9k
ZVRvUHVzaCkpCisgICAgaWYgKGF1dG8gcmVzdWx0ID0gbV9ub2RlVG9JZC5nZXQobm9kZVRvUHVz
aCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBOb2RlKiBub2RlID0gbm9kZVRvUHVz
aDsKICAgICBWZWN0b3I8Tm9kZSo+IHBhdGg7Ci0gICAgTm9kZVRvSWRNYXAqIGRhbmdsaW5nTWFw
ID0gMDsKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVy
UGFyZW50Tm9kZShub2RlKTsKICAgICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAgIC8v
IE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFjaGVkIC0+IHB1c2ggc3VidHJlZSByb290LgotICAg
ICAgICAgICAgYXV0byBuZXdNYXAgPSBtYWtlVW5pcXVlPE5vZGVUb0lkTWFwPigpOwotICAgICAg
ICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7Ci0gICAgICAgICAgICBtX2RhbmdsaW5n
Tm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGF1dG8g
Y2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsK
LSAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAw
LCBkYW5nbGluZ01hcCkpOworICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JOb2RlKG5vZGUsIDApKTsKICAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5z
ZXRDaGlsZE5vZGVzKDAsIFdURk1vdmUoY2hpbGRyZW4pKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGF0aC5hcHBlbmQocGFyZW50KTsKLSAgICAg
ICAgICAgIGlmIChtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCkpCisgICAgICAgICAg
ICBpZiAobV9ub2RlVG9JZC5nZXQocGFyZW50KSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub2RlID0gcGFyZW50OworICAgICAgICAg
ICAgbm9kZSA9IHBhcmVudDsKICAgICAgICAgfQogICAgIH0KIAotICAgIE5vZGVUb0lkTWFwKiBt
YXAgPSBkYW5nbGluZ01hcCA/IGRhbmdsaW5nTWFwIDogJm1fZG9jdW1lbnROb2RlVG9JZE1hcDsK
ICAgICBmb3IgKGludCBpID0gcGF0aC5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAg
ICBhdXRvIG5vZGVJZCA9IG1hcC0+Z2V0KHBhdGguYXQoaSkpOworICAgICAgICBhdXRvIG5vZGVJ
ZCA9IG1fbm9kZVRvSWQuZ2V0KHBhdGguYXQoaSkpOwogICAgICAgICBBU1NFUlQobm9kZUlkKTsK
ICAgICAgICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKG5vZGVJZCk7CiAgICAgfQotICAgIHJl
dHVybiBtYXAtPmdldChub2RlVG9QdXNoKTsKKyAgICByZXR1cm4gbV9ub2RlVG9JZC5nZXQobm9k
ZVRvUHVzaCk7CiB9CiAKIFByb3RvY29sOjpET006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6
Ym91bmROb2RlSWQoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmdldChjb25zdF9jYXN0PE5vZGUqPihub2RlKSk7CisgICAgcmV0dXJuIG1fbm9k
ZVRvSWQuZ2V0KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKTsKIH0KIAogUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZVZhbHVlKFByb3Rv
Y29sOjpET006Ok5vZGVJZCBub2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKQEAgLTE3MTIsOSArMTcwMyw5IEBAIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUNvbnRl
bnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBy
ZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29kZWQoZGlnZXN0LmRhdGEoKSwg
ZGlnZXN0LnNpemUoKSkpOwogfQogCi1SZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZGVwdGgsIE5vZGVU
b0lkTWFwKiBub2Rlc01hcCkKK1JlZjxQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGludCBkZXB0aCkKIHsKLSAgICBh
dXRvIGlkID0gYmluZChub2RlLCBub2Rlc01hcCk7CisgICAgYXV0byBpZCA9IGJpbmQobm9kZSk7
CiAgICAgU3RyaW5nIG5vZGVOYW1lOwogICAgIFN0cmluZyBsb2NhbE5hbWU7CiAgICAgU3RyaW5n
IG5vZGVWYWx1ZTsKQEAgLTE3NTYsNyArMTc0Nyw3IEBAIFJlZjxQcm90b2NvbDo6RE9NOjpOb2Rl
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGludCBk
CiAgICAgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIGludCBub2RlQ291
bnQgPSBpbm5lckNoaWxkTm9kZUNvdW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0Q2hpbGRO
b2RlQ291bnQobm9kZUNvdW50KTsKLSAgICAgICAgYXV0byBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZXNNYXApOworICAgICAgICBhdXRv
IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoKTsK
ICAgICAgICAgaWYgKGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICB2YWx1ZS0+
c2V0Q2hpbGRyZW4oV1RGTW92ZShjaGlsZHJlbikpOwogICAgIH0KQEAgLTE3NzUsMTcgKzE3NjYs
MTcgQEAgUmVmPFByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGQKICAgICAgICAgdmFsdWUtPnNldEF0dHJpYnV0
ZXMoYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKCZlbGVtZW50KSk7CiAgICAgICAgIGlm
IChpczxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KGVsZW1lbnQp
LmNvbnRlbnREb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRDb250ZW50RG9j
dW1lbnQoYnVpbGRPYmplY3RGb3JOb2RlKGRvY3VtZW50LCAwLCBub2Rlc01hcCkpOworICAgICAg
ICAgICAgICAgIHZhbHVlLT5zZXRDb250ZW50RG9jdW1lbnQoYnVpbGRPYmplY3RGb3JOb2RlKGRv
Y3VtZW50LCAwKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9
IGVsZW1lbnQuc2hhZG93Um9vdCgpKSB7CiAgICAgICAgICAgICBhdXRvIHNoYWRvd1Jvb3RzID0g
SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7Ci0gICAgICAgICAg
ICBzaGFkb3dSb290cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUocm9vdCwgMCwgbm9kZXNN
YXApKTsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9k
ZShyb290LCAwKSk7CiAgICAgICAgICAgICB2YWx1ZS0+c2V0U2hhZG93Um9vdHMoV1RGTW92ZShz
aGFkb3dSb290cykpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVs
ZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICAgICAgdmFsdWUtPnNldFRlbXBsYXRlQ29udGVudChi
dWlsZE9iamVjdEZvck5vZGUoJmRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KGVsZW1lbnQp
LmNvbnRlbnQoKSwgMCwgbm9kZXNNYXApKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRUZW1wbGF0
ZUNvbnRlbnQoYnVpbGRPYmplY3RGb3JOb2RlKCZkb3duY2FzdDxIVE1MVGVtcGxhdGVFbGVtZW50
PihlbGVtZW50KS5jb250ZW50KCksIDApKTsKIAogICAgICAgICBpZiAoaXM8SFRNTFN0eWxlRWxl
bWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSAmJiAhZWxl
bWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0
cikpKQogICAgICAgICAgICAgdmFsdWUtPnNldENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2goY29t
cHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2goZWxlbWVudCkpOwpAQCAtMTc5OSw3
ICsxNzkwLDcgQEAgUmVmPFByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGQKICAgICAgICAgICAgIGlmIChwc2V1
ZG9FbGVtZW50VHlwZShlbGVtZW50LnBzZXVkb0lkKCksICZwc2V1ZG9UeXBlKSkKICAgICAgICAg
ICAgICAgICB2YWx1ZS0+c2V0UHNldWRvVHlwZShwc2V1ZG9UeXBlKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBzZXVkb0VsZW1lbnRzID0gYnVpbGRBcnJheUZvclBz
ZXVkb0VsZW1lbnRzKGVsZW1lbnQsIG5vZGVzTWFwKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBz
ZXVkb0VsZW1lbnRzID0gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGVsZW1lbnQpKQogICAg
ICAgICAgICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9FbGVtZW50cyhwc2V1ZG9FbGVtZW50cy5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaXM8RG9jdW1lbnQ+KCpu
b2RlKSkgewpAQCAtMTgzOSwzMSArMTgzMCwzMSBAQCBSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZQog
ICAgIHJldHVybiBhdHRyaWJ1dGVzVmFsdWU7CiB9CiAKLVJlZjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5l
ckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNN
YXApCitSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCkKIHsKICAgICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKGRlcHRoID09IDApIHsKICAgICAgICAgLy8g
U3BlY2lhbC1jYXNlIHRoZSBvbmx5IHRleHQgY2hpbGQgLSBwcmV0ZW5kIHRoYXQgY29udGFpbmVy
J3MgY2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZC4KICAgICAgICAgTm9kZSogZmlyc3RDaGls
ZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOwogICAgICAgICBpZiAoZmlyc3RDaGlsZCAmJiBm
aXJzdENoaWxkLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSAmJiAhZmlyc3RDaGlsZC0+
bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JOb2RlKGZpcnN0Q2hpbGQsIDAsIG5vZGVzTWFwKSk7Ci0gICAgICAgICAgICBtX2NoaWxk
cmVuUmVxdWVzdGVkLmFkZChiaW5kKGNvbnRhaW5lciwgbm9kZXNNYXApKTsKKyAgICAgICAgICAg
IGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShmaXJzdENoaWxkLCAwKSk7Cisg
ICAgICAgICAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLmFkZChiaW5kKGNvbnRhaW5lcikpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKICAgICB9CiAKICAgICBOb2RlKiBjaGls
ZCA9IGlubmVyRmlyc3RDaGlsZChjb250YWluZXIpOwogICAgIGRlcHRoLS07Ci0gICAgbV9jaGls
ZHJlblJlcXVlc3RlZC5hZGQoYmluZChjb250YWluZXIsIG5vZGVzTWFwKSk7CisgICAgbV9jaGls
ZHJlblJlcXVlc3RlZC5hZGQoYmluZChjb250YWluZXIpKTsKIAogICAgIHdoaWxlIChjaGlsZCkg
ewotICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoY2hpbGQsIGRl
cHRoLCBub2Rlc01hcCkpOworICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVjdEZv
ck5vZGUoY2hpbGQsIGRlcHRoKSk7CiAgICAgICAgIGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhj
aGlsZCk7CiAgICAgfQogICAgIHJldHVybiBjaGlsZHJlbjsKIH0KIAotUmVmUHRyPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5
Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgTm9kZVRvSWRNYXAqIG5v
ZGVzTWFwKQorUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKIHsKICAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVFbGVtZW50ID0gZWxlbWVudC5i
ZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgUHNldWRvRWxlbWVudCogYWZ0ZXJFbGVtZW50ID0g
ZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKQEAgLTE4NzIsOSArMTg2Myw5IEBAIFJlZlB0
cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRBcnJheUZvclBzZXVkCiAKICAgICBhdXRvIHBzZXVkb0VsZW1lbnRzID0gSlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKGJlZm9yZUVsZW1l
bnQpCi0gICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShi
ZWZvcmVFbGVtZW50LCAwLCBub2Rlc01hcCkpOworICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRk
SXRlbShidWlsZE9iamVjdEZvck5vZGUoYmVmb3JlRWxlbWVudCwgMCkpOwogICAgIGlmIChhZnRl
ckVsZW1lbnQpCi0gICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
Tm9kZShhZnRlckVsZW1lbnQsIDAsIG5vZGVzTWFwKSk7CisgICAgICAgIHBzZXVkb0VsZW1lbnRz
LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShhZnRlckVsZW1lbnQsIDApKTsKICAgICByZXR1
cm4gcHNldWRvRWxlbWVudHM7CiB9CiAKQEAgLTIzNjMsMTggKzIzNTQsMTggQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgaWYg
KCFmcmFtZU93bmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGZyYW1lT3duZXJJZCA9
IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoZnJhbWVPd25lcik7CisgICAgYXV0byBmcmFtZU93
bmVySWQgPSBtX25vZGVUb0lkLmdldChmcmFtZU93bmVyLmdldCgpKTsKICAgICBpZiAoIWZyYW1l
T3duZXJJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUmUtYWRkIGZyYW1lIG93bmVyIGVs
ZW1lbnQgdG9nZXRoZXIgd2l0aCBpdHMgbmV3IGNoaWxkcmVuLgotICAgIGF1dG8gcGFyZW50SWQg
PSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGlubmVyUGFyZW50Tm9kZShmcmFtZU93bmVyLmdl
dCgpKSk7CisgICAgYXV0byBwYXJlbnRJZCA9IG1fbm9kZVRvSWQuZ2V0KGlubmVyUGFyZW50Tm9k
ZShmcmFtZU93bmVyLmdldCgpKSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9k
ZVJlbW92ZWQocGFyZW50SWQsIGZyYW1lT3duZXJJZCk7Ci0gICAgdW5iaW5kKGZyYW1lT3duZXIu
Z2V0KCksICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgIHVuYmluZChmcmFtZU93bmVyLmdl
dCgpKTsKIAotICAgIGF1dG8gdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUoZnJhbWVPd25lci5n
ZXQoKSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgYXV0byB2YWx1ZSA9IGJ1aWxk
T2JqZWN0Rm9yTm9kZShmcmFtZU93bmVyLmdldCgpLCAwKTsKICAgICBOb2RlKiBwcmV2aW91c1Np
YmxpbmcgPSBpbm5lclByZXZpb3VzU2libGluZyhmcmFtZU93bmVyLmdldCgpKTsKLSAgICBhdXRv
IHByZXZJZCA9IHByZXZpb3VzU2libGluZyA/IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocHJl
dmlvdXNTaWJsaW5nKSA6IDA7CisgICAgYXV0byBwcmV2SWQgPSBwcmV2aW91c1NpYmxpbmcgPyBt
X25vZGVUb0lkLmdldChwcmV2aW91c1NpYmxpbmcpIDogMDsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgV1RGTW92ZSh2YWx1ZSkp
OwogfQogCkBAIC0yNDI5LDEzICsyNDIwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEluc2VydERPTU5vZGUoTm9kZSYgbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2Ug
Y291bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5nIHN1YnRyZWUuIEZvcmdldCB0aGUgYmluZGluZ3Mu
Ci0gICAgdW5iaW5kKCZub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICB1bmJpbmQo
Jm5vZGUpOwogCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7
CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFyZW50SWQg
PSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7CisgICAgYXV0byBwYXJlbnRJZCA9
IG1fbm9kZVRvSWQuZ2V0KHBhcmVudCk7CiAgICAgLy8gUmV0dXJuIGlmIHBhcmVudCBpcyBub3Qg
bWFwcGVkIHlldC4KICAgICBpZiAoIXBhcmVudElkKQogICAgICAgICByZXR1cm47CkBAIC0yNDQ2
LDggKzI0MzcsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5v
ZGUmIG5vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2ZSBiZWVuIHJl
cXVlc3RlZCAtPiByZXR1cm4gdmFsdWUgb2YgYSBuZXcgY2hpbGQuCiAgICAgICAgIE5vZGUqIHBy
ZXZTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxpbmcoJm5vZGUpOwotICAgICAgICBhdXRvIHBy
ZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGlu
ZykgOiAwOwotICAgICAgICBhdXRvIHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKCZub2RlLCAw
LCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICAgICAgYXV0byBwcmV2SWQgPSBwcmV2U2li
bGluZyA/IG1fbm9kZVRvSWQuZ2V0KHByZXZTaWJsaW5nKSA6IDA7CisgICAgICAgIGF1dG8gdmFs
dWUgPSBidWlsZE9iamVjdEZvck5vZGUoJm5vZGUsIDApOwogICAgICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgV1RGTW92ZSh2YWx1
ZSkpOwogICAgIH0KIH0KQEAgLTI0NjAsMTggKzI0NTEsNjEgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogCiAgICAgLy8gSWYgcGFyZW50IGlzIG5vdCBtYXBw
ZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCi0gICAgaWYgKCFtX2RvY3VtZW50Tm9kZVRvSWRN
YXAuY29udGFpbnMocGFyZW50KSkKKyAgICBpZiAoIW1fbm9kZVRvSWQuY29udGFpbnMocGFyZW50
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2Rl
VG9JZE1hcC5nZXQocGFyZW50KTsKKyAgICBhdXRvIHBhcmVudElkID0gbV9ub2RlVG9JZC5nZXQo
cGFyZW50KTsKIAorICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE4OTY4Nz4gUHJlc2VydmUg
RE9NLk5vZGVJZCBpZiBhIG5vZGUgaXMgcmVtb3ZlZCBhbmQgcmUtYWRkZWQKICAgICBpZiAoIW1f
Y2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CiAgICAgICAgIC8vIE5vIGNo
aWxkcmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hp
bGRyZW4uCiAgICAgICAgIGlmIChpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKICAg
ICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVDb3VudFVwZGF0ZWQocGFy
ZW50SWQsIDApOwogICAgIH0gZWxzZQotICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hp
bGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmbm9kZSkp
OwotICAgIHVuYmluZCgmbm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBtX25vZGVUb0lk
LmdldCgmbm9kZSkpOworICAgIHVuYmluZCgmbm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OndpbGxEZXN0cm95RE9NTm9kZShOb2RlJiBub2RlKQoreworICAgIGF1dG8gbm9kZUlk
ID0gbV9ub2RlVG9JZC5nZXQoJm5vZGUpOworICAgIGlmICghbm9kZUlkKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOworCisgICAgLy8gVGhp
cyBjYW4gYmUgY2FsbGVkIGluIHJlc3BvbnNlIHRvIEdDLiBEdWUgdG8gdGhlIHNpbmdsZS1wcm9j
ZXNzIG1vZGVsIHVzZWQgaW4gV2ViS2l0MSwgdGhlCisgICAgLy8gZXZlbnQgbXVzdCBiZSBkaXNw
YXRjaGVkIGZyb20gYSB0aW1lciB0byBwcmV2ZW50IHRoZSBmcm9udGVuZCBmcm9tIG1ha2luZyBK
UyBhbGxvY2F0aW9ucworICAgIC8vIHdoaWxlIHRoZSBHQyBpcyBzdGlsbCBhY3RpdmUuCisgICAg
aWYgKGF1dG8gcGFyZW50SWQgPSBtX25vZGVUb0lkLmdldChwYXJlbnQpKQorICAgICAgICBtX2Rl
c3Ryb3llZE5vZGVJZGVudGlmaWVycy5hcHBlbmQoeyBwYXJlbnRJZCwgbm9kZUlkIH0pOworICAg
IGVsc2UKKyAgICAgICAgbV9kZXN0cm95ZWREZXRhY2hlZE5vZGVJZGVudGlmaWVycy5hcHBlbmQo
bm9kZUlkKTsKKworICAgIGlmICghbV9kZXN0cm95ZWROb2Rlc1RpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIG1fZGVzdHJveWVkTm9kZXNUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKKworICAgIG1f
aWRUb05vZGUucmVtb3ZlKG5vZGVJZCk7CisgICAgbV9ub2RlVG9JZC5yZW1vdmUoJm5vZGUpOwor
ICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQucmVtb3ZlKG5vZGVJZCk7CisKKyAgICBpZiAoYXV0byog
Y3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCisgICAg
ICAgIGNzc0FnZW50LT5kaWRSZW1vdmVET01Ob2RlKG5vZGUsIG5vZGVJZCk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRlc3Ryb3llZE5vZGVzVGltZXJGaXJlZCgpCit7CisgICAgZm9y
IChhdXRvJiBbcGFyZW50SWQsIG5vZGVJZF0gOiBzdGQ6OmV4Y2hhbmdlKG1fZGVzdHJveWVkTm9k
ZUlkZW50aWZpZXJzLCB7IH0pKSB7CisgICAgICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5j
b250YWlucyhwYXJlbnRJZCkpIHsKKyAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IG5vZGVGb3JJ
ZChwYXJlbnRJZCk7CisgICAgICAgICAgICBpZiAocGFyZW50ICYmIGlubmVyQ2hpbGROb2RlQ291
bnQocGFyZW50KSA9PSAxKQorICAgICAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5j
aGlsZE5vZGVDb3VudFVwZGF0ZWQocGFyZW50SWQsIDApOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBu
b2RlSWQpOworICAgIH0KKyAgICAKKyAgICBmb3IgKGF1dG8gbm9kZUlkIDogc3RkOjpleGNoYW5n
ZShtX2Rlc3Ryb3llZERldGFjaGVkTm9kZUlkZW50aWZpZXJzLCB7IH0pKQorICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+d2lsbERlc3Ryb3lET01Ob2RlKG5vZGVJZCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9t
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpCkBAIC0yNTI2LDcg
KzI1NjAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRh
dGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbgogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkK
IHsKLSAgICBhdXRvIGlkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmY2hhcmFjdGVyRGF0
YSk7CisgICAgYXV0byBpZCA9IG1fbm9kZVRvSWQuZ2V0KCZjaGFyYWN0ZXJEYXRhKTsKICAgICBp
ZiAoIWlkKSB7CiAgICAgICAgIC8vIFB1c2ggdGV4dCBub2RlIGlmIGl0IGlzIGJlaW5nIGNyZWF0
ZWQuCiAgICAgICAgIGRpZEluc2VydERPTU5vZGUoY2hhcmFjdGVyRGF0YSk7CkBAIC0yNTM3LDcg
KzI1NzEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQo
Q2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8gaWQg
PSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZlbGVtZW50KTsKKyAgICBhdXRvIGlkID0gbV9u
b2RlVG9JZC5nZXQoJmVsZW1lbnQpOwogICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMjU0OCwyMiArMjU4MiwyMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlk
YXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7Ci0g
ICAgYXV0byBob3N0SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZob3N0KTsKKyAgICBh
dXRvIGhvc3RJZCA9IG1fbm9kZVRvSWQuZ2V0KCZob3N0KTsKICAgICBpZiAoaG9zdElkKQotICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2hhZG93Um9vdFB1c2hlZChob3N0SWQsIGJ1aWxk
T2JqZWN0Rm9yTm9kZSgmcm9vdCwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCkpOworICAgICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2hhZG93Um9vdFB1c2hlZChob3N0SWQsIGJ1aWxkT2Jq
ZWN0Rm9yTm9kZSgmcm9vdCwgMCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxs
UG9wU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290JiByb290KQogewotICAgIGF1
dG8gaG9zdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmaG9zdCk7Ci0gICAgYXV0byBy
b290SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZyb290KTsKKyAgICBhdXRvIGhvc3RJ
ZCA9IG1fbm9kZVRvSWQuZ2V0KCZob3N0KTsKKyAgICBhdXRvIHJvb3RJZCA9IG1fbm9kZVRvSWQu
Z2V0KCZyb290KTsKICAgICBpZiAoaG9zdElkICYmIHJvb3RJZCkKICAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnNoYWRvd1Jvb3RQb3BwZWQoaG9zdElkLCByb290SWQpOwogfQogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoRWxlbWVudCYg
ZWxlbWVudCkKIHsKLSAgICBhdXRvIGVsZW1lbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5n
ZXQoJmVsZW1lbnQpOworICAgIGF1dG8gZWxlbWVudElkID0gbV9ub2RlVG9JZC5nZXQoJmVsZW1l
bnQpOwogICAgIGlmICghZWxlbWVudElkKQogICAgICAgICByZXR1cm47CiAKQEAgLTI1OTAsMjcg
KzI2MjQsMjcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHNldWRvRWxlbWVudENyZWF0ZWQo
UHNldWRvRWxlbWVudCYgcHNldWRvRWxlbWVudCkKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQo
cGFyZW50KTsKKyAgICBhdXRvIHBhcmVudElkID0gbV9ub2RlVG9JZC5nZXQocGFyZW50KTsKICAg
ICBpZiAoIXBhcmVudElkKQogICAgICAgICByZXR1cm47CiAKICAgICBwdXNoQ2hpbGROb2Rlc1Rv
RnJvbnRlbmQocGFyZW50SWQsIDEpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wc2V1ZG9F
bGVtZW50QWRkZWQocGFyZW50SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZSgmcHNldWRvRWxlbWVudCwg
MCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5w
c2V1ZG9FbGVtZW50QWRkZWQocGFyZW50SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZSgmcHNldWRvRWxl
bWVudCwgMCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwc2V1ZG9FbGVtZW50RGVz
dHJveWVkKFBzZXVkb0VsZW1lbnQmIHBzZXVkb0VsZW1lbnQpCiB7Ci0gICAgYXV0byBwc2V1ZG9F
bGVtZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZwc2V1ZG9FbGVtZW50KTsKKyAg
ICBhdXRvIHBzZXVkb0VsZW1lbnRJZCA9IG1fbm9kZVRvSWQuZ2V0KCZwc2V1ZG9FbGVtZW50KTsK
ICAgICBpZiAoIXBzZXVkb0VsZW1lbnRJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYg
YSBQc2V1ZG9FbGVtZW50IGlzIGJvdW5kLCBpdHMgcGFyZW50IGVsZW1lbnQgbXVzdCBoYXZlIGJl
ZW4gYm91bmQuCiAgICAgRWxlbWVudCogcGFyZW50ID0gcHNldWRvRWxlbWVudC5ob3N0RWxlbWVu
dCgpOwogICAgIEFTU0VSVChwYXJlbnQpOwotICAgIGF1dG8gcGFyZW50SWQgPSBtX2RvY3VtZW50
Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7CisgICAgYXV0byBwYXJlbnRJZCA9IG1fbm9kZVRvSWQu
Z2V0KHBhcmVudCk7CiAgICAgQVNTRVJUKHBhcmVudElkKTsKIAotICAgIHVuYmluZCgmcHNldWRv
RWxlbWVudCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgdW5iaW5kKCZwc2V1ZG9FbGVt
ZW50KTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cHNldWRvRWxlbWVudFJlbW92ZWQocGFy
ZW50SWQsIHBzZXVkb0VsZW1lbnRJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA3NGE2MGY2MTgwOTI2NzZk
OGJlZTg3NTM4YzlkNjk3ZjNjNTg0MzA0Li44NWQ2ODU5YWJiMDdjMjkxYmU4YWUwMzg5MjMzYWU0
NDRkZTBmNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5oCkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcnNUb05vZGUoTm9kZSYpOwogICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9k
ZShOb2RlJik7CiAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUmKTsKKyAgICB2b2lkIHdp
bGxEZXN0cm95RE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVt
ZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1Zh
bHVlKTsKICAgICB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJp
bmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIGRpZFJlbW92ZURP
TUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwpAQCAtMTc5LDcgKzE4MCw2
IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxiYWNrcyB0aGF0IGRvbid0IGRpcmVjdGx5IGNvcnJl
c3BvbmQgdG8gYW4gaW5zdHJ1bWVudGF0aW9uIGVudHJ5IHBvaW50LgogICAgIHZvaWQgc2V0RG9j
dW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2b2lkIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAKICAg
ICB2b2lkIHN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpOwogCkBAIC0yMTgsMTkgKzIxOCwxOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5OjpHcmlkOjpDb25maWc+IGdyaWRPdmVybGF5Q29uZmln
RnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgZ3JpZE92ZXJsYXlJbnNwZWN0b3JPYmplY3QpOwogCiAgICAg
Ly8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2Rl
PiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IE5vZGVUb0lkTWFwOwotICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIGJpbmQoTm9kZSosIE5vZGVUb0lkTWFwKik7
Ci0gICAgdm9pZCB1bmJpbmQoTm9kZSosIE5vZGVUb0lkTWFwKik7CisgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQgYmluZChOb2RlKik7CisgICAgdm9pZCB1bmJpbmQoTm9kZSop
OwogCiAgICAgTm9kZSogYXNzZXJ0RWRpdGFibGVOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQpOwogICAgIEVsZW1l
bnQqIGFzc2VydEVkaXRhYmxlRWxlbWVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
ZyYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkKTsKIAogICAgIHZvaWQgcHVzaENo
aWxkTm9kZXNUb0Zyb250ZW5kKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBpbnQg
ZGVwdGggPSAxKTsKIAotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IGJ1
aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOworICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2Rl
KiwgaW50IGRlcHRoKTsKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBidWlsZEFycmF5
Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwotICAgIFJlZjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsK
LSAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lkTWFw
KiBub2Rlc01hcCk7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5l
ciwgaW50IGRlcHRoKTsKKyAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVu
dCYpOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1
aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcklkIGlkZW50aWZpZXIsIEV2
ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBj
b25zdCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYpOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWlsZE9iamVjdEZvckFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzKE5vZGUmKTsKICAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW4oQVhDb3JlT2JqZWN0JiwgSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGVJZD4mKTsKQEAgLTI0MiwxNiArMjQxLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiwgUmVmUHRyPEpT
T046Ok9iamVjdD4mJiBjb2xvciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvdXRsaW5lQ29sb3Is
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogCisgICAgdm9pZCBk
ZXN0cm95ZWROb2Rlc1RpbWVyRmlyZWQoKTsKKwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOwogICAgIFBhZ2UmIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JPdmVybGF5
KiBtX292ZXJsYXkgeyBudWxscHRyIH07Ci0gICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVU
b0lkTWFwOwotICAgIC8vIE93bnMgbm9kZSBtYXBwaW5ncyBmb3IgZGFuZ2xpbmcgbm9kZXMuCi0g
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxOb2RlVG9JZE1hcD4+IG1fZGFuZ2xpbmdOb2RlVG9J
ZE1hcHM7CisgICAgSGFzaE1hcDxOb2RlKiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
SWQ+IG1fbm9kZVRvSWQ7CiAgICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZCwgTm9kZSo+IG1faWRUb05vZGU7Ci0gICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGVJZCwgTm9kZVRvSWRNYXAqPiBtX2lkVG9Ob2Rlc01hcDsKICAgICBIYXNoU2V0
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBtX2NoaWxkcmVuUmVxdWVzdGVkOwog
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG1fbGFzdE5vZGVJZCB7IDEgfTsK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CkBAIC0yNjUsNiArMjYzLDEwIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKIAorICAgIFZlY3Rv
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gbV9kZXN0cm95ZWREZXRhY2hlZE5v
ZGVJZGVudGlmaWVyczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6Tm9kZUlkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4+IG1fZGVzdHJv
eWVkTm9kZUlkZW50aWZpZXJzOworICAgIFRpbWVyIG1fZGVzdHJveWVkTm9kZXNUaW1lcjsKKwog
I2lmIEVOQUJMRShWSURFTykKICAgICBUaW1lciBtX21lZGlhTWV0cmljc1RpbWVyOwogICAgIHN0
cnVjdCBNZWRpYU1ldHJpY3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IDAyODMwZmQwNjQ5YWZm
MTgzMDU1NWM0Y2E4ZmQ4ZGM4ZmUxMzZkM2IuLjVlZDUxMzBlOGFmMmQwNTRlNzkxZjQwMTEzMDky
MjEzZTY0NzE0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2Vu
dChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29uc29sZUFnZW50KGNvbnRl
eHQpCi0gICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdl
bnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKIH0K
QEAgLTU2LDkgKzU1LDYgQEAgUGFnZUNvbnNvbGVBZ2VudDo6flBhZ2VDb25zb2xlQWdlbnQoKSA9
IGRlZmF1bHQ7CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IFBhZ2VDb25zb2xlQWdl
bnQ6OmNsZWFyTWVzc2FnZXMoKQogewotICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPnJl
bGVhc2VEYW5nbGluZ05vZGVzKCk7Ci0KICAgICByZXR1cm4gV2ViQ29uc29sZUFnZW50OjpjbGVh
ck1lc3NhZ2VzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oCmluZGV4IDQxZmU3NmQwMzIwNzBlMGQ0MTAz
ZTQwYTJjMTQ0Y2UzNzk4MWM4MzMuLmZjZGQyNDcyM2ZhMjZmNjBiMWY1NjgyMzQ0NmI0MjNlNmZk
NTE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAtNDksNyArNDksNiBAQCBwdWJsaWM6CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzZXRMb2dnaW5nQ2hhbm5lbExl
dmVsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxTb3VyY2UsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxMZXZlbCk7CiAKIHByaXZhdGU6Ci0gICAgSW5z
dHJ1bWVudGluZ0FnZW50cyYgbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIFBhZ2UmIG1faW5z
cGVjdGVkUGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDZjMjA3MmM0
Mjk5NGNlN2VlMjQ1ZjcwODYzMWE2Y2M4M2RmNzFhNWUuLjEwNGFkYTg4MTVkNDkxNWNiYzI5Njgw
YzViMjNlN2E2ZTJkNzhjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMjc3LDYg
KzI3NywxMyBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5v
ZGUmIG5vZGUpCiAgICAgbV9kb21Ob2RlUmVtb3ZlZEJyZWFrcG9pbnRzLnJlbW92ZUlmKG5vZGVD
b250YWluc0JyZWFrcG9pbnRPd25lcik7CiB9CiAKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6
OndpbGxEZXN0cm95RE9NTm9kZShOb2RlJiBub2RlKQoreworICAgIC8vIFRoaXMgY2FuIGJlIGNh
bGxlZCBpbiByZXNwb25zZSB0byBHQy4KKyAgICAvLyBET00gTm9kZSBkZXN0cnVjdGlvbiBzaG91
bGQgYmUgdHJlYXRlZCBhcyBpZiB0aGUgbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJl
ZS4KKyAgICBkaWRSZW1vdmVET01Ob2RlKG5vZGUpOworfQorCiB2b2lkIFBhZ2VET01EZWJ1Z2dl
ckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICgh
bV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQu
aAppbmRleCBkODcyODI5MjVlYzY5MzEwZTBiYzBlNzg4M2NkY2E1MDhkMTAzNTIyLi5iODFiNWIz
MTVkNzZjY2U2MmIzZGU0MWY3M2I1Y2FmNTM4MmNjYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQu
aApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShO
b2RlJiBwYXJlbnQpOwogICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSYpOwogICAgIHZv
aWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7CisgICAgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUo
Tm9kZSYpOwogICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYpOwogICAgIHZvaWQg
d2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYpOwogICAgIHZvaWQgd2lsbEZpcmVBbmlt
YXRpb25GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKaW5kZXggNzBiOGZkODlhMDBi
OGFmOTAyZjE5NjJiM2MxZGMzZDQ3ZTY1YWJjNi4uODAwOWNlODFjZThiMWQyNzc3MzFjODczY2Iz
M2RmMTU1OTRkODJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCkBAIC0xODUsNiArMTg1
LDE1IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICAvLyBET01PYnNlcnZlcgogCisgICAgd2lsbERlc3Ryb3lET01Ob2RlKG5vZGVJZCkK
KyAgICB7CisgICAgICAgIGxldCBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAg
ICAgICAgbm9kZS5tYXJrRGVzdHJveWVkKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvRE9N
Tm9kZVtub2RlSWRdOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHtub2RlfSk7CisgICAgfQorCiAgICAgZGlk
QWRkRXZlbnRMaXN0ZW5lcihub2RlSWQpCiAgICAgewogICAgICAgICBsZXQgbm9kZSA9IHRoaXMu
X2lkVG9ET01Ob2RlW25vZGVJZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCmluZGV4IDY0ZjlhMTJj
NjNjZDFhNDBhODBkMjNmYzI3NzZmOThhNGJiMDM0NmUuLjFlYTljMjQ3NThiOWE0NWNmM2UyOTRm
M2ZkMDQ2MzI0YWZmNDJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCkBAIC03Nyw2ICs3Nywx
MSBAQCBXSS5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9ic2VydmVyIGV4dGVuZHMgSW5zcGVjdG9y
QmFja2VuZC5EaXNwYXRjaGVyCiAgICAgICAgIFdJLmRvbU1hbmFnZXIuX2NoaWxkTm9kZVJlbW92
ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwogICAgIH0KIAorICAgIHdpbGxEZXN0cm95RE9NTm9k
ZShub2RlSWQpCisgICAgeworICAgICAgICBXSS5kb21NYW5hZ2VyLndpbGxEZXN0cm95RE9NTm9k
ZShub2RlSWQpOworICAgIH0KKwogICAgIHNoYWRvd1Jvb3RQdXNoZWQoaG9zdElkLCByb290KQog
ICAgIHsKICAgICAgICAgV0kuZG9tTWFuYWdlci5fY2hpbGROb2RlSW5zZXJ0ZWQoaG9zdElkLCAw
LCByb290KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKaW5kZXggMTBmOTIyOTBmMWUxNmE1ODljZTRh
N2M4YmU0M2U5OWQyZTg2ZDRkOC4uNmMwYWU4YTE2Zjk0MzZlYzZiMmVmYmZmMmFiNDgyOGIzMjFi
ODFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZVVwZGF0ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKQEAgLTEwMyw3ICsxMDMsMTEgQEAgV0kuRE9N
VHJlZVVwZGF0ZXIucHJvdG90eXBlID0gewogCiAgICAgX25vZGVSZW1vdmVkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlY2VudGx5RGVsZXRlZE5vZGVzLnNldChldmVu
dC5kYXRhLm5vZGUsIHtwYXJlbnQ6IGV2ZW50LmRhdGEucGFyZW50fSk7CisgICAgICAgIGxldCBw
YXJlbnQgPSBldmVudC5kYXRhLnBhcmVudDsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fcmVjZW50bHlEZWxldGVkTm9kZXMuc2V0KGV2
ZW50LmRhdGEubm9kZSwge3BhcmVudH0pOwogICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUu
X3Zpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzRGVib3VuY2Vy
LmRlbGF5Rm9yRnJhbWUoKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJhNzIxZTJiNzM3NTUxNDlmNmIzNTAx
MzA1NDRhZmI5YjE5MzkyODUuLjhkNTdhNjI5MzFiOTIyODE4NGJlNTM2NzY0NTUyMTY3YmQ1ZTFk
ZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBh
bmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRh
dGlvbiB0byBub2RlIGRlc3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3dp
bGxEZXN0cm95RE9NTm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA2LTAxICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGNhbGMoKSBvbiBj
b21wb25lbnRzIGluc2lkZSByZWxhdGl2ZSBjb2xvciBzeW50YXggY29sb3JzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTEyOGU2NDUyOTY0YTMxOTVkZTA3OGJmNjAwZjQxNjc1Mzg3MGQ0
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vd2lsbERlc3Ry
b3lET01Ob2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBET00ud2ls
bERlc3Ryb3lET01Ob2RlLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NLndpbGxEZXN0
cm95RE9NTm9kZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS53aWxsRGVzdHJveURPTU5vZGUu
Q3JlYXRlRGVsZXRlQW5kR0NEZXRhY2hlZE5vZGUKK0NyZWF0aW5nIG5ldyBkZXRhY2hlZCBET00g
bm9kZS4KK1JlcXVlc3RpbmcgRE9NIG5vZGUgaW4gb3JkZXIgdG8gcmVjZWl2ZSBmdXR1cmUgZXZl
bnRzLgorUmVsZWFzaW5nIG5vZGUgYW5kIHRoZW4gdHJpZ2dlcmluZyBnYXJiYWdlIGNvbGxlY3Rp
b24gd2hpbGUgYXdhaXRpbmcgYERPTS53aWxsRGVzdHJveURPTU5vZGVgIGV2ZW50LgorUmVjZWl2
ZWQgZXZlbnQgYERPTS53aWxsRGVzdG9yeURPTU5vZGVgIGFmdGVyIGdhcmJhZ2UgY29sbGVjdGlv
bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURP
TU5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2Rl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTY4YzliMGQwYTBlM2M3N2IyYzBiYmNiM2IxZTg4NDhkNTg1ODFh
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vd2lsbERlc3Ry
b3lET01Ob2RlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9NLndp
bGxEZXN0cm95RE9NTm9kZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiRE9NLndpbGxEZXN0cm95RE9NTm9kZS5DcmVhdGVEZWxldGVBbmRHQ0RldGFjaGVkTm9k
ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ3JlYXRlIGEgbmV3IERPTSBub2RlIHRoYXQgaXMg
bm90IGF0dGFjaGVkIHRoZSBET00gdHJlZSwgYW5kIHRoZW4gYWxsb3cgaXQgdG8gYmUgZ2FyYmFn
ZSBjb2xsZWN0ZWQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIFByb3Rv
Y29sVGVzdC5sb2coIkNyZWF0aW5nIG5ldyBkZXRhY2hlZCBET00gbm9kZS4iKTsKKyAgICAgICAg
ICAgIGxldCBkb21Ob2RlUmVzcG9uc2UgPSBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoeyBtZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7IGV4cHJlc3Npb246
IGBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIilgIH0gfSk7CisgICAgICAgICAgICBsZXQgb2Jq
ZWN0SWQgPSBkb21Ob2RlUmVzcG9uc2UucmVzdWx0Lm9iamVjdElkOworICAgICAgICAgICAgUHJv
dG9jb2xUZXN0LmFzc2VydCghZG9tTm9kZVJlc3BvbnNlLndhc1Rocm93bik7CisKKyAgICAgICAg
ICAgIFByb3RvY29sVGVzdC5sb2coIlJlcXVlc3RpbmcgRE9NIG5vZGUgaW4gb3JkZXIgdG8gcmVj
ZWl2ZSBmdXR1cmUgZXZlbnRzLiIpOworICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dl
YmtpdC5vcmcvYi8yMTM0OTk+IFdlYiBJbnNwZWN0b3I6IGFsbG93IERPTSBub2RlcyB0byBiZSBp
bnN0cnVtZW50ZWQgYXQgYW55IHBvaW50LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG1haW4g
ZG9jdW1lbnQgaGFzIGFsc28gYmVlbiBpbnN0cnVtZW50ZWQKKyAgICAgICAgICAgIGF3YWl0IElu
c3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7IG1ldGhvZDogIkRPTS5nZXREb2N1bWVudCJ9
KTsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRD
b21tYW5kKHsgbWV0aG9kOiAiRE9NLnJlcXVlc3ROb2RlIiwgcGFyYW1zOiB7IG9iamVjdElkIH0g
fSk7CisKKyAgICAgICAgICAgIC8vIFByb3RvY29sVGVzdC5sb2coIlJlbGVhc2luZyByZWZlcmVu
Y2UgdG8gbm9kZSBoZWxkIGJ5IHJlbW90ZSBvYmplY3QuIikKKyAgICAgICAgICAgIC8vIGF3YWl0
IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7IG1ldGhvZDogIkNvbnNvbGUuY2xlYXJN
ZXNzYWdlcyIgfSk7CisKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlJlbGVhc2luZyBu
b2RlIGFuZCB0aGVuIHRyaWdnZXJpbmcgZ2FyYmFnZSBjb2xsZWN0aW9uIHdoaWxlIGF3YWl0aW5n
IGBET00ud2lsbERlc3Ryb3lET01Ob2RlYCBldmVudC4iKTsKKyAgICAgICAgICAgIGxldCBkZWxl
dGVOb2RlUHJvbWlzZSA9IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7IG1ldGhvZDog
IlJ1bnRpbWUucmVsZWFzZU9iamVjdCIsIHBhcmFtczogeyBvYmplY3RJZCB9IH0pOworICAgICAg
ICAgICAgbGV0IGdjUHJvbWlzZSA9IFByb3RvY29sVGVzdC5ldmFsdWF0ZUluUGFnZShgR0NDb250
cm9sbGVyLmNvbGxlY3QoKWApOworCisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6IkRPTS53
aWxsRGVzdHJveURPTU5vZGUifSksCisgICAgICAgICAgICAgICAgZGVsZXRlTm9kZVByb21pc2Uu
dGhlbigocmVzb2x2ZSkgPT4gZ2NQcm9taXNlKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAg
ICAgICBQcm90b2NvbFRlc3QubG9nKCJSZWNlaXZlZCBldmVudCBgRE9NLndpbGxEZXN0b3J5RE9N
Tm9kZWAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLiIpOworICAgICAgICB9LAorICAgIH0pOwor
CisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8cD5UZXN0IGZvciBET00ud2lsbERlc3Ry
b3lET01Ob2RlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431174</attachid>
            <date>2021-06-10 20:28:24 -0700</date>
            <delta_ts>2021-06-11 12:27:43 -0700</delta_ts>
            <desc>Patch v2.2 - Review notes</desc>
            <filename>bug-226624-20210610202823.patch</filename>
            <type>text/plain</type>
            <size>47133</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi5jMzUzZGU3OGY5NzU1NGMz
Njg4NTY2ODhiMGE3NTM1NjQwZmJmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBgRE9NLndpbGxEZXN0cm95RE9NTm9kZWAg
ZXZlbnQgdG8gaW5mb3JtIHRoZSBmcm9udGVuZCBvZiBET00gbm9kZXMgdGhhdCBubyBsb25nZXIg
ZXhpc3QsIGV2ZW4gaWYgdGhleQorICAgICAgICB3ZXJlbid0IGluIHRoZSBET00gdHJlZS4gVGhp
cyB3b3JrIHNlcnZlcyBhcyBhIHByZWx1ZGUgdG8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTY4
Nz4gKFdlYiBJbnNwZWN0b3I6IHByZXNlcnZlCisgICAgICAgIERPTS5Ob2RlSWQgaWYgYSBub2Rl
IGlzIHJlbW92ZWQgYW5kIHJlLWFkZGVkKSB0byBldmVudHVhbGx5IG9ubHkgZm9yZ2V0IGFib3V0
IG5vZGVzIHVwb24gZGVzdHJ1Y3Rpb24sIGluc3RlYWQgb2YKKyAgICAgICAgcmVtb3ZhbCBmcm9t
IHRoZSBET00gdHJlZS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoK
KwogMjAyMS0wNi0wMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXUEVdW0dUS10gU3VwcG9ydCBidWlsZGluZyBhZ2FpbnN0IHVDbGliYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDk2MGZiMmRmY2MyZTI0YjUyNTI4ZmExMWYxOGQ2Njk1NTc5YzU1MTQuLjAx
Y2MyOWQ1ODBkNzdjNmY4OGM5ZGI3ZTdjNzMyZGRhN2FmMjhlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURP
TU5vZGUuaHRtbAorCisgICAgICAgIEFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGRlc3RydWN0aW9u
IG9mIG5vZGVzIGluIG9yZGVyIHRvIGNlYXNlIGluc3RydW1lbnRpbmcgbm9kZXMgYW5kIGluZm9y
bSB0aGUgZnJvbnRlbmQgdGhhdAorICAgICAgICB0aGUgbm9kZSBubyBsb25nZXIgZXhpc3RzLiBU
aGlzIHdvcmsgc2VydmVzIGFzIGEgcHJlbHVkZSB0byA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg5
Njg3PiAoV2ViIEluc3BlY3RvcjoKKyAgICAgICAgcHJlc2VydmUgRE9NLk5vZGVJZCBpZiBhIG5v
ZGUgaXMgcmVtb3ZlZCBhbmQgcmUtYWRkZWQpIHRvIGV2ZW50dWFsbHkgb25seSBmb3JnZXQgYWJv
dXQgbm9kZXMgdXBvbiBkZXN0cnVjdGlvbiwKKyAgICAgICAgaW5zdGVhZCBvZiByZW1vdmFsIGZy
b20gdGhlIERPTSB0cmVlLiBBZGRpdGlvbmFsbHksIHRoZSBzdG9yYWdlIG9mIG5vZGVzIGlzIHNp
bXBsaWZpZWQgZG93biB0byB0d28gaW52ZXJzZSBtYXBzLAorICAgICAgICBvbmUgdGhhdCBtYXBz
IGBOb2RlYCB0byBgTm9kZUlkYCwgYW5kIGFub3RoZXIgdGhhdCBtYXBzIGBOb2RlSWRgIHRvIGBO
b2RlYC4gVGhlc2UgYXJlIGtlcHQgaW4gc3luYyB0aHJvdWdob3V0LAorICAgICAgICBhbmQgYm90
aCBhdHRhY2hlZCBhbmQgZGV0YWNoZWQgbm9kZXMgYXJlIG5vdyBoYW5kbGVkIGFzIHBhcnQgb2Yg
dGhlc2UgdHdvIG1hcHMgb2YgTm9kZXMuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpiaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Ym91bmROb2RlSWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZGVzdHJveWVkTm9kZXNUaW1lckZpcmVkKToKKyAgICAgICAgLSBBZGRlZCBpbnN0
cnVtZW50YXRpb24gcG9pbnQgZm9yIERPTSBub2RlcyBiZWluZyBkZXN0cm95ZWQgc28gdGhleSBj
YW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhZ2VudCwgYW5kIHRoZQorICAgICAgICBmcm9udGVuZCBj
YW4gYWxzbyBiZSBpbmZvcm1lZCBvZiB0aGVpciBjZWFzaW5nIHRvIGV4aXN0LgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUHVzaFNoYWRvd1Jvb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxQb3BTaGFkb3dSb290
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDaGFuZ2VDdXN0b21F
bGVtZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBzZXVk
b0VsZW1lbnRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpw
c2V1ZG9FbGVtZW50RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpyZWxlYXNlRGFuZ2xpbmdOb2Rlcyk6IERlbGV0ZWQuCisgICAgICAgIC0gUmVtb3ZlZCB1
c2FnZSBvZiBOb2RlVG9JZE1hcCBhbmQgbmVzdGVkIG1hcHMgb2Ygbm9kZXMgdGhyb3VnaG91dCBp
biBmYXZvciBvZiB0d28gaW52ZXJzZSBtYXBzIGZvciByZWxhdGluZworICAgICAgICBgTm9kZWBz
IGFuZCBgTm9kZUlkYHMuIEJlY2F1c2UgdGhlcmUgaXMgbm93IGEgc2luZ2xlIHNldCBvZiBjYW5v
bmljYWwgbm9kZSBtYXBzLCB3ZSBubyBsb25nZXIgdG8gdG8gcGFzcyBhCisgICAgICAgIE5vZGVU
b0lkTWFwIHRocm91Z2hvdXQgdGhlIGFnZW50LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjpQ
YWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQWdlbnQ6OmNs
ZWFyTWVzc2FnZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29s
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxs
RGVzdHJveURPTU5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5oOgorCiAyMDIxLTA2LTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGR1cGxpY2F0ZSAiYmVoYXZpb3IgZm9yIGZp
eGVkIiBlbnRyeSBmcm9tIHNjcm9sbGluZyBzdGF0ZSB0cmVlIGxvZ2dpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDNjNjE3NzMxMmVmNjk2ZmI2MmJhODkyOGIxZjRmNGNmODEzNGRjYzAu
LjgxMjMzYzNiNjFhZTRhOTdiMjNkNDRhN2I3ODkyNmMyYWJmOGFkYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTEwICBQYXRyaWNrIEFuZ2xlICA8
cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgaW5zdHJ1bWVu
dGF0aW9uIHRvIG5vZGUgZGVzdHJ1Y3Rpb24gZm9yIEluc3BlY3RvckRPTUFnZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaXN0ZW4gZm9yIHRoZSBu
ZXcgYERPTS53aWxsRGVzdHJveURPTU5vZGVgIGV2ZW50IGluIG9yZGVyIHRvIGNsZWFudXAgYW5k
IHJlbWFpbmluZyByZWZlcmVuY2VzIHRvIHRoYXQgTm9kZS4KKyAgICAgICAgVGhpcyB3b3JrIHNl
cnZlcyBhcyBhIHByZWx1ZGUgdG8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTY4Nz4gKFdlYiBJ
bnNwZWN0b3I6IHByZXNlcnZlIERPTS5Ob2RlSWQgaWYgYSBub2RlIGlzCisgICAgICAgIHJlbW92
ZWQgYW5kIHJlLWFkZGVkKSB0byBldmVudHVhbGx5IG9ubHkgZm9yZ2V0IGFib3V0IG5vZGVzIHVw
b24gZGVzdHJ1Y3Rpb24sIGluc3RlYWQgb2YgcmVtb3ZhbCBmcm9tIHRoZSBET00KKyAgICAgICAg
dHJlZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5q
czoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLndpbGxEZXN0cm95RE9NTm9kZSk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qczoKKyAgICAg
ICAgKFdJLkRPTU9ic2VydmVyLnByb3RvdHlwZS53aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanM6CisgICAgICAgIChXSS5E
T01UcmVlVXBkYXRlci5wcm90b3R5cGUuX25vZGVSZW1vdmVkKToKKwogMjAyMS0wNS0xNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNyZWF0ZUNvbmljR3JhZGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCmluZGV4IDE2MjBjMDAz
ZjA3NmVlZTMxZGRjOGJlNjlhODRlNDk5NTI5OTg5MmEuLjNhOTFhYzZiNTdmYWQ3ZjQ3MmRhYTJl
MjEwN2IzYjQ4M2RlNzAxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtNjc4LDYgKzY3OCwxMyBAQAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjog
IklkIG9mIHRoZSBub2RlIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAid2lsbERlc3Ryb3lE
T01Ob2RlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIGEgZGV0YWNo
ZWQgRE9NIG5vZGUgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiBDdXJyZW50bHksIHRoaXMgZXZl
bnQgd2lsbCBvbmx5IGJlIGZpcmVkIHdoZW4gYSBET00gbm9kZSB0aGF0IGlzIGRldGFjaGVkIGlz
IGFib3V0IHRvIGJlIGRlc3RydWN0ZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRl
c2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRoYXQgd2lsbCBiZSBkZXN0cm95ZWQuIiB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
InNoYWRvd1Jvb3RQdXNoZWQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhbGxlZCB3
aGVuIHNoYWRvdyByb290IGlzIHB1c2hlZCBpbnRvIHRoZSBlbGVtZW50LiIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggZmRhYmNkM2U3Yjg5MmU1MDFkODc5NDMyYWM0NmMzZDcxM2Y4ZWIwMC4uYTQxMGY5
NDg2YjZhMmI4Y2ZhZThmMDIxYzJjMjlhYmJlZWEzYmI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
NTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgpAQCAtMzQ5
LDYgKzM1MCw4IEBAIE5vZGU6On5Ob2RlKCkKICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3Vu
KTsKICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIAorICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlKCp0aGlzKTsKKwogI2lmbmRlZiBOREVC
VUcKICAgICBpZiAoIWlnbm9yZVNldCgpLnJlbW92ZSgqdGhpcykpCiAgICAgICAgIG5vZGVDb3Vu
dGVyLmRlY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyMThjZTRiOTQ3YzQyNTQ3ZWM0ZjljZjll
ODUxN2E1ZGMzNTJjNGM0Li5hNjBkNDY0MzQ0ZmQ5MDE0MDI4OGEwYWNjZTViMzliMTExNDQxNDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcApAQCAtMTc2LDYgKzE3NiwxNCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bQogICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAo
YXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQ
YWdlRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+d2ls
bERlc3Ryb3lET01Ob2RlKG5vZGUpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT53aWxs
RGVzdHJveURPTU5vZGUobm9kZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpub2RlTGF5b3V0Q29udGV4dENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUsIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIpCiB7
CiAgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkQ1NT
QWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaAppbmRleCA4ZjA0MDQ0NGJiMTgzZDE2MmM2MGY2ZmQ0NzUyYmVjZDljZTZh
Yjk5Li5jZTEwMTE5Yzg2MWNhYjk1NGVlYzM3YzQ4ZTkxOTdjMzIzNDBjZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBA
IC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEluc2VydERPTU5v
ZGUoRG9jdW1lbnQmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUo
RG9jdW1lbnQmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShEb2N1
bWVudCYsIE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYp
OwogICAgIHN0YXRpYyB2b2lkIG5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZChOb2RlJiwgUmVuZGVy
T2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQmLCBF
bGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5l
d1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3VtZW50JiwgRWxl
bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsK
QEAgLTM1MCw2ICszNTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEluc2VydERP
TU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQg
d2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIE5v
ZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveURPTU5vZGVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBOb2RlJik7CiAgICAgc3RhdGljIHZvaWQgbm9kZUxheW91dENvbnRleHRDaGFu
Z2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYsIFJlbmRlck9iamVjdCopOwogICAg
IHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
RWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBu
ZXdWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSk7CkBAIC02MDEsNiArNjAzLDEzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZShEb2N1bWVudCYgZG9jdW1lbnQsIE5v
ZGUmCiAgICAgICAgIGRpZFJlbW92ZURPTU5vZGVJbXBsKCphZ2VudHMsIG5vZGUpOwogfQogCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZShO
b2RlJiBub2RlKQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwor
ICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKG5vZGUuZG9jdW1lbnQo
KSkpCisgICAgICAgIHdpbGxEZXN0cm95RE9NTm9kZUltcGwoKmFnZW50cywgbm9kZSk7Cit9CisK
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENvbnRleHRD
aGFuZ2VkKE5vZGUmIG5vZGUsIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIpCiB7CiAgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDA0YzE3NTcy
ZmY2NTZmMjIyYTEzMWU4MGE5NzMxM2VkYjUzMjFmNGUuLjZhZmIyYTFhMjI0NjJjOGQ2NDUwMmVj
YmZlYTM1NDdhMTY1ZGQyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xMTYwLDYgKzExNjAsNyBAQCBSZWZQ
dHI8UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvckF0dHJpYnV0ZXNTdHlsZQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVE
T01Ob2RlKE5vZGUmIG5vZGUsIFByb3RvY29sOjpET006Ok5vZGVJZCBub2RlSWQpCiB7CisgICAg
Ly8gVGhpcyBjYW4gYmUgY2FsbGVkIGluIHJlc3BvbnNlIHRvIEdDLgogICAgIG1fbm9kZUlkVG9G
b3JjZWRQc2V1ZG9TdGF0ZS5yZW1vdmUobm9kZUlkKTsKIAogICAgIGF1dG8gc2hlZXQgPSBtX25v
ZGVUb0luc3BlY3RvclN0eWxlU2hlZXQudGFrZSgmbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQ0NjJl
ZmMzMDZhMjk5YjU4ZTc4YzVkOTRlNmU4NzU3ZTE3MzRkODIuLjJlZDRiYjdiNWI0NmNjNDQyZDAx
ZmVmNzgwZDZkMTBmMjdmMGNlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgSW5z
cGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRl
eHQsIEluc3BlY3Rvck92ZXJsYXkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAg
ICAsIG1fb3ZlcmxheShvdmVybGF5KQorICAgICwgbV9kZXN0cm95ZWROb2Rlc1RpbWVyKCp0aGlz
LCAmSW5zcGVjdG9yRE9NQWdlbnQ6OmRlc3Ryb3llZE5vZGVzVGltZXJGaXJlZCkKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgLCBtX21lZGlhTWV0cmljc1RpbWVyKCp0aGlzLCAmSW5zcGVjdG9yRE9N
QWdlbnQ6Om1lZGlhTWV0cmljc1RpbWVyRmlyZWQpCiAjZW5kaWYKQEAgLTM1NCw2ICszNTUsMTEg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQoKQogICAgIGlmIChtX3JldmFsaWRhdGVT
dHlsZUF0dHJUYXNrKQogICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5yZXNldCgp
OwogICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOworCisgICAgbV9kZXN0cm95ZWREZXRhY2hlZE5v
ZGVJZGVudGlmaWVycy5jbGVhcigpOworICAgIG1fZGVzdHJveWVkQXR0YWNoZWROb2RlSWRlbnRp
ZmllcnMuY2xlYXIoKTsKKyAgICBpZiAobV9kZXN0cm95ZWROb2Rlc1RpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fZGVzdHJveWVkTm9kZXNUaW1lci5zdG9wKCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTM3Myw1NiAr
Mzc5LDQ3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRvY3VtZW50VXBkYXRlZCgp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZWxlYXNlRGFuZ2xpbmdOb2RlcygpCi17
Ci0gICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5jbGVhcigpOwotfQotCi1Qcm90b2NvbDo6RE9N
OjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAq
IG5vZGVzTWFwKQorUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50OjpiaW5k
KE5vZGUqIG5vZGUpCiB7Ci0gICAgYXV0byBpZCA9IG5vZGVzTWFwLT5nZXQobm9kZSk7Ci0gICAg
aWYgKGlkKQorICAgIHJldHVybiBtX25vZGVUb0lkLmVuc3VyZShub2RlLCBbJl0geworICAgICAg
ICBhdXRvIGlkID0gbV9sYXN0Tm9kZUlkKys7CisgICAgICAgIG1faWRUb05vZGUuc2V0KGlkLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuIGlkOwotICAgIGlkID0gbV9sYXN0Tm9kZUlkKys7Ci0gICAg
bm9kZXNNYXAtPnNldChub2RlLCBpZCk7Ci0gICAgbV9pZFRvTm9kZS5zZXQoaWQsIG5vZGUpOwot
ICAgIG1faWRUb05vZGVzTWFwLnNldChpZCwgbm9kZXNNYXApOwotICAgIHJldHVybiBpZDsKKyAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmlu
ZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCit2b2lkIEluc3BlY3RvckRPTUFn
ZW50Ojp1bmJpbmQoTm9kZSogbm9kZSkKIHsKLSAgICBhdXRvIGlkID0gbm9kZXNNYXAtPmdldChu
b2RlKTsKKyAgICBhdXRvIGlkID0gbV9ub2RlVG9JZC5nZXQobm9kZSk7CiAgICAgaWYgKCFpZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pZFRvTm9kZS5yZW1vdmUoaWQpOworICAgIG1fbm9k
ZVRvSWQucmVtb3ZlKG5vZGUpOwogCiAgICAgaWYgKG5vZGUtPmlzRnJhbWVPd25lckVsZW1lbnQo
KSkgewogICAgICAgICBjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIGZyYW1lT3duZXIgPSBz
dGF0aWNfY2FzdDxjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqPihub2RlKTsKICAgICAgICAg
aWYgKERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQgPSBmcmFtZU93bmVyLT5jb250ZW50RG9jdW1l
bnQoKSkKLSAgICAgICAgICAgIHVuYmluZChjb250ZW50RG9jdW1lbnQsIG5vZGVzTWFwKTsKKyAg
ICAgICAgICAgIHVuYmluZChjb250ZW50RG9jdW1lbnQpOwogICAgIH0KIAogICAgIGlmIChpczxF
bGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKTsKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50LnNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHVuYmluZChyb290LCBub2Rlc01hcCk7CisgICAgICAg
ICAgICB1bmJpbmQocm9vdCk7CiAgICAgICAgIGlmIChQc2V1ZG9FbGVtZW50KiBiZWZvcmVFbGVt
ZW50ID0gZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAgICB1bmJpbmQo
YmVmb3JlRWxlbWVudCwgbm9kZXNNYXApOworICAgICAgICAgICAgdW5iaW5kKGJlZm9yZUVsZW1l
bnQpOwogICAgICAgICBpZiAoUHNldWRvRWxlbWVudCogYWZ0ZXJFbGVtZW50ID0gZWxlbWVudC5h
ZnRlclBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHVuYmluZChhZnRlckVsZW1lbnQsIG5v
ZGVzTWFwKTsKKyAgICAgICAgICAgIHVuYmluZChhZnRlckVsZW1lbnQpOwogICAgIH0KIAotICAg
IG5vZGVzTWFwLT5yZW1vdmUobm9kZSk7Ci0KICAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCiAgICAgICAgIGNzc0FnZW50LT5k
aWRSZW1vdmVET01Ob2RlKCpub2RlLCBpZCk7CiAKICAgICBpZiAobV9jaGlsZHJlblJlcXVlc3Rl
ZC5yZW1vdmUoaWQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gZG8g
dGhpcyBpdGVyYXRpdmVseSByYXRoZXIgdGhhbiByZWN1cnNpdmVseS4KICAgICAgICAgZm9yIChO
b2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJO
ZXh0U2libGluZyhjaGlsZCkpCi0gICAgICAgICAgICB1bmJpbmQoY2hpbGQsIG5vZGVzTWFwKTsK
KyAgICAgICAgICAgIHVuYmluZChjaGlsZCk7CiAgICAgfQogfQogCkBAIC01MDAsNyArNDk3LDcg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpET006Ok5vZGU+PiBJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQKICAgICByZXNldCgpOwogICAgIG1fZG9jdW1lbnQg
PSBkb2N1bWVudDsKIAotICAgIGF1dG8gcm9vdCA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShtX2RvY3Vt
ZW50LmdldCgpLCAyLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBhdXRvIHJvb3QgPSBi
dWlsZE9iamVjdEZvck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMik7CiAKICAgICBpZiAobV9ub2Rl
VG9Gb2N1cykKICAgICAgICAgZm9jdXNOb2RlKCk7CkBAIC01MTQsOCArNTExLDYgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKFByb3RvY29sOjpET006
Ok5vZGVJZCBub2RlSWQsIGkKICAgICBpZiAoIW5vZGUgfHwgKG5vZGUtPm5vZGVUeXBlKCkgIT0g
Tm9kZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRf
Tk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBOb2RlVG9JZE1hcCogbm9kZU1hcCA9IG1faWRUb05v
ZGVzTWFwLmdldChub2RlSWQpOwotCiAgICAgaWYgKG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFp
bnMobm9kZUlkKSkgewogICAgICAgICBpZiAoZGVwdGggPD0gMSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTUyMyw3ICs1MTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGRO
b2Rlc1RvRnJvbnRlbmQoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgaQogICAgICAgICBk
ZXB0aC0tOwogCiAgICAgICAgIGZvciAobm9kZSA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgbm9k
ZTsgbm9kZSA9IGlubmVyTmV4dFNpYmxpbmcobm9kZSkpIHsKLSAgICAgICAgICAgIGF1dG8gY2hp
bGROb2RlSWQgPSBub2RlTWFwLT5nZXQobm9kZSk7CisgICAgICAgICAgICBhdXRvIGNoaWxkTm9k
ZUlkID0gbV9ub2RlVG9JZC5nZXQobm9kZSk7CiAgICAgICAgICAgICBBU1NFUlQoY2hpbGROb2Rl
SWQpOwogICAgICAgICAgICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGNoaWxkTm9kZUlkLCBk
ZXB0aCk7CiAgICAgICAgIH0KQEAgLTUzMSwxNyArNTI2LDE2IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9k
ZUlkLCBpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNoaWxkcmVuID0gYnVp
bGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKKyAgICBh
dXRvIGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRo
KTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2Rlcyhub2RlSWQsIFdURk1v
dmUoY2hpbGRyZW4pKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRp
bmdzKCkKIHsKLSAgICBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuY2xlYXIoKTsKKyAgICBtX25vZGVU
b0lkLmNsZWFyKCk7CiAgICAgbV9pZFRvTm9kZS5jbGVhcigpOwogICAgIG1fZGlzcGF0Y2hlZEV2
ZW50cy5jbGVhcigpOwogICAgIG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuY2xlYXIoKTsKLSAgICBy
ZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsK
IH0KIApAQCAtNjU0LDUxICs2NDgsNDUgQEAgUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKFByb3RvY29sOjpFcnJvclMKICAgICB9
CiAKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMzQ5OT4gV2ViIEluc3Bl
Y3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGluc3RydW1lbnRlZCBhdCBhbnkgcG9pbnQsIHJl
Z2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBkb2N1bWVudCBoYXMgYWxzbyBiZWVuIGluc3Ry
dW1lbnRlZAotICAgIGlmICghbV9kb2N1bWVudE5vZGVUb0lkTWFwLmNvbnRhaW5zKG1fZG9jdW1l
bnQpKSB7CisgICAgaWYgKCFtX25vZGVUb0lkLmNvbnRhaW5zKG1fZG9jdW1lbnQuZ2V0KCkpKSB7
CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3VtZW50IG11c3QgaGF2ZSBiZWVuIHJlcXVlc3Rl
ZCJfczsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIGlkIGluIGNh
c2UgdGhlIG5vZGUgaXMga25vd24uCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0gbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmdldChub2RlVG9QdXNoKSkKKyAgICBpZiAoYXV0byByZXN1bHQgPSBtX25vZGVU
b0lkLmdldChub2RlVG9QdXNoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIE5vZGUq
IG5vZGUgPSBub2RlVG9QdXNoOwogICAgIFZlY3RvcjxOb2RlKj4gcGF0aDsKLSAgICBOb2RlVG9J
ZE1hcCogZGFuZ2xpbmdNYXAgPSAwOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgTm9k
ZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVudCkg
ewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVzaCBz
dWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBhdXRvIG5ld01hcCA9IG1ha2VVbmlxdWU8Tm9kZVRv
SWRNYXA+KCk7Ci0gICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKLSAgICAg
ICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwog
ICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6
Tm9kZT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7CisgICAgICAgICAgICBjaGlsZHJlbi0+
YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCkpOwogICAgICAgICAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMoMCwgV1RGTW92ZShjaGlsZHJlbikpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXRoLmFwcGVu
ZChwYXJlbnQpOwotICAgICAgICAgICAgaWYgKG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFy
ZW50KSkKKyAgICAgICAgICAgIGlmIChtX25vZGVUb0lkLmdldChwYXJlbnQpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5vZGUgPSBw
YXJlbnQ7CisgICAgICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgTm9kZVRvSWRNYXAqIG1hcCA9IGRhbmdsaW5nTWFwID8gZGFuZ2xpbmdNYXAgOiAmbV9kb2N1
bWVudE5vZGVUb0lkTWFwOwogICAgIGZvciAoaW50IGkgPSBwYXRoLnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7Ci0gICAgICAgIGF1dG8gbm9kZUlkID0gbWFwLT5nZXQocGF0aC5hdChpKSk7Cisg
ICAgICAgIGF1dG8gbm9kZUlkID0gbV9ub2RlVG9JZC5nZXQocGF0aC5hdChpKSk7CiAgICAgICAg
IEFTU0VSVChub2RlSWQpOwogICAgICAgICBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobm9kZUlk
KTsKICAgICB9Ci0gICAgcmV0dXJuIG1hcC0+Z2V0KG5vZGVUb1B1c2gpOworICAgIHJldHVybiBt
X25vZGVUb0lkLmdldChub2RlVG9QdXNoKTsKIH0KIAogUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIElu
c3BlY3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZChjb25zdCBOb2RlKiBub2RlKQogewotICAgIHJl
dHVybiBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKTsK
KyAgICByZXR1cm4gbV9ub2RlVG9JZC5nZXQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpOwogfQog
CiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0
cmlidXRlVmFsdWUoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtMTcxMiw5ICsxNzAwLDkgQEAgc3RhdGljIFN0
cmluZyBjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJzaGEyNTYtIiwgYmFzZTY0RW5jb2Rl
ZChkaWdlc3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CiB9CiAKLVJlZjxQcm90b2NvbDo6RE9N
OjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUs
IGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUmVmPFByb3RvY29sOjpET006Ok5v
ZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50
IGRlcHRoKQogewotICAgIGF1dG8gaWQgPSBiaW5kKG5vZGUsIG5vZGVzTWFwKTsKKyAgICBhdXRv
IGlkID0gYmluZChub2RlKTsKICAgICBTdHJpbmcgbm9kZU5hbWU7CiAgICAgU3RyaW5nIGxvY2Fs
TmFtZTsKICAgICBTdHJpbmcgbm9kZVZhbHVlOwpAQCAtMTc1Niw3ICsxNzQ0LDcgQEAgUmVmPFBy
b3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUo
Tm9kZSogbm9kZSwgaW50IGQKICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpIHsKICAg
ICAgICAgaW50IG5vZGVDb3VudCA9IGlubmVyQ2hpbGROb2RlQ291bnQobm9kZSk7CiAgICAgICAg
IHZhbHVlLT5zZXRDaGlsZE5vZGVDb3VudChub2RlQ291bnQpOwotICAgICAgICBhdXRvIGNoaWxk
cmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01h
cCk7CisgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4obm9kZSwgZGVwdGgpOwogICAgICAgICBpZiAoY2hpbGRyZW4tPmxlbmd0aCgpID4gMCkKICAg
ICAgICAgICAgIHZhbHVlLT5zZXRDaGlsZHJlbihXVEZNb3ZlKGNoaWxkcmVuKSk7CiAgICAgfQpA
QCAtMTc3NSwxNyArMTc2MywxNyBAQCBSZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZAogICAgICAgICB2
YWx1ZS0+c2V0QXR0cmlidXRlcyhidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoJmVsZW1l
bnQpKTsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZU93bmVyRWxlbWVudD4oZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PEhUTUxGcmFtZU93bmVy
RWxlbWVudD4oZWxlbWVudCkuY29udGVudERvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgdmFs
dWUtPnNldENvbnRlbnREb2N1bWVudChidWlsZE9iamVjdEZvck5vZGUoZG9jdW1lbnQsIDAsIG5v
ZGVzTWFwKSk7CisgICAgICAgICAgICAgICAgdmFsdWUtPnNldENvbnRlbnREb2N1bWVudChidWls
ZE9iamVjdEZvck5vZGUoZG9jdW1lbnQsIDApKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gZWxlbWVudC5zaGFkb3dSb290KCkpIHsKICAgICAgICAgICAgIGF1
dG8gc2hhZG93Um9vdHMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+OjpjcmVh
dGUoKTsKLSAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9k
ZShyb290LCAwLCBub2Rlc01hcCkpOworICAgICAgICAgICAgc2hhZG93Um9vdHMtPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JOb2RlKHJvb3QsIDApKTsKICAgICAgICAgICAgIHZhbHVlLT5zZXRTaGFk
b3dSb290cyhXVEZNb3ZlKHNoYWRvd1Jvb3RzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
aXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgICAgICB2YWx1ZS0+c2V0
VGVtcGxhdGVDb250ZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZSgmZG93bmNhc3Q8SFRNTFRlbXBsYXRl
RWxlbWVudD4oZWxlbWVudCkuY29udGVudCgpLCAwLCBub2Rlc01hcCkpOworICAgICAgICAgICAg
dmFsdWUtPnNldFRlbXBsYXRlQ29udGVudChidWlsZE9iamVjdEZvck5vZGUoJmRvd25jYXN0PEhU
TUxUZW1wbGF0ZUVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRlbnQoKSwgMCkpOwogCiAgICAgICAgIGlm
IChpczxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTFNjcmlwdEVsZW1lbnQ+
KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjpzcmNBdHRyKSkpCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaChjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaChlbGVt
ZW50KSk7CkBAIC0xNzk5LDcgKzE3ODcsNyBAQCBSZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZAogICAg
ICAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRUeXBlKGVsZW1lbnQucHNldWRvSWQoKSwgJnBzZXVk
b1R5cGUpKQogICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9UeXBlKHBzZXVkb1R5cGUp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGF1dG8gcHNldWRvRWxlbWVudHMg
PSBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVudCwgbm9kZXNNYXApKQorICAgICAg
ICAgICAgaWYgKGF1dG8gcHNldWRvRWxlbWVudHMgPSBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVu
dHMoZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgdmFsdWUtPnNldFBzZXVkb0VsZW1lbnRzKHBz
ZXVkb0VsZW1lbnRzLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChpczxEb2N1bWVudD4oKm5vZGUpKSB7CkBAIC0xODM5LDMxICsxODI3LDMxIEBAIFJlZjxKU09O
OjpBcnJheU9mPFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVu
dEF0dHJpYnV0ZXMoRWxlCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZTsKIH0KIAotUmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWls
ZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5v
ZGVUb0lkTWFwKiBub2Rlc01hcCkKK1JlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5v
ZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5v
ZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoKQogewogICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpB
cnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICBpZiAoZGVwdGggPT0g
MCkgewogICAgICAgICAvLyBTcGVjaWFsLWNhc2UgdGhlIG9ubHkgdGV4dCBjaGlsZCAtIHByZXRl
bmQgdGhhdCBjb250YWluZXIncyBjaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkLgogICAgICAg
ICBOb2RlKiBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlm
IChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RF
ICYmICFmaXJzdENoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBjaGlsZHJlbi0+
YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoZmlyc3RDaGlsZCwgMCwgbm9kZXNNYXApKTsKLSAg
ICAgICAgICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuYWRkKGJpbmQoY29udGFpbmVyLCBub2Rlc01h
cCkpOworICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGZp
cnN0Q2hpbGQsIDApKTsKKyAgICAgICAgICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuYWRkKGJpbmQo
Y29udGFpbmVyKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNoaWxkcmVuOwogICAgIH0K
IAogICAgIE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKGNvbnRhaW5lcik7CiAgICAgZGVw
dGgtLTsKLSAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLmFkZChiaW5kKGNvbnRhaW5lciwgbm9kZXNN
YXApKTsKKyAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLmFkZChiaW5kKGNvbnRhaW5lcikpOwogCiAg
ICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yTm9kZShjaGlsZCwgZGVwdGgsIG5vZGVzTWFwKSk7CisgICAgICAgIGNoaWxkcmVuLT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShjaGlsZCwgZGVwdGgpKTsKICAgICAgICAgY2hpbGQgPSBp
bm5lck5leHRTaWJsaW5nKGNoaWxkKTsKICAgICB9CiAgICAgcmV0dXJuIGNoaWxkcmVuOwogfQog
Ci1SZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiBlbGVtZW50
LCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCitSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50
cyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZUVs
ZW1lbnQgPSBlbGVtZW50LmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKICAgICBQc2V1ZG9FbGVtZW50
KiBhZnRlckVsZW1lbnQgPSBlbGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOwpAQCAtMTg3Miw5
ICsxODYwLDkgQEAgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWQKIAogICAgIGF1dG8gcHNldWRvRWxl
bWVudHMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAg
ICBpZiAoYmVmb3JlRWxlbWVudCkKLSAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0oYnVp
bGRPYmplY3RGb3JOb2RlKGJlZm9yZUVsZW1lbnQsIDAsIG5vZGVzTWFwKSk7CisgICAgICAgIHBz
ZXVkb0VsZW1lbnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShiZWZvcmVFbGVtZW50LCAw
KSk7CiAgICAgaWYgKGFmdGVyRWxlbWVudCkKLSAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0
ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGFmdGVyRWxlbWVudCwgMCwgbm9kZXNNYXApKTsKKyAgICAg
ICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGFmdGVyRWxlbWVu
dCwgMCkpOwogICAgIHJldHVybiBwc2V1ZG9FbGVtZW50czsKIH0KIApAQCAtMjM2MywxOCArMjM1
MSwxOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDb21taXRMb2FkKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICBpZiAoIWZyYW1lT3duZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gZnJhbWVPd25lcklkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChmcmFtZU93bmVyKTsK
KyAgICBhdXRvIGZyYW1lT3duZXJJZCA9IG1fbm9kZVRvSWQuZ2V0KGZyYW1lT3duZXIuZ2V0KCkp
OwogICAgIGlmICghZnJhbWVPd25lcklkKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBSZS1h
ZGQgZnJhbWUgb3duZXIgZWxlbWVudCB0b2dldGhlciB3aXRoIGl0cyBuZXcgY2hpbGRyZW4uCi0g
ICAgYXV0byBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoaW5uZXJQYXJlbnRO
b2RlKGZyYW1lT3duZXIuZ2V0KCkpKTsKKyAgICBhdXRvIHBhcmVudElkID0gbV9ub2RlVG9JZC5n
ZXQoaW5uZXJQYXJlbnROb2RlKGZyYW1lT3duZXIuZ2V0KCkpKTsKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgZnJhbWVPd25lcklkKTsKLSAgICB1
bmJpbmQoZnJhbWVPd25lci5nZXQoKSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgdW5i
aW5kKGZyYW1lT3duZXIuZ2V0KCkpOwogCi0gICAgYXV0byB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9y
Tm9kZShmcmFtZU93bmVyLmdldCgpLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBh
dXRvIHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIuZ2V0KCksIDApOwogICAg
IE5vZGUqIHByZXZpb3VzU2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKGZyYW1lT3duZXIu
Z2V0KCkpOwotICAgIGF1dG8gcHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmdldChwcmV2aW91c1NpYmxpbmcpIDogMDsKKyAgICBhdXRvIHByZXZJZCA9IHBy
ZXZpb3VzU2libGluZyA/IG1fbm9kZVRvSWQuZ2V0KHByZXZpb3VzU2libGluZykgOiAwOwogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklk
LCBXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKQEAgLTI0MjksMTMgKzI0MTcsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlJiBub2RlKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9y
Z2V0IHRoZSBiaW5kaW5ncy4KLSAgICB1bmJpbmQoJm5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRN
YXApOworICAgIHVuYmluZCgmbm9kZSk7CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBu
b2RlLnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKKyAg
ICBhdXRvIHBhcmVudElkID0gbV9ub2RlVG9JZC5nZXQocGFyZW50KTsKICAgICAvLyBSZXR1cm4g
aWYgcGFyZW50IGlzIG5vdCBtYXBwZWQgeWV0LgogICAgIGlmICghcGFyZW50SWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTI0NDYsOCArMjQzNCw4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEluc2VydERPTU5vZGUoTm9kZSYgbm9kZSkKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDaGls
ZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkIC0+IHJldHVybiB2YWx1ZSBvZiBhIG5ldyBjaGlsZC4K
ICAgICAgICAgTm9kZSogcHJldlNpYmxpbmcgPSBpbm5lclByZXZpb3VzU2libGluZygmbm9kZSk7
Ci0gICAgICAgIGF1dG8gcHJldklkID0gcHJldlNpYmxpbmcgPyBtX2RvY3VtZW50Tm9kZVRvSWRN
YXAuZ2V0KHByZXZTaWJsaW5nKSA6IDA7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBidWlsZE9iamVj
dEZvck5vZGUoJm5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgICAgICBhdXRv
IHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9ub2RlVG9JZC5nZXQocHJldlNpYmxpbmcpIDogMDsK
KyAgICAgICAgYXV0byB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZSgmbm9kZSwgMCk7CiAgICAg
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJl
dklkLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQogfQpAQCAtMjQ2MCwxOCArMjQ0OCw2MyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAg
Q29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CiAKICAgICAvLyBJZiBw
YXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KLSAgICBpZiAoIW1f
ZG9jdW1lbnROb2RlVG9JZE1hcC5jb250YWlucyhwYXJlbnQpKQorICAgIGlmICghbV9ub2RlVG9J
ZC5jb250YWlucyhwYXJlbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBhcmVudElk
ID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwYXJlbnQpOworICAgIGF1dG8gcGFyZW50SWQg
PSBtX25vZGVUb0lkLmdldChwYXJlbnQpOwogCisgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2Iv
MTg5Njg3PiBQcmVzZXJ2ZSBET00uTm9kZUlkIGlmIGEgbm9kZSBpcyByZW1vdmVkIGFuZCByZS1h
ZGRlZAogICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsK
ICAgICAgICAgLy8gTm8gY2hpbGRyZW4gYXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24g
Y2hhbmdlcyBvZiBoYXNDaGlsZHJlbi4KICAgICAgICAgaWYgKGlubmVyQ2hpbGROb2RlQ291bnQo
cGFyZW50KSA9PSAxKQogICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9k
ZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KCZub2RlKSk7Ci0gICAgdW5iaW5kKCZub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lk
TWFwKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92ZWQocGFy
ZW50SWQsIG1fbm9kZVRvSWQuZ2V0KCZub2RlKSk7CisgICAgdW5iaW5kKCZub2RlKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmIG5vZGUpCit7
CisgICAgYXV0byBub2RlSWQgPSBtX25vZGVUb0lkLmdldCgmbm9kZSk7CisgICAgaWYgKCFub2Rl
SWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcGFyZW50ID0gbm9kZS5wYXJlbnROb2Rl
KCk7CisKKyAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gR0MuIER1ZSB0
byB0aGUgc2luZ2xlLXByb2Nlc3MgbW9kZWwgdXNlZCBpbiBXZWJLaXQxLCB0aGUKKyAgICAvLyBl
dmVudCBtdXN0IGJlIGRpc3BhdGNoZWQgZnJvbSBhIHRpbWVyIHRvIHByZXZlbnQgdGhlIGZyb250
ZW5kIGZyb20gbWFraW5nIEpTIGFsbG9jYXRpb25zCisgICAgLy8gd2hpbGUgdGhlIEdDIGlzIHN0
aWxsIGFjdGl2ZS4KKworICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE4OTY4Nz4gVW5pZnkg
bV9kZXN0cm95ZWRBdHRhY2hlZE5vZGVJZGVudGlmaWVycyBhbmQgbV9kZXN0cm95ZWREZXRhY2hl
ZE5vZGVJZGVudGlmaWVycy4KKyAgICBpZiAoYXV0byBwYXJlbnRJZCA9IG1fbm9kZVRvSWQuZ2V0
KHBhcmVudCkpCisgICAgICAgIG1fZGVzdHJveWVkQXR0YWNoZWROb2RlSWRlbnRpZmllcnMuYXBw
ZW5kKHsgcGFyZW50SWQsIG5vZGVJZCB9KTsKKyAgICBlbHNlCisgICAgICAgIG1fZGVzdHJveWVk
RGV0YWNoZWROb2RlSWRlbnRpZmllcnMuYXBwZW5kKG5vZGVJZCk7CisKKyAgICBpZiAoIW1fZGVz
dHJveWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2Rlc3Ryb3llZE5vZGVzVGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKKyAgICBtX2lkVG9Ob2RlLnJlbW92ZShub2RlSWQpOwor
ICAgIG1fbm9kZVRvSWQucmVtb3ZlKCZub2RlKTsKKyAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLnJl
bW92ZShub2RlSWQpOworCisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkUmVtb3ZlRE9N
Tm9kZShub2RlLCBub2RlSWQpOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkZXN0cm95
ZWROb2Rlc1RpbWVyRmlyZWQoKQoreworICAgIGZvciAoYXV0byYgW3BhcmVudElkLCBub2RlSWRd
IDogc3RkOjpleGNoYW5nZShtX2Rlc3Ryb3llZEF0dGFjaGVkTm9kZUlkZW50aWZpZXJzLCB7IH0p
KSB7CisgICAgICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkp
IHsKKyAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IG5vZGVGb3JJZChwYXJlbnRJZCk7CisgICAg
ICAgICAgICBpZiAocGFyZW50ICYmIGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSA9PSAxKQor
ICAgICAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVDb3VudFVwZGF0
ZWQocGFyZW50SWQsIDApOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBub2RlSWQpOworICAgIH0KKyAg
ICAKKyAgICBmb3IgKGF1dG8gbm9kZUlkIDogc3RkOjpleGNoYW5nZShtX2Rlc3Ryb3llZERldGFj
aGVkTm9kZUlkZW50aWZpZXJzLCB7IH0pKQorICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
d2lsbERlc3Ryb3lET01Ob2RlKG5vZGVJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpCkBAIC0yNTI2LDcgKzI1NTksNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIGVsZW1lbgogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpjaGFyYWN0ZXJEYXRh
TW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKIHsKLSAgICBhdXRvIGlkID0g
bV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmY2hhcmFjdGVyRGF0YSk7CisgICAgYXV0byBpZCA9
IG1fbm9kZVRvSWQuZ2V0KCZjaGFyYWN0ZXJEYXRhKTsKICAgICBpZiAoIWlkKSB7CiAgICAgICAg
IC8vIFB1c2ggdGV4dCBub2RlIGlmIGl0IGlzIGJlaW5nIGNyZWF0ZWQuCiAgICAgICAgIGRpZElu
c2VydERPTU5vZGUoY2hhcmFjdGVyRGF0YSk7CkBAIC0yNTM3LDcgKzI1NzAsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSYgY2hh
cmFjdGVyRGF0YSkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxl
QXR0cihFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8gaWQgPSBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KCZlbGVtZW50KTsKKyAgICBhdXRvIGlkID0gbV9ub2RlVG9JZC5nZXQoJmVsZW1l
bnQpOwogICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjU0OCwyMiArMjU4MSwy
MiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1l
bnQmIGVsZW1lbnQpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFB1c2hTaGFkb3dSb290
KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7Ci0gICAgYXV0byBob3N0SWQgPSBt
X2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZob3N0KTsKKyAgICBhdXRvIGhvc3RJZCA9IG1fbm9k
ZVRvSWQuZ2V0KCZob3N0KTsKICAgICBpZiAoaG9zdElkKQotICAgICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+c2hhZG93Um9vdFB1c2hlZChob3N0SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZSgmcm9v
dCwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+c2hhZG93Um9vdFB1c2hlZChob3N0SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZSgmcm9vdCwg
MCkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsUG9wU2hhZG93Um9vdChFbGVt
ZW50JiBob3N0LCBTaGFkb3dSb290JiByb290KQogewotICAgIGF1dG8gaG9zdElkID0gbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmdldCgmaG9zdCk7Ci0gICAgYXV0byByb290SWQgPSBtX2RvY3VtZW50
Tm9kZVRvSWRNYXAuZ2V0KCZyb290KTsKKyAgICBhdXRvIGhvc3RJZCA9IG1fbm9kZVRvSWQuZ2V0
KCZob3N0KTsKKyAgICBhdXRvIHJvb3RJZCA9IG1fbm9kZVRvSWQuZ2V0KCZyb290KTsKICAgICBp
ZiAoaG9zdElkICYmIHJvb3RJZCkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNoYWRv
d1Jvb3RQb3BwZWQoaG9zdElkLCByb290SWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBh
dXRvIGVsZW1lbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJmVsZW1lbnQpOworICAg
IGF1dG8gZWxlbWVudElkID0gbV9ub2RlVG9JZC5nZXQoJmVsZW1lbnQpOwogICAgIGlmICghZWxl
bWVudElkKQogICAgICAgICByZXR1cm47CiAKQEAgLTI1OTAsMjcgKzI2MjMsMjcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHNldWRvRWxlbWVudENyZWF0ZWQoUHNldWRvRWxlbWVudCYgcHNl
dWRvRWxlbWVudCkKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKKyAgICBhdXRv
IHBhcmVudElkID0gbV9ub2RlVG9JZC5nZXQocGFyZW50KTsKICAgICBpZiAoIXBhcmVudElkKQog
ICAgICAgICByZXR1cm47CiAKICAgICBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQocGFyZW50SWQs
IDEpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wc2V1ZG9FbGVtZW50QWRkZWQocGFyZW50
SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZSgmcHNldWRvRWxlbWVudCwgMCwgJm1fZG9jdW1lbnROb2Rl
VG9JZE1hcCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wc2V1ZG9FbGVtZW50QWRkZWQo
cGFyZW50SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZSgmcHNldWRvRWxlbWVudCwgMCkpOwogfQogCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVkb0VsZW1l
bnQmIHBzZXVkb0VsZW1lbnQpCiB7Ci0gICAgYXV0byBwc2V1ZG9FbGVtZW50SWQgPSBtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXAuZ2V0KCZwc2V1ZG9FbGVtZW50KTsKKyAgICBhdXRvIHBzZXVkb0VsZW1l
bnRJZCA9IG1fbm9kZVRvSWQuZ2V0KCZwc2V1ZG9FbGVtZW50KTsKICAgICBpZiAoIXBzZXVkb0Vs
ZW1lbnRJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgYSBQc2V1ZG9FbGVtZW50IGlz
IGJvdW5kLCBpdHMgcGFyZW50IGVsZW1lbnQgbXVzdCBoYXZlIGJlZW4gYm91bmQuCiAgICAgRWxl
bWVudCogcGFyZW50ID0gcHNldWRvRWxlbWVudC5ob3N0RWxlbWVudCgpOwogICAgIEFTU0VSVChw
YXJlbnQpOwotICAgIGF1dG8gcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBh
cmVudCk7CisgICAgYXV0byBwYXJlbnRJZCA9IG1fbm9kZVRvSWQuZ2V0KHBhcmVudCk7CiAgICAg
QVNTRVJUKHBhcmVudElkKTsKIAotICAgIHVuYmluZCgmcHNldWRvRWxlbWVudCwgJm1fZG9jdW1l
bnROb2RlVG9JZE1hcCk7CisgICAgdW5iaW5kKCZwc2V1ZG9FbGVtZW50KTsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+cHNldWRvRWxlbWVudFJlbW92ZWQocGFyZW50SWQsIHBzZXVkb0VsZW1l
bnRJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuaAppbmRleCA3NGE2MGY2MTgwOTI2NzZkOGJlZTg3NTM4YzlkNjk3ZjNj
NTg0MzA0Li4wYjcwMGU0NzBkY2U5MzhjMDhjNTBjMjVkZTU3ZjZlM2YwY2MyYjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
CkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcnNU
b05vZGUoTm9kZSYpOwogICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlJik7CiAgICAgdm9p
ZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUmKTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RE9NTm9kZShO
b2RlJik7CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbVN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKTsKICAgICB2b2lkIGRp
ZE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIGRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYsIGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUpOwpAQCAtMTc5LDcgKzE4MCw2IEBAIHB1YmxpYzoKIAogICAg
IC8vIENhbGxiYWNrcyB0aGF0IGRvbid0IGRpcmVjdGx5IGNvcnJlc3BvbmQgdG8gYW4gaW5zdHJ1
bWVudGF0aW9uIGVudHJ5IHBvaW50LgogICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsK
LSAgICB2b2lkIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAKICAgICB2b2lkIHN0eWxlQXR0cmli
dXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpOwogCkBAIC0y
MTgsMTkgKzIxOCwxOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JP
dmVybGF5OjpHcmlkOjpDb25maWc+IGdyaWRPdmVybGF5Q29uZmlnRnJvbUluc3BlY3Rvck9iamVj
dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpPYmplY3Q+
JiYgZ3JpZE92ZXJsYXlJbnNwZWN0b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1l
dGhvZHMuCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlSWQ+IE5vZGVUb0lkTWFwOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6Tm9kZUlkIGJpbmQoTm9kZSosIE5vZGVUb0lkTWFwKik7Ci0gICAgdm9pZCB1bmJpbmQo
Tm9kZSosIE5vZGVUb0lkTWFwKik7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
SWQgYmluZChOb2RlKik7CisgICAgdm9pZCB1bmJpbmQoTm9kZSopOwogCiAgICAgTm9kZSogYXNz
ZXJ0RWRpdGFibGVOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQpOwogICAgIEVsZW1lbnQqIGFzc2VydEVkaXRhYmxl
RWxlbWVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZUlkKTsKIAogICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5k
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBpbnQgZGVwdGggPSAxKTsKIAotICAg
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShO
b2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOworICAgIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoKTsKICAg
ICBSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0
ZXMoRWxlbWVudCopOwotICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWlu
ZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAgICBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yUHNl
dWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CisgICAg
UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRB
cnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoKTsKKyAg
ICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBi
dWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYpOwogICAgIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRM
aXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6RXZlbnRMaXN0ZW5lcklkIGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBjb25zdCBSZWZQdHI8SlNDOjpC
cmVha3BvaW50PiYpOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzPiBidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5v
ZGUmKTsKICAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQVhDb3JlT2JqZWN0
JiwgSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4mKTsKQEAg
LTI0MiwxNiArMjQxLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVh
ZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBjb2xv
ciwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mJiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogCisgICAgdm9pZCBkZXN0cm95ZWROb2Rlc1RpbWVy
RmlyZWQoKTsKKwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01Gcm9u
dGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFBhZ2Um
IG1faW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXkgeyBudWxs
cHRyIH07Ci0gICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVUb0lkTWFwOwotICAgIC8vIE93
bnMgbm9kZSBtYXBwaW5ncyBmb3IgZGFuZ2xpbmcgbm9kZXMuCi0gICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxOb2RlVG9JZE1hcD4+IG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHM7CisgICAgSGFzaE1h
cDxOb2RlKiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IG1fbm9kZVRvSWQ7CiAg
ICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgTm9kZSo+IG1faWRU
b05vZGU7Ci0gICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgTm9k
ZVRvSWRNYXAqPiBtX2lkVG9Ob2Rlc01hcDsKICAgICBIYXNoU2V0PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkPiBtX2NoaWxkcmVuUmVxdWVzdGVkOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZUlkIG1fbGFzdE5vZGVJZCB7IDEgfTsKICAgICBSZWZQdHI8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CkBAIC0yNjUsNiArMjYzLDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKIAorICAgIFZlY3RvcjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGVJZD4gbV9kZXN0cm95ZWREZXRhY2hlZE5vZGVJZGVudGlmaWVyczsKKyAg
ICBWZWN0b3I8c3RkOjpwYWlyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4+IG1fZGVzdHJveWVkQXR0YWNoZWROb2RlSWRl
bnRpZmllcnM7CisgICAgVGltZXIgbV9kZXN0cm95ZWROb2Rlc1RpbWVyOworCiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIFRpbWVyIG1fbWVkaWFNZXRyaWNzVGltZXI7CiAgICAgc3RydWN0IE1lZGlh
TWV0cmljcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMDI4MzBmZDA2NDlhZmYxODMwNTU1YzRj
YThmZDhkYzhmZTEzNmQzYi4uNWVkNTEzMGU4YWYyZDA1NGU3OTFmNDAxMTMwOTIyMTNlNjQ3MTQ2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VD
b25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtNDcsNyArNDcsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBQYWdlQ29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KFBhZ2VBZ2Vu
dENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBXZWJDb25zb2xlQWdlbnQoY29udGV4dCkKLSAgICAs
IG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewogfQpAQCAtNTYsOSAr
NTUsNiBAQCBQYWdlQ29uc29sZUFnZW50Ojp+UGFnZUNvbnNvbGVBZ2VudCgpID0gZGVmYXVsdDsK
IAogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJN
ZXNzYWdlcygpCiB7Ci0gICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+cmVsZWFzZURhbmds
aW5nTm9kZXMoKTsKLQogICAgIHJldHVybiBXZWJDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlQ29uc29sZUFnZW50LmgKaW5kZXggNDFmZTc2ZDAzMjA3MGUwZDQxMDNlNDBhMmMxNDRj
ZTM3OTgxYzgzMy4uZmNkZDI0NzIzZmEyNmY2MGIxZjU2ODIzNDQ2YjQyM2U2ZmQ1MTQzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNv
bnNvbGVBZ2VudC5oCkBAIC00OSw3ICs0OSw2IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHNldExvZ2dpbmdDaGFubmVsTGV2ZWwoSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZSwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6Q2hhbm5lbExldmVsKTsKIAogcHJpdmF0ZToKLSAgICBJbnN0cnVtZW50aW5n
QWdlbnRzJiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgUGFnZSYgbV9pbnNwZWN0ZWRQYWdl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNmMyMDcyYzQyOTk0Y2U3ZWUy
NDVmNzA4NjMxYTZjYzgzZGY3MWE1ZS4uMTA0YWRhODgxNWQ0OTE1Y2JjMjk2ODBjNWIyM2U3YTZl
MmQ3OGMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yNzcsNiArMjc3LDEzIEBA
IHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSkK
ICAgICBtX2RvbU5vZGVSZW1vdmVkQnJlYWtwb2ludHMucmVtb3ZlSWYobm9kZUNvbnRhaW5zQnJl
YWtwb2ludE93bmVyKTsKIH0KIAordm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ry
b3lET01Ob2RlKE5vZGUmIG5vZGUpCit7CisgICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIGluIHJl
c3BvbnNlIHRvIEdDLgorICAgIC8vIERPTSBOb2RlIGRlc3RydWN0aW9uIHNob3VsZCBiZSB0cmVh
dGVkIGFzIGlmIHRoZSBub2RlIHdhcyByZW1vdmVkIGZyb20gdGhlIERPTSB0cmVlLgorICAgIGRp
ZFJlbW92ZURPTU5vZGUobm9kZSk7Cit9CisKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxNb2RpZnlET01BdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2RlYnVnZ2Vy
QWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGQ4
NzI4MjkyNWVjNjkzMTBlMGJjMGU3ODgzY2RjYTUwOGQxMDM1MjIuLmI4MWI1YjMxNWQ3NmNjZTYy
YjNkZTQxZjczYjVjYWY1MzgyY2NiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCkBAIC01Myw2
ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVu
dCk7CiAgICAgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShOb2RlJik7CiAgICAgdm9pZCBkaWRSZW1v
dmVET01Ob2RlKE5vZGUmKTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RE9NTm9kZShOb2RlJik7CiAg
ICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsSW52YWxp
ZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9ET01NYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcwppbmRleCA3MGI4ZmQ4OWEwMGI4YWY5MDJmMTk2
MmIzYzFkYzNkNDdlNjVhYmM2Li44MDA5Y2U4MWNlOGIxZDI3NzczMWM4NzNjYjMzZGYxNTU5NGQ4
MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9ET01NYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKQEAgLTE4NSw2ICsxODUsMTUgQEAgV0ku
RE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8v
IERPTU9ic2VydmVyCiAKKyAgICB3aWxsRGVzdHJveURPTU5vZGUobm9kZUlkKQorICAgIHsKKyAg
ICAgICAgbGV0IG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOworICAgICAgICBub2Rl
Lm1hcmtEZXN0cm95ZWQoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJ
ZF07CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdl
ci5FdmVudC5Ob2RlUmVtb3ZlZCwge25vZGV9KTsKKyAgICB9CisKICAgICBkaWRBZGRFdmVudExp
c3RlbmVyKG5vZGVJZCkKICAgICB7CiAgICAgICAgIGxldCBub2RlID0gdGhpcy5faWRUb0RPTU5v
ZGVbbm9kZUlkXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKaW5kZXggNjRmOWExMmM2M2NkMWE0MGE4
MGQyM2ZjMjc3NmY5OGE0YmIwMzQ2ZS4uMWVhOWMyNDc1OGI5YTQ1Y2YzZTI5NGYzZmQwNDYzMjRh
ZmY0MmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMKQEAgLTc3LDYgKzc3LDExIEBAIFdJLkRP
TU9ic2VydmVyID0gY2xhc3MgRE9NT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRp
c3BhdGNoZXIKICAgICAgICAgV0kuZG9tTWFuYWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnRO
b2RlSWQsIG5vZGVJZCk7CiAgICAgfQogCisgICAgd2lsbERlc3Ryb3lET01Ob2RlKG5vZGVJZCkK
KyAgICB7CisgICAgICAgIFdJLmRvbU1hbmFnZXIud2lsbERlc3Ryb3lET01Ob2RlKG5vZGVJZCk7
CisgICAgfQorCiAgICAgc2hhZG93Um9vdFB1c2hlZChob3N0SWQsIHJvb3QpCiAgICAgewogICAg
ICAgICBXSS5kb21NYW5hZ2VyLl9jaGlsZE5vZGVJbnNlcnRlZChob3N0SWQsIDAsIHJvb3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZVVwZGF0ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlVXBkYXRlci5qcwppbmRleCAxMGY5MjI5MGYxZTE2YTU4OWNlNGE3YzhiZTQzZTk5
ZDJlODZkNGQ4Li42YzBhZThhMTZmOTQzNmVjNmIyZWZiZmYyYWI0ODI4YjMyMWI4MWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
VXBkYXRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlVXBkYXRlci5qcwpAQCAtMTAzLDcgKzEwMywxMSBAQCBXSS5ET01UcmVlVXBkYXRl
ci5wcm90b3R5cGUgPSB7CiAKICAgICBfbm9kZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKLSAgICAgICAgdGhpcy5fcmVjZW50bHlEZWxldGVkTm9kZXMuc2V0KGV2ZW50LmRhdGEubm9k
ZSwge3BhcmVudDogZXZlbnQuZGF0YS5wYXJlbnR9KTsKKyAgICAgICAgbGV0IHBhcmVudCA9IGV2
ZW50LmRhdGEucGFyZW50OworICAgICAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9yZWNlbnRseURlbGV0ZWROb2Rlcy5zZXQoZXZlbnQuZGF0YS5u
b2RlLCB7cGFyZW50fSk7CiAgICAgICAgIGlmICh0aGlzLl90cmVlT3V0bGluZS5fdmlzaWJsZSkK
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNEZWJvdW5jZXIuZGVsYXlGb3JG
cmFtZSgpOwogICAgIH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmE3MjFlMmI3Mzc1NTE0OWY2YjM1MDEzMDU0NGFmYjli
MTkzOTI4NS4uOGQ1N2E2MjkzMWI5MjI4MTg0YmU1MzY3NjQ1NTIxNjdiZDVlMWRkMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTEwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgaW5zdHJ1bWVudGF0aW9uIHRvIG5v
ZGUgZGVzdHJ1Y3Rpb24gZm9yIEluc3BlY3RvckRPTUFnZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lE
T01Ob2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS93aWxs
RGVzdHJveURPTU5vZGUuaHRtbDogQWRkZWQuCisKIDIwMjEtMDYtMDEgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgY2FsYygpIG9uIGNvbXBvbmVudHMg
aW5zaWRlIHJlbGF0aXZlIGNvbG9yIHN5bnRheCBjb2xvcnMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MTI4ZTY0NTI5NjRhMzE5NWRlMDc4YmY2MDBmNDE2NzUzODcwZDRiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIERPTS53aWxsRGVzdHJveURP
TU5vZGUuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET00ud2lsbERlc3Ryb3lET01Ob2Rl
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLndpbGxEZXN0cm95RE9NTm9kZS5DcmVhdGVEZWxl
dGVBbmRHQ0RldGFjaGVkTm9kZQorQ3JlYXRpbmcgbmV3IGRldGFjaGVkIERPTSBub2RlLgorUmVx
dWVzdGluZyBET00gbm9kZSBpbiBvcmRlciB0byByZWNlaXZlIGZ1dHVyZSBldmVudHMuCitSZWxl
YXNpbmcgbm9kZSBhbmQgdGhlbiB0cmlnZ2VyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGlsZSBh
d2FpdGluZyBgRE9NLndpbGxEZXN0cm95RE9NTm9kZWAgZXZlbnQuCitSZWNlaXZlZCBldmVudCBg
RE9NLndpbGxEZXN0b3J5RE9NTm9kZWAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNjhjOWIwZDBhMGUzYzc3YjJjMGJiY2IzYjFlODg0OGQ1ODU4MWE1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUu
aHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxl
dCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00ud2lsbERlc3Ryb3lE
T01Ob2RlIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJET00u
d2lsbERlc3Ryb3lET01Ob2RlLkNyZWF0ZURlbGV0ZUFuZEdDRGV0YWNoZWROb2RlIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJDcmVhdGUgYSBuZXcgRE9NIG5vZGUgdGhhdCBpcyBub3QgYXR0YWNo
ZWQgdGhlIERPTSB0cmVlLCBhbmQgdGhlbiBhbGxvdyBpdCB0byBiZSBnYXJiYWdlIGNvbGxlY3Rl
ZC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgUHJvdG9jb2xUZXN0Lmxv
ZygiQ3JlYXRpbmcgbmV3IGRldGFjaGVkIERPTSBub2RlLiIpOworICAgICAgICAgICAgbGV0IGRv
bU5vZGVSZXNwb25zZSA9IGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7IG1l
dGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsgZXhwcmVzc2lvbjogYGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImEiKWAgfSB9KTsKKyAgICAgICAgICAgIGxldCBvYmplY3RJZCA9IGRv
bU5vZGVSZXNwb25zZS5yZXN1bHQub2JqZWN0SWQ7CisgICAgICAgICAgICBQcm90b2NvbFRlc3Qu
YXNzZXJ0KCFkb21Ob2RlUmVzcG9uc2Uud2FzVGhyb3duKTsKKworICAgICAgICAgICAgUHJvdG9j
b2xUZXN0LmxvZygiUmVxdWVzdGluZyBET00gbm9kZSBpbiBvcmRlciB0byByZWNlaXZlIGZ1dHVy
ZSBldmVudHMuIik7CisgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIxMzQ5OT4gV2ViIEluc3BlY3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGluc3RydW1lbnRl
ZCBhdCBhbnkgcG9pbnQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBkb2N1bWVudCBo
YXMgYWxzbyBiZWVuIGluc3RydW1lbnRlZAorICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHsgbWV0aG9kOiAiRE9NLmdldERvY3VtZW50In0pOworICAgICAg
ICAgICAgbGV0IG5vZGUgPSBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoeyBt
ZXRob2Q6ICJET00ucmVxdWVzdE5vZGUiLCBwYXJhbXM6IHsgb2JqZWN0SWQgfSB9KTsKKworICAg
ICAgICAgICAgLy8gUHJvdG9jb2xUZXN0LmxvZygiUmVsZWFzaW5nIHJlZmVyZW5jZSB0byBub2Rl
IGhlbGQgYnkgcmVtb3RlIG9iamVjdC4iKQorICAgICAgICAgICAgLy8gYXdhaXQgSW5zcGVjdG9y
UHJvdG9jb2wuYXdhaXRDb21tYW5kKHsgbWV0aG9kOiAiQ29uc29sZS5jbGVhck1lc3NhZ2VzIiB9
KTsKKworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUmVsZWFzaW5nIG5vZGUgYW5kIHRo
ZW4gdHJpZ2dlcmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpbGUgYXdhaXRpbmcgYERPTS53aWxs
RGVzdHJveURPTU5vZGVgIGV2ZW50LiIpOworICAgICAgICAgICAgbGV0IGRlbGV0ZU5vZGVQcm9t
aXNlID0gSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHsgbWV0aG9kOiAiUnVudGltZS5y
ZWxlYXNlT2JqZWN0IiwgcGFyYW1zOiB7IG9iamVjdElkIH0gfSk7CisgICAgICAgICAgICBsZXQg
Z2NQcm9taXNlID0gUHJvdG9jb2xUZXN0LmV2YWx1YXRlSW5QYWdlKGBHQ0NvbnRyb2xsZXIuY29s
bGVjdCgpYCk7CisKKyAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDoiRE9NLndpbGxEZXN0cm95
RE9NTm9kZSJ9KSwKKyAgICAgICAgICAgICAgICBkZWxldGVOb2RlUHJvbWlzZS50aGVuKChyZXNv
bHZlKSA9PiBnY1Byb21pc2UpLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIFByb3Rv
Y29sVGVzdC5sb2coIlJlY2VpdmVkIGV2ZW50IGBET00ud2lsbERlc3RvcnlET01Ob2RlYCBhZnRl
ciBnYXJiYWdlIGNvbGxlY3Rpb24uIik7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0
ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCk7Ij4KKzxwPlRlc3QgZm9yIERPTS53aWxsRGVzdHJveURPTU5vZGUu
PC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431219</attachid>
            <date>2021-06-11 12:27:45 -0700</date>
            <delta_ts>2021-06-11 13:02:11 -0700</delta_ts>
            <desc>Patch v2.3 - Add valid key check to InspectorDOMAgent::boundNodeId</desc>
            <filename>bug-226624-20210611122744.patch</filename>
            <type>text/plain</type>
            <size>47224</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi5jMzUzZGU3OGY5NzU1NGMz
Njg4NTY2ODhiMGE3NTM1NjQwZmJmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBgRE9NLndpbGxEZXN0cm95RE9NTm9kZWAg
ZXZlbnQgdG8gaW5mb3JtIHRoZSBmcm9udGVuZCBvZiBET00gbm9kZXMgdGhhdCBubyBsb25nZXIg
ZXhpc3QsIGV2ZW4gaWYgdGhleQorICAgICAgICB3ZXJlbid0IGluIHRoZSBET00gdHJlZS4gVGhp
cyB3b3JrIHNlcnZlcyBhcyBhIHByZWx1ZGUgdG8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE4OTY4
Nz4gKFdlYiBJbnNwZWN0b3I6IHByZXNlcnZlCisgICAgICAgIERPTS5Ob2RlSWQgaWYgYSBub2Rl
IGlzIHJlbW92ZWQgYW5kIHJlLWFkZGVkKSB0byBldmVudHVhbGx5IG9ubHkgZm9yZ2V0IGFib3V0
IG5vZGVzIHVwb24gZGVzdHJ1Y3Rpb24sIGluc3RlYWQgb2YKKyAgICAgICAgcmVtb3ZhbCBmcm9t
IHRoZSBET00gdHJlZS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoK
KwogMjAyMS0wNi0wMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXUEVdW0dUS10gU3VwcG9ydCBidWlsZGluZyBhZ2FpbnN0IHVDbGliYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDk2MGZiMmRmY2MyZTI0YjUyNTI4ZmExMWYxOGQ2Njk1NTc5YzU1MTQuLjRm
MjA3NzQyOTk0MDY1YmZhMmNhMTE0ODY3Njc4NzEwOTIyYTM4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURP
TU5vZGUuaHRtbAorCisgICAgICAgIEFkZCBpbnN0cnVtZW50YXRpb24gZm9yIGRlc3RydWN0aW9u
IG9mIG5vZGVzIGluIG9yZGVyIHRvIGNlYXNlIGluc3RydW1lbnRpbmcgbm9kZXMgYW5kIGluZm9y
bSB0aGUgZnJvbnRlbmQgdGhhdAorICAgICAgICB0aGUgbm9kZSBubyBsb25nZXIgZXhpc3RzLiBU
aGlzIHdvcmsgc2VydmVzIGFzIGEgcHJlbHVkZSB0byA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg5
Njg3PiAoV2ViIEluc3BlY3RvcjoKKyAgICAgICAgcHJlc2VydmUgRE9NLk5vZGVJZCBpZiBhIG5v
ZGUgaXMgcmVtb3ZlZCBhbmQgcmUtYWRkZWQpIHRvIGV2ZW50dWFsbHkgb25seSBmb3JnZXQgYWJv
dXQgbm9kZXMgdXBvbiBkZXN0cnVjdGlvbiwKKyAgICAgICAgaW5zdGVhZCBvZiByZW1vdmFsIGZy
b20gdGhlIERPTSB0cmVlLiBBZGRpdGlvbmFsbHksIHRoZSBzdG9yYWdlIG9mIG5vZGVzIGlzIHNp
bXBsaWZpZWQgZG93biB0byB0d28gaW52ZXJzZSBtYXBzLAorICAgICAgICBvbmUgdGhhdCBtYXBz
IGBOb2RlYCB0byBgTm9kZUlkYCwgYW5kIGFub3RoZXIgdGhhdCBtYXBzIGBOb2RlSWRgIHRvIGBO
b2RlYC4gVGhlc2UgYXJlIGtlcHQgaW4gc3luYyB0aHJvdWdob3V0LAorICAgICAgICBhbmQgYm90
aCBhdHRhY2hlZCBhbmQgZGV0YWNoZWQgbm9kZXMgYXJlIG5vdyBoYW5kbGVkIGFzIHBhcnQgb2Yg
dGhlc2UgdHdvIG1hcHMgb2YgTm9kZXMuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95RE9NTm9kZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpiaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Ym91bmROb2RlSWQp
OgorICAgICAgICAtIEFkZCBhIGNoZWNrIHRoYXQgdGhlIGBOb2RlKmAgaXMgYSB2YWxpZCBrZXkg
KG5vdCBgbnVsbHB0cmApIGJlZm9yZSBnZXR0aW5nIGl0cyBpZC4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0Vs
ZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDb21taXRM
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveURP
TU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRlc3Ryb3llZE5v
ZGVzVGltZXJGaXJlZCk6CisgICAgICAgIC0gQWRkZWQgaW5zdHJ1bWVudGF0aW9uIHBvaW50IGZv
ciBET00gbm9kZXMgYmVpbmcgZGVzdHJveWVkIHNvIHRoZXkgY2FuIGJlIHJlbW92ZWQgZnJvbSB0
aGUgYWdlbnQsIGFuZCB0aGUKKyAgICAgICAgZnJvbnRlbmQgY2FuIGFsc28gYmUgaW5mb3JtZWQg
b2YgdGhlaXIgY2Vhc2luZyB0byBleGlzdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFB1c2hTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsUG9wU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpwc2V1ZG9FbGVtZW50Q3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHNldWRvRWxlbWVudERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVsZWFzZURhbmdsaW5n
Tm9kZXMpOiBEZWxldGVkLgorICAgICAgICAtIFJlbW92ZWQgdXNhZ2Ugb2YgTm9kZVRvSWRNYXAg
YW5kIG5lc3RlZCBtYXBzIG9mIG5vZGVzIHRocm91Z2hvdXQgaW4gZmF2b3Igb2YgdHdvIGludmVy
c2UgbWFwcyBmb3IgcmVsYXRpbmcKKyAgICAgICAgYE5vZGVgcyBhbmQgYE5vZGVJZGBzLiBCZWNh
dXNlIHRoZXJlIGlzIG5vdyBhIHNpbmdsZSBzZXQgb2YgY2Fub25pY2FsIG5vZGUgbWFwcywgd2Ug
bm8gbG9uZ2VyIHRvIHRvIHBhc3MgYQorICAgICAgICBOb2RlVG9JZE1hcCB0aHJvdWdob3V0IHRo
ZSBhZ2VudC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lET01Ob2RlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaDoKKwog
MjAyMS0wNi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBkdXBsaWNhdGUgImJlaGF2aW9yIGZvciBmaXhlZCIgZW50cnkgZnJvbSBzY3Jv
bGxpbmcgc3RhdGUgdHJlZSBsb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAzYzYx
NzczMTJlZjY5NmZiNjJiYTg5MjhiMWY0ZjRjZjgxMzRkY2MwLi44MTIzM2MzYjYxYWU0YTk3YjIz
ZDQ0YTdiNzg5MjZjMmFiZjhhZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRlc3Ry
dWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTGlzdGVuIGZvciB0aGUgbmV3IGBET00ud2lsbERlc3Ryb3lE
T01Ob2RlYCBldmVudCBpbiBvcmRlciB0byBjbGVhbnVwIGFuZCByZW1haW5pbmcgcmVmZXJlbmNl
cyB0byB0aGF0IE5vZGUuCisgICAgICAgIFRoaXMgd29yayBzZXJ2ZXMgYXMgYSBwcmVsdWRlIHRv
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xODk2ODc+IChXZWIgSW5zcGVjdG9yOiBwcmVzZXJ2ZSBE
T00uTm9kZUlkIGlmIGEgbm9kZSBpcworICAgICAgICByZW1vdmVkIGFuZCByZS1hZGRlZCkgdG8g
ZXZlbnR1YWxseSBvbmx5IGZvcmdldCBhYm91dCBub2RlcyB1cG9uIGRlc3RydWN0aW9uLCBpbnN0
ZWFkIG9mIHJlbW92YWwgZnJvbSB0aGUgRE9NCisgICAgICAgIHRyZWUuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01N
YW5hZ2VyLnByb3RvdHlwZS53aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5ET01PYnNlcnZlci5w
cm90b3R5cGUud2lsbERlc3Ryb3lET01Ob2RlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVVcGRhdGVyLmpzOgorICAgICAgICAoV0kuRE9NVHJlZVVwZGF0ZXIucHJvdG90
eXBlLl9ub2RlUmVtb3ZlZCk6CisKIDIwMjEtMDUtMTUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcmVhdGVDb25pY0dyYWRpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbgppbmRleCAxNjIwYzAwM2YwNzZlZWUzMWRkYzhiZTY5YTg0
ZTQ5OTUyOTk4OTJhLi4zYTkxYWM2YjU3ZmFkN2Y0NzJkYWEyZTIxMDdiM2I0ODNkZTcwMTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpz
b24KQEAgLTY3OCw2ICs2NzgsMTMgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJ
ZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9kZSB0aGF0
IGhhcyBiZWVuIHJlbW92ZWQuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogIndpbGxEZXN0cm95RE9NTm9kZSIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBhIGRldGFjaGVkIERPTSBub2RlIGlzIGFib3V0
IHRvIGJlIGRlc3Ryb3llZC4gQ3VycmVudGx5LCB0aGlzIGV2ZW50IHdpbGwgb25seSBiZSBmaXJl
ZCB3aGVuIGEgRE9NIG5vZGUgdGhhdCBpcyBkZXRhY2hlZCBpcyBhYm91dCB0byBiZSBkZXN0cnVj
dGVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0
aGUgbm9kZSB0aGF0IHdpbGwgYmUgZGVzdHJveWVkLiIgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJzaGFkb3dSb290UHVzaGVkIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsZWQgd2hlbiBzaGFkb3cgcm9vdCBpcyBw
dXNoZWQgaW50byB0aGUgZWxlbWVudC4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGZkYWJjZDNlN2I4
OTJlNTAxZDg3OTQzMmFjNDZjM2Q3MTNmOGViMDAuLmE0MTBmOTQ4NmI2YTJiOGNmYWU4ZjAyMWMy
YzI5YWJiZWVhM2JiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNs
dWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5wdXRFdmVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKQEAgLTM0OSw2ICszNTAsOCBAQCBOb2RlOjp+
Tm9kZSgpCiAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgQVNTRVJUKCFtX2Fk
b3B0aW9uSXNSZXF1aXJlZCk7CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
ZXN0cm95RE9NTm9kZSgqdGhpcyk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKCFpZ25vcmVT
ZXQoKS5yZW1vdmUoKnRoaXMpKQogICAgICAgICBub2RlQ291bnRlci5kZWNyZW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggMjE4Y2U0Yjk0N2M0MjU0N2VjNGY5Y2Y5ZTg1MTdhNWRjMzUyYzRjNC4uYTYw
ZDQ2NDM0NGZkOTAxNDAyODhhMGFjY2U1YjM5YjExMTQ0MTQ3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTE3
Niw2ICsxNzYsMTQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURP
TU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KICAgICAgICAgZG9tQWdlbnQt
PmRpZFJlbW92ZURPTU5vZGUobm9kZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGVzdHJveURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUpCit7CisgICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dl
ckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQo
KSkKKyAgICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPndpbGxEZXN0cm95RE9NTm9kZShub2Rl
KTsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRET01BZ2VudCgpKQorICAgICAgICBkb21BZ2VudC0+d2lsbERlc3Ryb3lET01Ob2RlKG5vZGUp
OworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENvbnRleHRD
aGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2Rl
JiBub2RlLCBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyKQogewogICAgIGlmIChhdXRvKiBjc3NB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
OGYwNDA0NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uY2UxMDExOWM4NjFjYWI5
NTRlZWMzN2M0OGU5MTk3YzMyMzQwY2ZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlKERvY3VtZW50JiwgTm9kZSYp
OwogICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50JiwgTm9kZSYpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5vZGUoRG9jdW1lbnQmLCBOb2RlJik7CisgICAg
c3RhdGljIHZvaWQgd2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmKTsKICAgICBzdGF0aWMgdm9pZCBu
b2RlTGF5b3V0Q29udGV4dENoYW5nZWQoTm9kZSYsIFJlbmRlck9iamVjdCopOwogICAgIHN0YXRp
YyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKERvY3VtZW50JiwgRWxlbWVudCYsIGNvbnN0IEF0b21T
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7CiAgICAgc3RhdGlj
IHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVudCYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSk7CkBAIC0zNTAsNiArMzUxLDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgTm9kZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92
ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CisgICAgc3RhdGljIHZv
aWQgd2lsbERlc3Ryb3lET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOwog
ICAgIHN0YXRpYyB2b2lkIG5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIE5vZGUmLCBSZW5kZXJPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTW9k
aWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9t
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpOwogICAgIHN0YXRp
YyB2b2lkIGRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50
JiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpOwpAQCAt
NjAxLDYgKzYwMywxMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlbW92ZURPTU5vZGUoRG9jdW1lbnQmIGRvY3VtZW50LCBOb2RlJgogICAgICAgICBkaWRSZW1v
dmVET01Ob2RlSW1wbCgqYWdlbnRzLCBub2RlKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYgbm9kZSkKK3sKKyAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoYXV0byogYWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50cyhub2RlLmRvY3VtZW50KCkpKQorICAgICAgICB3aWxsRGVz
dHJveURPTU5vZGVJbXBsKCphZ2VudHMsIG5vZGUpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Om5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZChOb2RlJiBub2RlLCBS
ZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAwNGMxNzU3MmZmNjU2ZjIyMmExMzFlODBhOTcz
MTNlZGI1MzIxZjRlLi42YWZiMmExYTIyNDYyYzhkNjQ1MDJlY2JmZWEzNTQ3YTE2NWRkMmM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtMTE2MCw2ICsxMTYwLDcgQEAgUmVmUHRyPFByb3RvY29sOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUK
IAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlLCBQ
cm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkKQogeworICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxl
ZCBpbiByZXNwb25zZSB0byBHQy4KICAgICBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUucmVt
b3ZlKG5vZGVJZCk7CiAKICAgICBhdXRvIHNoZWV0ID0gbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNo
ZWV0LnRha2UoJm5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBkNDYyZWZjMzA2YTI5OWI1OGU3OGM1ZDk0
ZTZlODc1N2UxNzM0ZDgyLi5kMjdjYWRhMjY2NGY5OTY5NTI1ZDA1NDY4YmRjZGJiZTUwMDc0MTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIEluc3BlY3RvckRPTUFnZW50OjpJbnNw
ZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVybGF5
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5z
cGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX292ZXJsYXkob3Zlcmxh
eSkKKyAgICAsIG1fZGVzdHJveWVkTm9kZXNUaW1lcigqdGhpcywgJkluc3BlY3RvckRPTUFnZW50
OjpkZXN0cm95ZWROb2Rlc1RpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICwgbV9t
ZWRpYU1ldHJpY3NUaW1lcigqdGhpcywgJkluc3BlY3RvckRPTUFnZW50OjptZWRpYU1ldHJpY3NU
aW1lckZpcmVkKQogI2VuZGlmCkBAIC0zNTQsNiArMzU1LDExIEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnJlc2V0KCkKICAgICBpZiAobV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzaykKICAgICAg
ICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+cmVzZXQoKTsKICAgICBtX2RvY3VtZW50ID0g
bnVsbHB0cjsKKworICAgIG1fZGVzdHJveWVkRGV0YWNoZWROb2RlSWRlbnRpZmllcnMuY2xlYXIo
KTsKKyAgICBtX2Rlc3Ryb3llZEF0dGFjaGVkTm9kZUlkZW50aWZpZXJzLmNsZWFyKCk7CisgICAg
aWYgKG1fZGVzdHJveWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2Rlc3Ryb3ll
ZE5vZGVzVGltZXIuc3RvcCgpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0zNzMsMjYgKzM3OSwxOCBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5kb2N1bWVudFVwZGF0ZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cmVsZWFzZURhbmdsaW5nTm9kZXMoKQotewotICAgIG1fZGFuZ2xpbmdOb2Rl
VG9JZE1hcHMuY2xlYXIoKTsKLX0KLQotUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRP
TUFnZW50OjpiaW5kKE5vZGUqIG5vZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKK1Byb3RvY29s
OjpET006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6YmluZChOb2RlKiBub2RlKQogewotICAg
IGF1dG8gaWQgPSBub2Rlc01hcC0+Z2V0KG5vZGUpOwotICAgIGlmIChpZCkKKyAgICByZXR1cm4g
bV9ub2RlVG9JZC5lbnN1cmUobm9kZSwgWyZdIHsKKyAgICAgICAgYXV0byBpZCA9IG1fbGFzdE5v
ZGVJZCsrOworICAgICAgICBtX2lkVG9Ob2RlLnNldChpZCwgbm9kZSk7CiAgICAgICAgIHJldHVy
biBpZDsKLSAgICBpZCA9IG1fbGFzdE5vZGVJZCsrOwotICAgIG5vZGVzTWFwLT5zZXQobm9kZSwg
aWQpOwotICAgIG1faWRUb05vZGUuc2V0KGlkLCBub2RlKTsKLSAgICBtX2lkVG9Ob2Rlc01hcC5z
ZXQoaWQsIG5vZGVzTWFwKTsKLSAgICByZXR1cm4gaWQ7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQoTm9kZSogbm9kZSwgTm9kZVRv
SWRNYXAqIG5vZGVzTWFwKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5iaW5kKE5vZGUqIG5v
ZGUpCiB7Ci0gICAgYXV0byBpZCA9IG5vZGVzTWFwLT5nZXQobm9kZSk7CisgICAgYXV0byBpZCA9
IG1fbm9kZVRvSWQudGFrZShub2RlKTsKICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAK
QEAgLTQwMSwyOCArMzk5LDI2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZChOb2Rl
KiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiAgICAgaWYgKG5vZGUtPmlzRnJhbWVPd25l
ckVsZW1lbnQoKSkgewogICAgICAgICBjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIGZyYW1l
T3duZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqPihub2RlKTsK
ICAgICAgICAgaWYgKERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQgPSBmcmFtZU93bmVyLT5jb250
ZW50RG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHVuYmluZChjb250ZW50RG9jdW1lbnQsIG5vZGVz
TWFwKTsKKyAgICAgICAgICAgIHVuYmluZChjb250ZW50RG9jdW1lbnQpOwogICAgIH0KIAogICAg
IGlmIChpczxFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRv
d25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBl
bGVtZW50LnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHVuYmluZChyb290LCBub2Rlc01hcCk7
CisgICAgICAgICAgICB1bmJpbmQocm9vdCk7CiAgICAgICAgIGlmIChQc2V1ZG9FbGVtZW50KiBi
ZWZvcmVFbGVtZW50ID0gZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgICAg
ICB1bmJpbmQoYmVmb3JlRWxlbWVudCwgbm9kZXNNYXApOworICAgICAgICAgICAgdW5iaW5kKGJl
Zm9yZUVsZW1lbnQpOwogICAgICAgICBpZiAoUHNldWRvRWxlbWVudCogYWZ0ZXJFbGVtZW50ID0g
ZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHVuYmluZChhZnRlckVs
ZW1lbnQsIG5vZGVzTWFwKTsKKyAgICAgICAgICAgIHVuYmluZChhZnRlckVsZW1lbnQpOwogICAg
IH0KIAotICAgIG5vZGVzTWFwLT5yZW1vdmUobm9kZSk7Ci0KICAgICBpZiAoYXV0byogY3NzQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCiAgICAgICAgIGNz
c0FnZW50LT5kaWRSZW1vdmVET01Ob2RlKCpub2RlLCBpZCk7CiAKICAgICBpZiAobV9jaGlsZHJl
blJlcXVlc3RlZC5yZW1vdmUoaWQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0
ZXIgdG8gZG8gdGhpcyBpdGVyYXRpdmVseSByYXRoZXIgdGhhbiByZWN1cnNpdmVseS4KICAgICAg
ICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxk
ID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCi0gICAgICAgICAgICB1bmJpbmQoY2hpbGQsIG5v
ZGVzTWFwKTsKKyAgICAgICAgICAgIHVuYmluZChjaGlsZCk7CiAgICAgfQogfQogCkBAIC01MDAs
NyArNDk2LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpET006Ok5v
ZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQKICAgICByZXNldCgpOwogICAgIG1f
ZG9jdW1lbnQgPSBkb2N1bWVudDsKIAotICAgIGF1dG8gcm9vdCA9IGJ1aWxkT2JqZWN0Rm9yTm9k
ZShtX2RvY3VtZW50LmdldCgpLCAyLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBhdXRv
IHJvb3QgPSBidWlsZE9iamVjdEZvck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMik7CiAKICAgICBp
ZiAobV9ub2RlVG9Gb2N1cykKICAgICAgICAgZm9jdXNOb2RlKCk7CkBAIC01MTQsOCArNTEwLDYg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKFByb3Rv
Y29sOjpET006Ok5vZGVJZCBub2RlSWQsIGkKICAgICBpZiAoIW5vZGUgfHwgKG5vZGUtPm5vZGVU
eXBlKCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6
RE9DVU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBOb2RlVG9JZE1hcCogbm9kZU1hcCA9
IG1faWRUb05vZGVzTWFwLmdldChub2RlSWQpOwotCiAgICAgaWYgKG1fY2hpbGRyZW5SZXF1ZXN0
ZWQuY29udGFpbnMobm9kZUlkKSkgewogICAgICAgICBpZiAoZGVwdGggPD0gMSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTUyMyw3ICs1MTcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpw
dXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCwgaQog
ICAgICAgICBkZXB0aC0tOwogCiAgICAgICAgIGZvciAobm9kZSA9IGlubmVyRmlyc3RDaGlsZChu
b2RlKTsgbm9kZTsgbm9kZSA9IGlubmVyTmV4dFNpYmxpbmcobm9kZSkpIHsKLSAgICAgICAgICAg
IGF1dG8gY2hpbGROb2RlSWQgPSBub2RlTWFwLT5nZXQobm9kZSk7CisgICAgICAgICAgICBhdXRv
IGNoaWxkTm9kZUlkID0gYm91bmROb2RlSWQobm9kZSk7CiAgICAgICAgICAgICBBU1NFUlQoY2hp
bGROb2RlSWQpOwogICAgICAgICAgICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGNoaWxkTm9k
ZUlkLCBkZXB0aCk7CiAgICAgICAgIH0KQEAgLTUzMSwxNyArNTI1LDE2IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChQcm90b2NvbDo6RE9NOjpOb2Rl
SWQgbm9kZUlkLCBpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNoaWxkcmVu
ID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsK
KyAgICBhdXRvIGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUs
IGRlcHRoKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2Rlcyhub2RlSWQs
IFdURk1vdmUoY2hpbGRyZW4pKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2Fy
ZEJpbmRpbmdzKCkKIHsKLSAgICBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuY2xlYXIoKTsKKyAgICBt
X25vZGVUb0lkLmNsZWFyKCk7CiAgICAgbV9pZFRvTm9kZS5jbGVhcigpOwogICAgIG1fZGlzcGF0
Y2hlZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuY2xlYXIoKTsK
LSAgICByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xl
YXIoKTsKIH0KIApAQCAtNjU0LDUxICs2NDcsNDggQEAgUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIElu
c3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKFByb3RvY29sOjpFcnJvclMK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMzQ5OT4gV2Vi
IEluc3BlY3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGluc3RydW1lbnRlZCBhdCBhbnkgcG9p
bnQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBkb2N1bWVudCBoYXMgYWxzbyBiZWVu
IGluc3RydW1lbnRlZAotICAgIGlmICghbV9kb2N1bWVudE5vZGVUb0lkTWFwLmNvbnRhaW5zKG1f
ZG9jdW1lbnQpKSB7CisgICAgaWYgKCFtX25vZGVUb0lkLmNvbnRhaW5zKG1fZG9jdW1lbnQuZ2V0
KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3VtZW50IG11c3QgaGF2ZSBiZWVuIHJl
cXVlc3RlZCJfczsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIGlk
IGluIGNhc2UgdGhlIG5vZGUgaXMga25vd24uCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0gbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmdldChub2RlVG9QdXNoKSkKKyAgICBpZiAoYXV0byByZXN1bHQgPSBi
b3VuZE5vZGVJZChub2RlVG9QdXNoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIE5v
ZGUqIG5vZGUgPSBub2RlVG9QdXNoOwogICAgIFZlY3RvcjxOb2RlKj4gcGF0aDsKLSAgICBOb2Rl
VG9JZE1hcCogZGFuZ2xpbmdNYXAgPSAwOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAg
Tm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVu
dCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVz
aCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBhdXRvIG5ld01hcCA9IG1ha2VVbmlxdWU8Tm9k
ZVRvSWRNYXA+KCk7Ci0gICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKLSAg
ICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkp
OwogICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRP
TTo6Tm9kZT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRP
YmplY3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7CisgICAgICAgICAgICBjaGlsZHJl
bi0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCkpOwogICAgICAgICAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMoMCwgV1RGTW92ZShjaGlsZHJlbikpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXRoLmFw
cGVuZChwYXJlbnQpOwotICAgICAgICAgICAgaWYgKG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQo
cGFyZW50KSkKKyAgICAgICAgICAgIGlmIChib3VuZE5vZGVJZChwYXJlbnQpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5vZGUgPSBw
YXJlbnQ7CisgICAgICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgTm9kZVRvSWRNYXAqIG1hcCA9IGRhbmdsaW5nTWFwID8gZGFuZ2xpbmdNYXAgOiAmbV9kb2N1
bWVudE5vZGVUb0lkTWFwOwogICAgIGZvciAoaW50IGkgPSBwYXRoLnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7Ci0gICAgICAgIGF1dG8gbm9kZUlkID0gbWFwLT5nZXQocGF0aC5hdChpKSk7Cisg
ICAgICAgIGF1dG8gbm9kZUlkID0gYm91bmROb2RlSWQocGF0aC5hdChpKSk7CiAgICAgICAgIEFT
U0VSVChub2RlSWQpOwogICAgICAgICBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobm9kZUlkKTsK
ICAgICB9Ci0gICAgcmV0dXJuIG1hcC0+Z2V0KG5vZGVUb1B1c2gpOworICAgIHJldHVybiBib3Vu
ZE5vZGVJZChub2RlVG9QdXNoKTsKIH0KIAogUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3Rv
ckRPTUFnZW50Ojpib3VuZE5vZGVJZChjb25zdCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiBt
X2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKTsKKyAgICBp
ZiAoIW1fbm9kZVRvSWQuaXNWYWxpZEtleShub2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gbV9ub2RlVG9JZC5nZXQobm9kZSk7CiB9CiAKIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVWYWx1ZShQcm90b2NvbDo6
RE9NOjpOb2RlSWQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCkBAIC0xNzEyLDkgKzE3MDIsOSBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2Vj
dXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNvZGVkKGRpZ2VzdC5kYXRhKCksIGRpZ2Vz
dC5zaXplKCkpKTsKIH0KIAotUmVmPFByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1h
cCogbm9kZXNNYXApCitSZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZGVwdGgpCiB7Ci0gICAgYXV0byBp
ZCA9IGJpbmQobm9kZSwgbm9kZXNNYXApOworICAgIGF1dG8gaWQgPSBiaW5kKG5vZGUpOwogICAg
IFN0cmluZyBub2RlTmFtZTsKICAgICBTdHJpbmcgbG9jYWxOYW1lOwogICAgIFN0cmluZyBub2Rl
VmFsdWU7CkBAIC0xNzU2LDcgKzE3NDYsNyBAQCBSZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZAogICAg
IGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkgewogICAgICAgICBpbnQgbm9kZUNvdW50ID0g
aW5uZXJDaGlsZE5vZGVDb3VudChub2RlKTsKICAgICAgICAgdmFsdWUtPnNldENoaWxkTm9kZUNv
dW50KG5vZGVDb3VudCk7Ci0gICAgICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29u
dGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKKyAgICAgICAgYXV0byBjaGls
ZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCk7CiAgICAg
ICAgIGlmIChjaGlsZHJlbi0+bGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgdmFsdWUtPnNldENo
aWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKTsKICAgICB9CkBAIC0xNzc1LDE3ICsxNzY1LDE3IEBA
IFJlZjxQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JOb2RlKE5vZGUqIG5vZGUsIGludCBkCiAgICAgICAgIHZhbHVlLT5zZXRBdHRyaWJ1dGVzKGJ1
aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcygmZWxlbWVudCkpOwogICAgICAgICBpZiAoaXM8
SFRNTEZyYW1lT3duZXJFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gZG93bmNhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50PihlbGVtZW50KS5jb250
ZW50RG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICB2YWx1ZS0+c2V0Q29udGVudERvY3VtZW50
KGJ1aWxkT2JqZWN0Rm9yTm9kZShkb2N1bWVudCwgMCwgbm9kZXNNYXApKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZS0+c2V0Q29udGVudERvY3VtZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZShkb2N1bWVu
dCwgMCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVt
ZW50LnNoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgYXV0byBzaGFkb3dSb290cyA9IEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgc2hh
ZG93Um9vdHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKHJvb3QsIDAsIG5vZGVzTWFwKSk7
CisgICAgICAgICAgICBzaGFkb3dSb290cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUocm9v
dCwgMCkpOwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKFdURk1vdmUoc2hhZG93
Um9vdHMpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50
PihlbGVtZW50KSkKLSAgICAgICAgICAgIHZhbHVlLT5zZXRUZW1wbGF0ZUNvbnRlbnQoYnVpbGRP
YmplY3RGb3JOb2RlKCZkb3duY2FzdDxIVE1MVGVtcGxhdGVFbGVtZW50PihlbGVtZW50KS5jb250
ZW50KCksIDAsIG5vZGVzTWFwKSk7CisgICAgICAgICAgICB2YWx1ZS0+c2V0VGVtcGxhdGVDb250
ZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZSgmZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oZWxl
bWVudCkuY29udGVudCgpLCAwKSk7CiAKICAgICAgICAgaWYgKGlzPEhUTUxTdHlsZUVsZW1lbnQ+
KGVsZW1lbnQpIHx8IChpczxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQu
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIpKSkK
ICAgICAgICAgICAgIHZhbHVlLT5zZXRDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoKGNvbXB1dGVD
b250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGVsZW1lbnQpKTsKQEAgLTE3OTksNyArMTc4
OSw3IEBAIFJlZjxQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGludCBkCiAgICAgICAgICAgICBpZiAocHNldWRvRWxl
bWVudFR5cGUoZWxlbWVudC5wc2V1ZG9JZCgpLCAmcHNldWRvVHlwZSkpCiAgICAgICAgICAgICAg
ICAgdmFsdWUtPnNldFBzZXVkb1R5cGUocHNldWRvVHlwZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBwc2V1ZG9FbGVtZW50cyA9IGJ1aWxkQXJyYXlGb3JQc2V1ZG9F
bGVtZW50cyhlbGVtZW50LCBub2Rlc01hcCkpCisgICAgICAgICAgICBpZiAoYXV0byBwc2V1ZG9F
bGVtZW50cyA9IGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhlbGVtZW50KSkKICAgICAgICAg
ICAgICAgICB2YWx1ZS0+c2V0UHNldWRvRWxlbWVudHMocHNldWRvRWxlbWVudHMucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGlzPERvY3VtZW50Pigqbm9kZSkp
IHsKQEAgLTE4MzksMzEgKzE4MjksMzEgQEAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGUKICAgICBy
ZXR1cm4gYXR0cmlidXRlc1ZhbHVlOwogfQogCi1SZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQor
UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVw
dGgpCiB7CiAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6
Tm9kZT46OmNyZWF0ZSgpOwogICAgIGlmIChkZXB0aCA9PSAwKSB7CiAgICAgICAgIC8vIFNwZWNp
YWwtY2FzZSB0aGUgb25seSB0ZXh0IGNoaWxkIC0gcHJldGVuZCB0aGF0IGNvbnRhaW5lcidzIGNo
aWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQuCiAgICAgICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBj
b250YWluZXItPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgaWYgKGZpcnN0Q2hpbGQgJiYgZmlyc3RD
aGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUgJiYgIWZpcnN0Q2hpbGQtPm5leHRT
aWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
Tm9kZShmaXJzdENoaWxkLCAwLCBub2Rlc01hcCkpOwotICAgICAgICAgICAgbV9jaGlsZHJlblJl
cXVlc3RlZC5hZGQoYmluZChjb250YWluZXIsIG5vZGVzTWFwKSk7CisgICAgICAgICAgICBjaGls
ZHJlbi0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoZmlyc3RDaGlsZCwgMCkpOworICAgICAg
ICAgICAgbV9jaGlsZHJlblJlcXVlc3RlZC5hZGQoYmluZChjb250YWluZXIpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gY2hpbGRyZW47CiAgICAgfQogCiAgICAgTm9kZSogY2hpbGQgPSBp
bm5lckZpcnN0Q2hpbGQoY29udGFpbmVyKTsKICAgICBkZXB0aC0tOwotICAgIG1fY2hpbGRyZW5S
ZXF1ZXN0ZWQuYWRkKGJpbmQoY29udGFpbmVyLCBub2Rlc01hcCkpOworICAgIG1fY2hpbGRyZW5S
ZXF1ZXN0ZWQuYWRkKGJpbmQoY29udGFpbmVyKSk7CiAKICAgICB3aGlsZSAoY2hpbGQpIHsKLSAg
ICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCBkZXB0aCwg
bm9kZXNNYXApKTsKKyAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2Rl
KGNoaWxkLCBkZXB0aCkpOwogICAgICAgICBjaGlsZCA9IGlubmVyTmV4dFNpYmxpbmcoY2hpbGQp
OwogICAgIH0KICAgICByZXR1cm4gY2hpbGRyZW47CiB9CiAKLVJlZlB0cjxKU09OOjpBcnJheU9m
PFByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBz
ZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIE5vZGVUb0lkTWFwKiBub2Rlc01h
cCkKK1JlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgUHNldWRvRWxlbWVudCogYmVmb3JlRWxlbWVudCA9IGVsZW1lbnQuYmVmb3Jl
UHNldWRvRWxlbWVudCgpOwogICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyRWxlbWVudCA9IGVsZW1l
bnQuYWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CkBAIC0xODcyLDkgKzE4NjIsOSBAQCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JQc2V1ZAogCiAgICAgYXV0byBwc2V1ZG9FbGVtZW50cyA9IEpTT046OkFycmF5T2Y8
UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgIGlmIChiZWZvcmVFbGVtZW50KQot
ICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoYmVmb3Jl
RWxlbWVudCwgMCwgbm9kZXNNYXApKTsKKyAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JOb2RlKGJlZm9yZUVsZW1lbnQsIDApKTsKICAgICBpZiAoYWZ0ZXJFbGVt
ZW50KQotICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUo
YWZ0ZXJFbGVtZW50LCAwLCBub2Rlc01hcCkpOworICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRk
SXRlbShidWlsZE9iamVjdEZvck5vZGUoYWZ0ZXJFbGVtZW50LCAwKSk7CiAgICAgcmV0dXJuIHBz
ZXVkb0VsZW1lbnRzOwogfQogCkBAIC0yMzYzLDE4ICsyMzUzLDE4IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIGlmICghZnJh
bWVPd25lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmcmFtZU93bmVySWQgPSBtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGZyYW1lT3duZXIpOworICAgIGF1dG8gZnJhbWVPd25lcklk
ID0gYm91bmROb2RlSWQoZnJhbWVPd25lci5nZXQoKSk7CiAgICAgaWYgKCFmcmFtZU93bmVySWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJlLWFkZCBmcmFtZSBvd25lciBlbGVtZW50IHRv
Z2V0aGVyIHdpdGggaXRzIG5ldyBjaGlsZHJlbi4KLSAgICBhdXRvIHBhcmVudElkID0gbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmdldChpbm5lclBhcmVudE5vZGUoZnJhbWVPd25lci5nZXQoKSkpOwor
ICAgIGF1dG8gcGFyZW50SWQgPSBib3VuZE5vZGVJZChpbm5lclBhcmVudE5vZGUoZnJhbWVPd25l
ci5nZXQoKSkpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBh
cmVudElkLCBmcmFtZU93bmVySWQpOwotICAgIHVuYmluZChmcmFtZU93bmVyLmdldCgpLCAmbV9k
b2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICB1bmJpbmQoZnJhbWVPd25lci5nZXQoKSk7CiAKLSAg
ICBhdXRvIHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIuZ2V0KCksIDAsICZt
X2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgIGF1dG8gdmFsdWUgPSBidWlsZE9iamVjdEZvck5v
ZGUoZnJhbWVPd25lci5nZXQoKSwgMCk7CiAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nID0gaW5u
ZXJQcmV2aW91c1NpYmxpbmcoZnJhbWVPd25lci5nZXQoKSk7Ci0gICAgYXV0byBwcmV2SWQgPSBw
cmV2aW91c1NpYmxpbmcgPyBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHByZXZpb3VzU2libGlu
ZykgOiAwOworICAgIGF1dG8gcHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gYm91bmROb2RlSWQo
cHJldmlvdXNTaWJsaW5nKSA6IDA7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9k
ZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIFdURk1vdmUodmFsdWUpKTsKIH0KIApAQCAtMjQy
OSwxMyArMjQxOSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2Rl
KE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGNvdWxkIGJlIGF0dGFj
aGluZyBleGlzdGluZyBzdWJ0cmVlLiBGb3JnZXQgdGhlIGJpbmRpbmdzLgotICAgIHVuYmluZCgm
bm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgdW5iaW5kKCZub2RlKTsKIAogICAg
IENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFy
ZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmdldChwYXJlbnQpOworICAgIGF1dG8gcGFyZW50SWQgPSBib3VuZE5vZGVJZChw
YXJlbnQpOwogICAgIC8vIFJldHVybiBpZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQuCiAgICAg
aWYgKCFwYXJlbnRJZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0Niw4ICsyNDM2LDggQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlJiBub2RlKQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIENoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQgLT4gcmV0dXJu
IHZhbHVlIG9mIGEgbmV3IGNoaWxkLgogICAgICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVy
UHJldmlvdXNTaWJsaW5nKCZub2RlKTsKLSAgICAgICAgYXV0byBwcmV2SWQgPSBwcmV2U2libGlu
ZyA/IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocHJldlNpYmxpbmcpIDogMDsKLSAgICAgICAg
YXV0byB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZSgmbm9kZSwgMCwgJm1fZG9jdW1lbnROb2Rl
VG9JZE1hcCk7CisgICAgICAgIGF1dG8gcHJldklkID0gcHJldlNpYmxpbmcgPyBib3VuZE5vZGVJ
ZChwcmV2U2libGluZykgOiAwOworICAgICAgICBhdXRvIHZhbHVlID0gYnVpbGRPYmplY3RGb3JO
b2RlKCZub2RlLCAwKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUlu
c2VydGVkKHBhcmVudElkLCBwcmV2SWQsIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiB9CkBAIC0y
NDU5LDE5ICsyNDQ5LDYzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5v
ZGUoTm9kZSYgbm9kZSkKIAogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUucGFyZW50
Tm9kZSgpOwogCisgICAgYXV0byBwYXJlbnRJZCA9IGJvdW5kTm9kZUlkKHBhcmVudCk7CiAgICAg
Ly8gSWYgcGFyZW50IGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCi0gICAg
aWYgKCFtX2RvY3VtZW50Tm9kZVRvSWRNYXAuY29udGFpbnMocGFyZW50KSkKKyAgICBpZiAoIXBh
cmVudElkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVu
dE5vZGVUb0lkTWFwLmdldChwYXJlbnQpOwotCisgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2Iv
MTg5Njg3PiBQcmVzZXJ2ZSBET00uTm9kZUlkIGlmIGEgbm9kZSBpcyByZW1vdmVkIGFuZCByZS1h
ZGRlZAogICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsK
ICAgICAgICAgLy8gTm8gY2hpbGRyZW4gYXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24g
Y2hhbmdlcyBvZiBoYXNDaGlsZHJlbi4KICAgICAgICAgaWYgKGlubmVyQ2hpbGROb2RlQ291bnQo
cGFyZW50KSA9PSAxKQogICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9k
ZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KCZub2RlKSk7Ci0gICAgdW5iaW5kKCZub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lk
TWFwKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92ZWQocGFy
ZW50SWQsIGJvdW5kTm9kZUlkKCZub2RlKSk7CisgICAgdW5iaW5kKCZub2RlKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmIG5vZGUpCit7Cisg
ICAgaWYgKGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKCZub2RlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBub2RlSWQgPSBtX25vZGVUb0lkLnRha2UoJm5vZGUpOworICAgIGlmICgh
bm9kZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lkVG9Ob2RlLnJlbW92ZShub2RlSWQp
OworICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQucmVtb3ZlKG5vZGVJZCk7CisKKyAgICBpZiAoYXV0
byogY3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCisg
ICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVET01Ob2RlKG5vZGUsIG5vZGVJZCk7CisKKyAgICAv
LyBUaGlzIGNhbiBiZSBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gR0MuIER1ZSB0byB0aGUgc2luZ2xl
LXByb2Nlc3MgbW9kZWwgdXNlZCBpbiBXZWJLaXQxLCB0aGUKKyAgICAvLyBldmVudCBtdXN0IGJl
IGRpc3BhdGNoZWQgZnJvbSBhIHRpbWVyIHRvIHByZXZlbnQgdGhlIGZyb250ZW5kIGZyb20gbWFr
aW5nIEpTIGFsbG9jYXRpb25zCisgICAgLy8gd2hpbGUgdGhlIEdDIGlzIHN0aWxsIGFjdGl2ZS4K
KworICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE4OTY4Nz4gVW5pZnkgbV9kZXN0cm95ZWRB
dHRhY2hlZE5vZGVJZGVudGlmaWVycyBhbmQgbV9kZXN0cm95ZWREZXRhY2hlZE5vZGVJZGVudGlm
aWVycy4KKyAgICBpZiAoYXV0byBwYXJlbnRJZCA9IGJvdW5kTm9kZUlkKG5vZGUucGFyZW50Tm9k
ZSgpKSkKKyAgICAgICAgbV9kZXN0cm95ZWRBdHRhY2hlZE5vZGVJZGVudGlmaWVycy5hcHBlbmQo
eyBwYXJlbnRJZCwgbm9kZUlkIH0pOworICAgIGVsc2UKKyAgICAgICAgbV9kZXN0cm95ZWREZXRh
Y2hlZE5vZGVJZGVudGlmaWVycy5hcHBlbmQobm9kZUlkKTsKKworICAgIGlmICghbV9kZXN0cm95
ZWROb2Rlc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZGVzdHJveWVkTm9kZXNUaW1lci5z
dGFydE9uZVNob3QoMF9zKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGVzdHJveWVk
Tm9kZXNUaW1lckZpcmVkKCkKK3sKKyAgICBmb3IgKGF1dG8mIFtwYXJlbnRJZCwgbm9kZUlkXSA6
IHN0ZDo6ZXhjaGFuZ2UobV9kZXN0cm95ZWRBdHRhY2hlZE5vZGVJZGVudGlmaWVycywgeyB9KSkg
eworICAgICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7
CisgICAgICAgICAgICBhdXRvKiBwYXJlbnQgPSBub2RlRm9ySWQocGFyZW50SWQpOworICAgICAg
ICAgICAgaWYgKHBhcmVudCAmJiBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKKyAg
ICAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlQ291bnRVcGRhdGVk
KHBhcmVudElkLCAwKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgbm9kZUlkKTsKKyAgICB9CisgICAg
CisgICAgZm9yIChhdXRvIG5vZGVJZCA6IHN0ZDo6ZXhjaGFuZ2UobV9kZXN0cm95ZWREZXRhY2hl
ZE5vZGVJZGVudGlmaWVycywgeyB9KSkKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndp
bGxEZXN0cm95RE9NTm9kZShub2RlSWQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3
aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlKQpAQCAtMjUyNiw3ICsyNTYwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBlbGVtZW4KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2hhcmFjdGVyRGF0YU1v
ZGlmaWVkKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiB7Ci0gICAgYXV0byBpZCA9IG1f
ZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJmNoYXJhY3RlckRhdGEpOworICAgIGF1dG8gaWQgPSBi
b3VuZE5vZGVJZCgmY2hhcmFjdGVyRGF0YSk7CiAgICAgaWYgKCFpZCkgewogICAgICAgICAvLyBQ
dXNoIHRleHQgbm9kZSBpZiBpdCBpcyBiZWluZyBjcmVhdGVkLgogICAgICAgICBkaWRJbnNlcnRE
T01Ob2RlKGNoYXJhY3RlckRhdGEpOwpAQCAtMjUzNyw3ICsyNTcxLDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEmIGNoYXJhY3Rl
ckRhdGEpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIo
RWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBhdXRvIGlkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFw
LmdldCgmZWxlbWVudCk7CisgICAgYXV0byBpZCA9IGJvdW5kTm9kZUlkKCZlbGVtZW50KTsKICAg
ICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKQEAgLTI1NDgsMjIgKzI1ODIsMjIgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVt
ZW50KQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50
JiBob3N0LCBTaGFkb3dSb290JiByb290KQogewotICAgIGF1dG8gaG9zdElkID0gbV9kb2N1bWVu
dE5vZGVUb0lkTWFwLmdldCgmaG9zdCk7CisgICAgYXV0byBob3N0SWQgPSBib3VuZE5vZGVJZCgm
aG9zdCk7CiAgICAgaWYgKGhvc3RJZCkKLSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNo
YWRvd1Jvb3RQdXNoZWQoaG9zdElkLCBidWlsZE9iamVjdEZvck5vZGUoJnJvb3QsIDAsICZtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXApKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNoYWRv
d1Jvb3RQdXNoZWQoaG9zdElkLCBidWlsZE9iamVjdEZvck5vZGUoJnJvb3QsIDApKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwg
U2hhZG93Um9vdCYgcm9vdCkKIHsKLSAgICBhdXRvIGhvc3RJZCA9IG1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5nZXQoJmhvc3QpOwotICAgIGF1dG8gcm9vdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFw
LmdldCgmcm9vdCk7CisgICAgYXV0byBob3N0SWQgPSBib3VuZE5vZGVJZCgmaG9zdCk7CisgICAg
YXV0byByb290SWQgPSBib3VuZE5vZGVJZCgmcm9vdCk7CiAgICAgaWYgKGhvc3RJZCAmJiByb290
SWQpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zaGFkb3dSb290UG9wcGVkKGhvc3RJ
ZCwgcm9vdElkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ2hhbmdlQ3VzdG9t
RWxlbWVudFN0YXRlKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgYXV0byBlbGVtZW50SWQgPSBt
X2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZlbGVtZW50KTsKKyAgICBhdXRvIGVsZW1lbnRJZCA9
IGJvdW5kTm9kZUlkKCZlbGVtZW50KTsKICAgICBpZiAoIWVsZW1lbnRJZCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0yNTkwLDI3ICsyNjI0LDI3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBz
ZXVkb0VsZW1lbnRDcmVhdGVkKFBzZXVkb0VsZW1lbnQmIHBzZXVkb0VsZW1lbnQpCiAgICAgaWYg
KCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFyZW50SWQgPSBtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7CisgICAgYXV0byBwYXJlbnRJZCA9IGJvdW5kTm9k
ZUlkKHBhcmVudCk7CiAgICAgaWYgKCFwYXJlbnRJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKHBhcmVudElkLCAxKTsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cHNldWRvRWxlbWVudEFkZGVkKHBhcmVudElkLCBidWlsZE9iamVjdEZvck5vZGUo
JnBzZXVkb0VsZW1lbnQsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+cHNldWRvRWxlbWVudEFkZGVkKHBhcmVudElkLCBidWlsZE9iamVjdEZv
ck5vZGUoJnBzZXVkb0VsZW1lbnQsIDApKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50KQogewot
ICAgIGF1dG8gcHNldWRvRWxlbWVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmcHNl
dWRvRWxlbWVudCk7CisgICAgYXV0byBwc2V1ZG9FbGVtZW50SWQgPSBib3VuZE5vZGVJZCgmcHNl
dWRvRWxlbWVudCk7CiAgICAgaWYgKCFwc2V1ZG9FbGVtZW50SWQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIElmIGEgUHNldWRvRWxlbWVudCBpcyBib3VuZCwgaXRzIHBhcmVudCBlbGVtZW50
IG11c3QgaGF2ZSBiZWVuIGJvdW5kLgogICAgIEVsZW1lbnQqIHBhcmVudCA9IHBzZXVkb0VsZW1l
bnQuaG9zdEVsZW1lbnQoKTsKICAgICBBU1NFUlQocGFyZW50KTsKLSAgICBhdXRvIHBhcmVudElk
ID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwYXJlbnQpOworICAgIGF1dG8gcGFyZW50SWQg
PSBib3VuZE5vZGVJZChwYXJlbnQpOwogICAgIEFTU0VSVChwYXJlbnRJZCk7CiAKLSAgICB1bmJp
bmQoJnBzZXVkb0VsZW1lbnQsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgIHVuYmluZCgm
cHNldWRvRWxlbWVudCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBzZXVkb0VsZW1lbnRS
ZW1vdmVkKHBhcmVudElkLCBwc2V1ZG9FbGVtZW50SWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggNzRhNjBm
NjE4MDkyNjc2ZDhiZWU4NzUzOGM5ZDY5N2YzYzU4NDMwNC4uZmNjZDU0MjM0MDA3Yzk1NjJkZGE5
OTk1NDhjNWU5NWIzMTVjZjE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJzVG9Ob2RlKE5vZGUmKTsKICAgICB2b2lkIGRpZElu
c2VydERPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7Cisg
ICAgdm9pZCB3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQgd2lsbE1vZGlmeURP
TUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3Ry
aW5nJiBuZXdWYWx1ZSk7CiAgICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQmLCBjb25z
dCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBk
aWRSZW1vdmVET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKQEAgLTE3
OSw3ICsxODAsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsYmFja3MgdGhhdCBkb24ndCBkaXJl
Y3RseSBjb3JyZXNwb25kIHRvIGFuIGluc3RydW1lbnRhdGlvbiBlbnRyeSBwb2ludC4KICAgICB2
b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7Ci0gICAgdm9pZCByZWxlYXNlRGFuZ2xpbmdOb2Rl
cygpOwogCiAgICAgdm9pZCBzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIGVsZW1lbnRzKTsKIApAQCAtMjE4LDE5ICsyMTgsMTggQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yT3ZlcmxheTo6R3JpZDo6Q29uZmlnPiBncmlkT3Zl
cmxheUNvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmcmLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGdyaWRPdmVybGF5SW5zcGVjdG9yT2JqZWN0
KTsKIAogICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgotICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8Tm9kZT4sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBOb2RlVG9JZE1h
cDsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBiaW5kKE5vZGUqLCBOb2Rl
VG9JZE1hcCopOwotICAgIHZvaWQgdW5iaW5kKE5vZGUqLCBOb2RlVG9JZE1hcCopOworICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIGJpbmQoTm9kZSopOworICAgIHZvaWQgdW5i
aW5kKE5vZGUqKTsKIAogICAgIE5vZGUqIGFzc2VydEVkaXRhYmxlTm9kZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkKTsK
ICAgICBFbGVtZW50KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCk7CiAKICAgICB2
b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZCwgaW50IGRlcHRoID0gMSk7CiAKLSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAq
KTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZv
ck5vZGUoTm9kZSosIGludCBkZXB0aCk7CiAgICAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4g
YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKLSAgICBSZWY8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29u
dGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBu
b2Rlc01hcCk7Ci0gICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmLCBO
b2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2Rl
KiBjb250YWluZXIsIGludCBkZXB0aCk7CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNv
bnN0IEVsZW1lbnQmKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExp
c3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXJJZCBpZGVu
dGlmaWVyLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBk
aXNhYmxlZCwgY29uc3QgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mKTsKICAgICBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RG
b3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlJik7CiAgICAgdm9pZCBwcm9jZXNzQWNjZXNz
aWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYsIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQ+Jik7CkBAIC0yNDIsMTYgKzI0MSwxNSBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4s
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0
bGluZUNvbG9yLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAor
ICAgIHZvaWQgZGVzdHJveWVkTm9kZXNUaW1lckZpcmVkKCk7CisKICAgICBJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKICAgICBQYWdlJiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVj
dG9yT3ZlcmxheSogbV9vdmVybGF5IHsgbnVsbHB0ciB9OwotICAgIE5vZGVUb0lkTWFwIG1fZG9j
dW1lbnROb2RlVG9JZE1hcDsKLSAgICAvLyBPd25zIG5vZGUgbWFwcGluZ3MgZm9yIGRhbmdsaW5n
IG5vZGVzLgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVRvSWRNYXA+PiBtX2Rhbmds
aW5nTm9kZVRvSWRNYXBzOworICAgIEhhc2hNYXA8Y29uc3QgTm9kZSosIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZUlkPiBtX25vZGVUb0lkOwogICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQsIE5vZGUqPiBtX2lkVG9Ob2RlOwotICAgIEhhc2hNYXA8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNN
YXA7CiAgICAgSGFzaFNldDxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gbV9jaGls
ZHJlblJlcXVlc3RlZDsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBtX2xh
c3ROb2RlSWQgeyAxIH07CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwpAQCAtMjY1
LDYgKzI2MywxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JIaXN0
b3J5PiBtX2hpc3Rvcnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTUVkaXRvcj4gbV9kb21FZGl0
b3I7CiAKKyAgICBWZWN0b3I8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IG1fZGVz
dHJveWVkRGV0YWNoZWROb2RlSWRlbnRpZmllcnM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlSWQ+PiBtX2Rlc3Ryb3llZEF0dGFjaGVkTm9kZUlkZW50aWZpZXJzOworICAgIFRpbWVyIG1f
ZGVzdHJveWVkTm9kZXNUaW1lcjsKKwogI2lmIEVOQUJMRShWSURFTykKICAgICBUaW1lciBtX21l
ZGlhTWV0cmljc1RpbWVyOwogICAgIHN0cnVjdCBNZWRpYU1ldHJpY3MgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQu
Y3BwCmluZGV4IDAyODMwZmQwNjQ5YWZmMTgzMDU1NWM0Y2E4ZmQ4ZGM4ZmUxMzZkM2IuLjVlZDUx
MzBlOGFmMmQwNTRlNzkxZjQwMTEzMDkyMjEzZTY0NzE0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAK
QEAgLTQ3LDcgKzQ3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZUNvbnNv
bGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogV2ViQ29uc29sZUFnZW50KGNvbnRleHQpCi0gICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMo
Y29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRl
eHQuaW5zcGVjdGVkUGFnZSkKIHsKIH0KQEAgLTU2LDkgKzU1LDYgQEAgUGFnZUNvbnNvbGVBZ2Vu
dDo6flBhZ2VDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IFBhZ2VDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoKQogewotICAgIGlmIChh
dXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQo
KSkKLSAgICAgICAgZG9tQWdlbnQtPnJlbGVhc2VEYW5nbGluZ05vZGVzKCk7Ci0KICAgICByZXR1
cm4gV2ViQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oCmlu
ZGV4IDQxZmU3NmQwMzIwNzBlMGQ0MTAzZTQwYTJjMTQ0Y2UzNzk4MWM4MzMuLmZjZGQyNDcyM2Zh
MjZmNjBiMWY1NjgyMzQ0NmI0MjNlNmZkNTE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAtNDksNyAr
NDksNiBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBzZXRMb2dnaW5nQ2hhbm5lbExldmVsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6
OkNoYW5uZWxTb3VyY2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxMZXZl
bCk7CiAKIHByaXZhdGU6Ci0gICAgSW5zdHJ1bWVudGluZ0FnZW50cyYgbV9pbnN0cnVtZW50aW5n
QWdlbnRzOwogICAgIFBhZ2UmIG1faW5zcGVjdGVkUGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDZjMjA3MmM0Mjk5NGNlN2VlMjQ1ZjcwODYzMWE2Y2M4M2RmNzFhNWUu
LjEwNGFkYTg4MTVkNDkxNWNiYzI5NjgwYzViMjNlN2E2ZTJkNzhjMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1
Z2dlckFnZW50LmNwcApAQCAtMjc3LDYgKzI3NywxMyBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFn
ZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgbV9kb21Ob2RlUmVtb3ZlZEJy
ZWFrcG9pbnRzLnJlbW92ZUlmKG5vZGVDb250YWluc0JyZWFrcG9pbnRPd25lcik7CiB9CiAKK3Zv
aWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RE9NTm9kZShOb2RlJiBub2RlKQor
eworICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBpbiByZXNwb25zZSB0byBHQy4KKyAgICAvLyBE
T00gTm9kZSBkZXN0cnVjdGlvbiBzaG91bGQgYmUgdHJlYXRlZCBhcyBpZiB0aGUgbm9kZSB3YXMg
cmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4KKyAgICBkaWRSZW1vdmVET01Ob2RlKG5vZGUpOwor
fQorCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50
JiBlbGVtZW50KQogewogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2
ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBkODcyODI5MjVlYzY5MzEwZTBiYzBlNzg4
M2NkY2E1MDhkMTAzNTIyLi5iODFiNWIzMTVkNzZjY2U2MmIzZGU0MWY3M2I1Y2FmNTM4MmNjYmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURP
TURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpOwogICAgIHZvaWQgd2lsbFJlbW92
ZURPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7CisgICAg
dm9pZCB3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYpOwogICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0
dHIoRWxlbWVudCYpOwogICAgIHZvaWQgd2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYp
OwogICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFn
ZXIuanMKaW5kZXggNzBiOGZkODlhMDBiOGFmOTAyZjE5NjJiM2MxZGMzZDQ3ZTY1YWJjNi4uODAw
OWNlODFjZThiMWQyNzc3MzFjODczY2IzM2RmMTU1OTRkODJkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01N
YW5hZ2VyLmpzCkBAIC0xODUsNiArMTg1LDE1IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01N
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAvLyBET01PYnNlcnZlcgogCisgICAgd2ls
bERlc3Ryb3lET01Ob2RlKG5vZGVJZCkKKyAgICB7CisgICAgICAgIGxldCBub2RlID0gdGhpcy5f
aWRUb0RPTU5vZGVbbm9kZUlkXTsKKyAgICAgICAgbm9kZS5tYXJrRGVzdHJveWVkKCk7CisgICAg
ICAgIGRlbGV0ZSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOworCisgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHtu
b2RlfSk7CisgICAgfQorCiAgICAgZGlkQWRkRXZlbnRMaXN0ZW5lcihub2RlSWQpCiAgICAgewog
ICAgICAgICBsZXQgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9i
c2VydmVyLmpzCmluZGV4IDY0ZjlhMTJjNjNjZDFhNDBhODBkMjNmYzI3NzZmOThhNGJiMDM0NmUu
LjFlYTljMjQ3NThiOWE0NWNmM2UyOTRmM2ZkMDQ2MzI0YWZmNDJmZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9i
c2VydmVyLmpzCkBAIC03Nyw2ICs3NywxMSBAQCBXSS5ET01PYnNlcnZlciA9IGNsYXNzIERPTU9i
c2VydmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAgICAgICAgIFdJLmRv
bU1hbmFnZXIuX2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwogICAgIH0K
IAorICAgIHdpbGxEZXN0cm95RE9NTm9kZShub2RlSWQpCisgICAgeworICAgICAgICBXSS5kb21N
YW5hZ2VyLndpbGxEZXN0cm95RE9NTm9kZShub2RlSWQpOworICAgIH0KKwogICAgIHNoYWRvd1Jv
b3RQdXNoZWQoaG9zdElkLCByb290KQogICAgIHsKICAgICAgICAgV0kuZG9tTWFuYWdlci5fY2hp
bGROb2RlSW5zZXJ0ZWQoaG9zdElkLCAwLCByb290KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKaW5k
ZXggMTBmOTIyOTBmMWUxNmE1ODljZTRhN2M4YmU0M2U5OWQyZTg2ZDRkOC4uNmMwYWU4YTE2Zjk0
MzZlYzZiMmVmYmZmMmFiNDgyOGIzMjFiODFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMKQEAg
LTEwMyw3ICsxMDMsMTEgQEAgV0kuRE9NVHJlZVVwZGF0ZXIucHJvdG90eXBlID0gewogCiAgICAg
X25vZGVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3JlY2Vu
dGx5RGVsZXRlZE5vZGVzLnNldChldmVudC5kYXRhLm5vZGUsIHtwYXJlbnQ6IGV2ZW50LmRhdGEu
cGFyZW50fSk7CisgICAgICAgIGxldCBwYXJlbnQgPSBldmVudC5kYXRhLnBhcmVudDsKKyAgICAg
ICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fcmVj
ZW50bHlEZWxldGVkTm9kZXMuc2V0KGV2ZW50LmRhdGEubm9kZSwge3BhcmVudH0pOwogICAgICAg
ICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91cGRh
dGVNb2RpZmllZE5vZGVzRGVib3VuY2VyLmRlbGF5Rm9yRnJhbWUoKTsKICAgICB9LApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDJhNzIxZTJiNzM3NTUxNDlmNmIzNTAxMzA1NDRhZmI5YjE5MzkyODUuLjhkNTdhNjI5MzFiOTIy
ODE4NGJlNTM2NzY0NTUyMTY3YmQ1ZTFkZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
Ni0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRlc3RydWN0aW9uIGZvciBJbnNw
ZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLmh0bWw6IEFk
ZGVkLgorCiAyMDIxLTA2LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IGNhbGMoKSBvbiBjb21wb25lbnRzIGluc2lkZSByZWxhdGl2ZSBjb2xvciBz
eW50YXggY29sb3JzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3dpbGxE
ZXN0cm95RE9NTm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3dp
bGxEZXN0cm95RE9NTm9kZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEyOGU2NDUyOTY0YTMx
OTVkZTA3OGJmNjAwZjQxNjc1Mzg3MGQ0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUZXN0IGZvciBET00ud2lsbERlc3Ryb3lET01Ob2RlLgorCisKKz09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogRE9NLndpbGxEZXN0cm95RE9NTm9kZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTS53aWxsRGVzdHJveURPTU5vZGUuQ3JlYXRlRGVsZXRlQW5kR0NEZXRhY2hlZE5vZGUKK0Ny
ZWF0aW5nIG5ldyBkZXRhY2hlZCBET00gbm9kZS4KK1JlcXVlc3RpbmcgRE9NIG5vZGUgaW4gb3Jk
ZXIgdG8gcmVjZWl2ZSBmdXR1cmUgZXZlbnRzLgorUmVsZWFzaW5nIG5vZGUgYW5kIHRoZW4gdHJp
Z2dlcmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpbGUgYXdhaXRpbmcgYERPTS53aWxsRGVzdHJv
eURPTU5vZGVgIGV2ZW50LgorUmVjZWl2ZWQgZXZlbnQgYERPTS53aWxsRGVzdG9yeURPTU5vZGVg
IGFmdGVyIGdhcmJhZ2UgY29sbGVjdGlvbi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY4YzliMGQwYTBlM2M3
N2IyYzBiYmNiM2IxZTg4NDhkNTg1ODFhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiRE9NLndpbGxEZXN0cm95RE9NTm9kZSIpOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLndpbGxEZXN0cm95RE9NTm9kZS5DcmVh
dGVEZWxldGVBbmRHQ0RldGFjaGVkTm9kZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ3JlYXRl
IGEgbmV3IERPTSBub2RlIHRoYXQgaXMgbm90IGF0dGFjaGVkIHRoZSBET00gdHJlZSwgYW5kIHRo
ZW4gYWxsb3cgaXQgdG8gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIkNyZWF0aW5nIG5ldyBkZXRhY2hl
ZCBET00gbm9kZS4iKTsKKyAgICAgICAgICAgIGxldCBkb21Ob2RlUmVzcG9uc2UgPSBhd2FpdCBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoeyBtZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRl
IiwgcGFyYW1zOiB7IGV4cHJlc3Npb246IGBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIilgIH0g
fSk7CisgICAgICAgICAgICBsZXQgb2JqZWN0SWQgPSBkb21Ob2RlUmVzcG9uc2UucmVzdWx0Lm9i
amVjdElkOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmFzc2VydCghZG9tTm9kZVJlc3BvbnNl
Lndhc1Rocm93bik7CisKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlJlcXVlc3Rpbmcg
RE9NIG5vZGUgaW4gb3JkZXIgdG8gcmVjZWl2ZSBmdXR1cmUgZXZlbnRzLiIpOworICAgICAgICAg
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTM0OTk+IFdlYiBJbnNwZWN0b3I6
IGFsbG93IERPTSBub2RlcyB0byBiZSBpbnN0cnVtZW50ZWQgYXQgYW55IHBvaW50LCByZWdhcmRs
ZXNzIG9mIHdoZXRoZXIgdGhlIG1haW4gZG9jdW1lbnQgaGFzIGFsc28gYmVlbiBpbnN0cnVtZW50
ZWQKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7IG1l
dGhvZDogIkRPTS5nZXREb2N1bWVudCJ9KTsKKyAgICAgICAgICAgIGxldCBub2RlID0gYXdhaXQg
SW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHsgbWV0aG9kOiAiRE9NLnJlcXVlc3ROb2Rl
IiwgcGFyYW1zOiB7IG9iamVjdElkIH0gfSk7CisKKyAgICAgICAgICAgIC8vIFByb3RvY29sVGVz
dC5sb2coIlJlbGVhc2luZyByZWZlcmVuY2UgdG8gbm9kZSBoZWxkIGJ5IHJlbW90ZSBvYmplY3Qu
IikKKyAgICAgICAgICAgIC8vIGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7
IG1ldGhvZDogIkNvbnNvbGUuY2xlYXJNZXNzYWdlcyIgfSk7CisKKyAgICAgICAgICAgIFByb3Rv
Y29sVGVzdC5sb2coIlJlbGVhc2luZyBub2RlIGFuZCB0aGVuIHRyaWdnZXJpbmcgZ2FyYmFnZSBj
b2xsZWN0aW9uIHdoaWxlIGF3YWl0aW5nIGBET00ud2lsbERlc3Ryb3lET01Ob2RlYCBldmVudC4i
KTsKKyAgICAgICAgICAgIGxldCBkZWxldGVOb2RlUHJvbWlzZSA9IEluc3BlY3RvclByb3RvY29s
LmF3YWl0Q29tbWFuZCh7IG1ldGhvZDogIlJ1bnRpbWUucmVsZWFzZU9iamVjdCIsIHBhcmFtczog
eyBvYmplY3RJZCB9IH0pOworICAgICAgICAgICAgbGV0IGdjUHJvbWlzZSA9IFByb3RvY29sVGVz
dC5ldmFsdWF0ZUluUGFnZShgR0NDb250cm9sbGVyLmNvbGxlY3QoKWApOworCisgICAgICAgICAg
ICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wu
YXdhaXRFdmVudCh7ZXZlbnQ6IkRPTS53aWxsRGVzdHJveURPTU5vZGUifSksCisgICAgICAgICAg
ICAgICAgZGVsZXRlTm9kZVByb21pc2UudGhlbigocmVzb2x2ZSkgPT4gZ2NQcm9taXNlKSwKKyAg
ICAgICAgICAgIF0pOworCisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJSZWNlaXZlZCBl
dmVudCBgRE9NLndpbGxEZXN0b3J5RE9NTm9kZWAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLiIp
OworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8
cD5UZXN0IGZvciBET00ud2lsbERlc3Ryb3lET01Ob2RlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431225</attachid>
            <date>2021-06-11 13:02:14 -0700</date>
            <delta_ts>2021-06-11 15:37:49 -0700</delta_ts>
            <desc>Patch v2.4 - Review notes</desc>
            <filename>bug-226624-20210611130213.patch</filename>
            <type>text/plain</type>
            <size>47913</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGI1NDVlOGM2ZTIwNWFhOThjMTc4NDUyNDkwOTQ4OWQzNTI4OTZmLi5hNTliMDNlMDA5ZTI5Njky
NDkwZjBiZTlhOWM2NWYzMzUzYjIxMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNi0xMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGluc3RydW1lbnRhdGlvbiB0byBub2RlIGRl
c3RydWN0aW9uIGZvciBJbnNwZWN0b3JET01BZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2
aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBuZXcgYERPTS53aWxsRGVzdHJveURPTU5vZGVgIGV2
ZW50IHRvIGluZm9ybSB0aGUgZnJvbnRlbmQgb2YgRE9NIG5vZGVzIHRoYXQgbm8gbG9uZ2VyIGV4
aXN0LCBldmVuIGlmIHRoZXkKKyAgICAgICAgd2VyZW4ndCBpbiB0aGUgRE9NIHRyZWUuIFRoaXMg
d29yayBzZXJ2ZXMgYXMgYSBwcmVsdWRlIHRvIDxodHRwczovL3dlYmtpdC5vcmcvYi8xODk2ODc+
IChXZWIgSW5zcGVjdG9yOiBwcmVzZXJ2ZQorICAgICAgICBET00uTm9kZUlkIGlmIGEgbm9kZSBp
cyByZW1vdmVkIGFuZCByZS1hZGRlZCkgdG8gZXZlbnR1YWxseSBvbmx5IGZvcmdldCBhYm91dCBu
b2RlcyB1cG9uIGRlc3RydWN0aW9uLCBpbnN0ZWFkIG9mCisgICAgICAgIHJlbW92YWwgZnJvbSB0
aGUgRE9NIHRyZWUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb246CisK
IDIwMjEtMDYtMDEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1BFXVtHVEtdIFN1cHBvcnQgYnVpbGRpbmcgYWdhaW5zdCB1Q2xpYmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5NjBmYjJkZmNjMmUyNGI1MjUyOGZhMTFmMThkNjY5NTU3OWM1NTE0Li4xYmYy
OGU5MDQzYzg1NzEyNzljMDZiNDZhZGU0MzFiMTBhN2MxZTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjkgQEAKKzIwMjEtMDYtMTAgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBpbnN0cnVtZW50YXRpb24gdG8gbm9kZSBkZXN0
cnVjdGlvbiBmb3IgSW5zcGVjdG9yRE9NQWdlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmlu
IFJvdXNzby4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9k
ZS5odG1sCisKKyAgICAgICAgQWRkIGluc3RydW1lbnRhdGlvbiBmb3IgZGVzdHJ1Y3Rpb24gb2Yg
bm9kZXMgaW4gb3JkZXIgdG8gY2Vhc2UgaW5zdHJ1bWVudGluZyBub2RlcyBhbmQgaW5mb3JtIHRo
ZSBmcm9udGVuZCB0aGF0CisgICAgICAgIHRoZSBub2RlIG5vIGxvbmdlciBleGlzdHMuIFRoaXMg
d29yayBzZXJ2ZXMgYXMgYSBwcmVsdWRlIHRvIDxodHRwczovL3dlYmtpdC5vcmcvYi8xODk2ODc+
IChXZWIgSW5zcGVjdG9yOgorICAgICAgICBwcmVzZXJ2ZSBET00uTm9kZUlkIGlmIGEgbm9kZSBp
cyByZW1vdmVkIGFuZCByZS1hZGRlZCkgdG8gZXZlbnR1YWxseSBvbmx5IGZvcmdldCBhYm91dCBu
b2RlcyB1cG9uIGRlc3RydWN0aW9uLAorICAgICAgICBpbnN0ZWFkIG9mIHJlbW92YWwgZnJvbSB0
aGUgRE9NIHRyZWUuIEFkZGl0aW9uYWxseSwgdGhlIHN0b3JhZ2Ugb2Ygbm9kZXMgaXMgc2ltcGxp
ZmllZCBkb3duIHRvIHR3byBpbnZlcnNlIG1hcHMsCisgICAgICAgIG9uZSB0aGF0IG1hcHMgYE5v
ZGVgIHRvIGBOb2RlSWRgLCBhbmQgYW5vdGhlciB0aGF0IG1hcHMgYE5vZGVJZGAgdG8gYE5vZGVg
LiBUaGVzZSBhcmUga2VwdCBpbiBzeW5jIHRocm91Z2hvdXQsCisgICAgICAgIGFuZCBib3RoIGF0
dGFjaGVkIGFuZCBkZXRhY2hlZCBub2RlcyBhcmUgbm93IGhhbmRsZWQgYXMgcGFydCBvZiB0aGVz
ZSB0d28gbWFwcyBvZiBOb2Rlcy4KKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJp
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZCk6Cisg
ICAgICAgIC0gQWRkIGEgY2hlY2sgdGhhdCB0aGUgYE5vZGUqYCBpcyBhIHZhbGlkIGtleSAobm90
IGBudWxscHRyYCkgYmVmb3JlIGdldHRpbmcgaXRzIGlkLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RE9NTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGVzdHJveWVkTm9kZXNU
aW1lckZpcmVkKToKKyAgICAgICAgLSBBZGRlZCBpbnN0cnVtZW50YXRpb24gcG9pbnQgZm9yIERP
TSBub2RlcyBiZWluZyBkZXN0cm95ZWQgc28gdGhleSBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBh
Z2VudCwgYW5kIHRoZQorICAgICAgICBmcm9udGVuZCBjYW4gYWxzbyBiZSBpbmZvcm1lZCBvZiB0
aGVpciBjZWFzaW5nIHRvIGV4aXN0LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkUHVzaFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OndpbGxQb3BTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBzZXVkb0VsZW1lbnRDcmVhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZWxlYXNlRGFuZ2xpbmdOb2Rl
cyk6IERlbGV0ZWQuCisgICAgICAgIC0gUmVtb3ZlZCB1c2FnZSBvZiBOb2RlVG9JZE1hcCBhbmQg
bmVzdGVkIG1hcHMgb2Ygbm9kZXMgdGhyb3VnaG91dCBpbiBmYXZvciBvZiB0d28gaW52ZXJzZSBt
YXBzIGZvciByZWxhdGluZworICAgICAgICBgTm9kZWBzIGFuZCBgTm9kZUlkYHMuIEJlY2F1c2Ug
dGhlcmUgaXMgbm93IGEgc2luZ2xlIHNldCBvZiBjYW5vbmljYWwgbm9kZSBtYXBzLCB3ZSBubyBs
b25nZXIgdG8gdG8gcGFzcyBhCisgICAgICAgIE5vZGVUb0lkTWFwIHRocm91Z2hvdXQgdGhlIGFn
ZW50LgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oOgorCiAyMDIx
LTA2LTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIGR1cGxpY2F0ZSAiYmVoYXZpb3IgZm9yIGZpeGVkIiBlbnRyeSBmcm9tIHNjcm9sbGlu
ZyBzdGF0ZSB0cmVlIGxvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDNjNjE3NzMx
MmVmNjk2ZmI2MmJhODkyOGIxZjRmNGNmODEzNGRjYzAuLmFhOTIyMWY3ZjI3OTZhNGM3MjAwZjEx
N2NhYTczNjU3ZWNjMmZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDIxLTA2LTEwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgaW5zdHJ1bWVudGF0aW9uIHRvIG5vZGUgZGVzdHJ1Y3Rp
b24gZm9yIEluc3BlY3RvckRPTUFnZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY2MjQKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vz
c28uCisKKyAgICAgICAgTGlzdGVuIGZvciB0aGUgbmV3IGBET00ud2lsbERlc3Ryb3lET01Ob2Rl
YCBldmVudCBpbiBvcmRlciB0byBjbGVhbnVwIGFuZCByZW1haW5pbmcgcmVmZXJlbmNlcyB0byB0
aGF0IE5vZGUuCisgICAgICAgIFRoaXMgd29yayBzZXJ2ZXMgYXMgYSBwcmVsdWRlIHRvIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xODk2ODc+IChXZWIgSW5zcGVjdG9yOiBwcmVzZXJ2ZSBET00uTm9k
ZUlkIGlmIGEgbm9kZSBpcworICAgICAgICByZW1vdmVkIGFuZCByZS1hZGRlZCkgdG8gZXZlbnR1
YWxseSBvbmx5IGZvcmdldCBhYm91dCBub2RlcyB1cG9uIGRlc3RydWN0aW9uLCBpbnN0ZWFkIG9m
IHJlbW92YWwgZnJvbSB0aGUgRE9NCisgICAgICAgIHRyZWUuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01NYW5hZ2Vy
LnByb3RvdHlwZS53aWxsRGVzdHJveURPTU5vZGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5ET01PYnNlcnZlci5wcm90b3R5
cGUud2lsbERlc3Ryb3lET01Ob2RlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVVcGRhdGVyLmpzOgorICAgICAgICAoV0kuRE9NVHJlZVVwZGF0ZXIucHJvdG90eXBlLl9u
b2RlUmVtb3ZlZCk6CisKIDIwMjEtMDUtMTUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcmVh
dGVDb25pY0dyYWRpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9ET00uanNvbgppbmRleCAxNjIwYzAwM2YwNzZlZWUzMWRkYzhiZTY5YTg0ZTQ5OTUy
OTk4OTJhLi4zYTkxYWM2YjU3ZmFkN2Y0NzJkYWEyZTIxMDdiM2I0ODNkZTcwMTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KQEAg
LTY3OCw2ICs2NzgsMTMgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIk
cmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9kZSB0aGF0IGhhcyBi
ZWVuIHJlbW92ZWQuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogIndpbGxEZXN0cm95RE9NTm9kZSIsCisgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRmlyZWQgd2hlbiBhIGRldGFjaGVkIERPTSBub2RlIGlzIGFib3V0IHRvIGJl
IGRlc3Ryb3llZC4gQ3VycmVudGx5LCB0aGlzIGV2ZW50IHdpbGwgb25seSBiZSBmaXJlZCB3aGVu
IGEgRE9NIG5vZGUgdGhhdCBpcyBkZXRhY2hlZCBpcyBhYm91dCB0byBiZSBkZXN0cnVjdGVkLiIs
CisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9k
ZSB0aGF0IHdpbGwgYmUgZGVzdHJveWVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAog
ICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJzaGFkb3dSb290UHVzaGVkIiwKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsZWQgd2hlbiBzaGFkb3cgcm9vdCBpcyBwdXNoZWQg
aW50byB0aGUgZWxlbWVudC4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGZkYWJjZDNlN2I4OTJlNTAx
ZDg3OTQzMmFjNDZjM2Q3MTNmOGViMDAuLmE0MTBmOTQ4NmI2YTJiOGNmYWU4ZjAyMWMyYzI5YWJi
ZWVhM2JiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJI
VE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKQEAgLTM0OSw2ICszNTAsOCBAQCBOb2RlOjp+Tm9kZSgp
CiAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgQVNTRVJUKCFtX2Fkb3B0aW9u
SXNSZXF1aXJlZCk7CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95
RE9NTm9kZSgqdGhpcyk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKCFpZ25vcmVTZXQoKS5y
ZW1vdmUoKnRoaXMpKQogICAgICAgICBub2RlQ291bnRlci5kZWNyZW1lbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggMjE4Y2U0Yjk0N2M0MjU0N2VjNGY5Y2Y5ZTg1MTdhNWRjMzUyYzRjNC4uYTYwZDQ2NDM0
NGZkOTAxNDAyODhhMGFjY2U1YjM5YjExMTQ0MTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTE3Niw2ICsx
NzYsMTQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KICAgICAgICAgZG9tQWdlbnQtPmRpZFJl
bW92ZURPTU5vZGUobm9kZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGVzdHJveURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIE5vZGUmIG5vZGUpCit7CisgICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAg
ICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPndpbGxEZXN0cm95RE9NTm9kZShub2RlKTsKKyAg
ICBpZiAoYXV0byogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01B
Z2VudCgpKQorICAgICAgICBkb21BZ2VudC0+d2lsbERlc3Ryb3lET01Ob2RlKG5vZGUpOworfQor
CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bm9kZUxheW91dENvbnRleHRDaGFuZ2Vk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2Rl
LCBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyKQogewogICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENTU0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGYwNDA0
NDRiYjE4M2QxNjJjNjBmNmZkNDc1MmJlY2Q5Y2U2YWI5OS4uY2UxMDExOWM4NjFjYWI5NTRlZWMz
N2M0OGU5MTk3YzMyMzQwY2ZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlKERvY3VtZW50JiwgTm9kZSYpOwogICAg
IHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50JiwgTm9kZSYpOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5vZGUoRG9jdW1lbnQmLCBOb2RlJik7CisgICAgc3RhdGlj
IHZvaWQgd2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmKTsKICAgICBzdGF0aWMgdm9pZCBub2RlTGF5
b3V0Q29udGV4dENoYW5nZWQoTm9kZSYsIFJlbmRlck9iamVjdCopOwogICAgIHN0YXRpYyB2b2lk
IHdpbGxNb2RpZnlET01BdHRyKERvY3VtZW50JiwgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVudCYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSk7CkBAIC0zNTAsNiArMzUxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgTm9kZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5v
ZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CisgICAgc3RhdGljIHZvaWQgd2ls
bERlc3Ryb3lET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOwogICAgIHN0
YXRpYyB2b2lkIG5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIE5vZGUmLCBSZW5kZXJPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9N
QXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUpOwogICAgIHN0YXRpYyB2b2lk
IGRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgY29u
c3QgQXRvbVN0cmluZyYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpOwpAQCAtNjAxLDYg
KzYwMywxMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92
ZURPTU5vZGUoRG9jdW1lbnQmIGRvY3VtZW50LCBOb2RlJgogICAgICAgICBkaWRSZW1vdmVET01O
b2RlSW1wbCgqYWdlbnRzLCBub2RlKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYgbm9kZSkKK3sKKyAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoYXV0byogYWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50cyhub2RlLmRvY3VtZW50KCkpKQorICAgICAgICB3aWxsRGVzdHJveURP
TU5vZGVJbXBsKCphZ2VudHMsIG5vZGUpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om5vZGVMYXlvdXRDb250ZXh0Q2hhbmdlZChOb2RlJiBub2RlLCBSZW5kZXJP
YmplY3QqIG5ld1JlbmRlcmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2
b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcAppbmRleCAwNGMxNzU3MmZmNjU2ZjIyMmExMzFlODBhOTczMTNlZGI1
MzIxZjRlLi42YWZiMmExYTIyNDYyYzhkNjQ1MDJlY2JmZWEzNTQ3YTE2NWRkMmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcApAQCAtMTE2MCw2ICsxMTYwLDcgQEAgUmVmUHRyPFByb3RvY29sOjpDU1M6OkNTU1N0eWxl
PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUKIAogdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlLCBQcm90b2Nv
bDo6RE9NOjpOb2RlSWQgbm9kZUlkKQogeworICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBpbiBy
ZXNwb25zZSB0byBHQy4KICAgICBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUucmVtb3ZlKG5v
ZGVJZCk7CiAKICAgICBhdXRvIHNoZWV0ID0gbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnRh
a2UoJm5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBkNDYyZWZjMzA2YTI5OWI1OGU3OGM1ZDk0ZTZlODc1
N2UxNzM0ZDgyLi41YjVkY2E0Njk0ZDZlNGExODE3MjQ5MWRlNjQ1MzgwYjEwMDVkZmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JE
T01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVybGF5CiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVk
UGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKKyAg
ICAsIG1fZGVzdHJveWVkTm9kZXNUaW1lcigqdGhpcywgJkluc3BlY3RvckRPTUFnZW50OjpkZXN0
cm95ZWROb2Rlc1RpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKFZJREVPKQogICAgICwgbV9tZWRpYU1l
dHJpY3NUaW1lcigqdGhpcywgJkluc3BlY3RvckRPTUFnZW50OjptZWRpYU1ldHJpY3NUaW1lckZp
cmVkKQogI2VuZGlmCkBAIC0zNTQsNiArMzU1LDExIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnJlc2V0KCkKICAgICBpZiAobV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzaykKICAgICAgICAgbV9y
ZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+cmVzZXQoKTsKICAgICBtX2RvY3VtZW50ID0gbnVsbHB0
cjsKKworICAgIG1fZGVzdHJveWVkRGV0YWNoZWROb2RlSWRlbnRpZmllcnMuY2xlYXIoKTsKKyAg
ICBtX2Rlc3Ryb3llZEF0dGFjaGVkTm9kZUlkZW50aWZpZXJzLmNsZWFyKCk7CisgICAgaWYgKG1f
ZGVzdHJveWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2Rlc3Ryb3llZE5vZGVz
VGltZXIuc3RvcCgpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQpCkBAIC0zNzMsNTYgKzM3OSw0NiBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5kb2N1bWVudFVwZGF0ZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cmVsZWFzZURhbmdsaW5nTm9kZXMoKQorUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3Bl
Y3RvckRPTUFnZW50OjpiaW5kKE5vZGUmIG5vZGUpCiB7Ci0gICAgbV9kYW5nbGluZ05vZGVUb0lk
TWFwcy5jbGVhcigpOwotfQotCi1Qcm90b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQotewotICAgIGF1dG8g
aWQgPSBub2Rlc01hcC0+Z2V0KG5vZGUpOwotICAgIGlmIChpZCkKKyAgICByZXR1cm4gbV9ub2Rl
VG9JZC5lbnN1cmUoJm5vZGUsIFsmXSB7CisgICAgICAgIGF1dG8gaWQgPSBtX2xhc3ROb2RlSWQr
KzsKKyAgICAgICAgbV9pZFRvTm9kZS5zZXQoaWQsICZub2RlKTsKICAgICAgICAgcmV0dXJuIGlk
OwotICAgIGlkID0gbV9sYXN0Tm9kZUlkKys7Ci0gICAgbm9kZXNNYXAtPnNldChub2RlLCBpZCk7
Ci0gICAgbV9pZFRvTm9kZS5zZXQoaWQsIG5vZGUpOwotICAgIG1faWRUb05vZGVzTWFwLnNldChp
ZCwgbm9kZXNNYXApOwotICAgIHJldHVybiBpZDsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1h
cCogbm9kZXNNYXApCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQoTm9kZSYgbm9kZSkK
IHsKLSAgICBhdXRvIGlkID0gbm9kZXNNYXAtPmdldChub2RlKTsKKyAgICBhdXRvIGlkID0gbV9u
b2RlVG9JZC50YWtlKCZub2RlKTsKICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2lkVG9Ob2RlLnJlbW92ZShpZCk7CiAKLSAgICBpZiAobm9kZS0+aXNGcmFtZU93bmVyRWxl
bWVudCgpKSB7Ci0gICAgICAgIGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25l
ciA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KG5vZGUpOworICAg
IGlmIChub2RlLmlzRnJhbWVPd25lckVsZW1lbnQoKSkgeworICAgICAgICBjb25zdCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIGZyYW1lT3duZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqPigmbm9kZSk7CiAgICAgICAgIGlmIChEb2N1bWVudCogY29udGVudERvY3Vt
ZW50ID0gZnJhbWVPd25lci0+Y29udGVudERvY3VtZW50KCkpCi0gICAgICAgICAgICB1bmJpbmQo
Y29udGVudERvY3VtZW50LCBub2Rlc01hcCk7CisgICAgICAgICAgICB1bmJpbmQoKmNvbnRlbnRE
b2N1bWVudCk7CiAgICAgfQogCi0gICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgewotICAgICAg
ICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOworICAgIGlmIChp
czxFbGVtZW50Pihub2RlKSkgeworICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8
RWxlbWVudD4obm9kZSk7CiAgICAgICAgIGlmIChTaGFkb3dSb290KiByb290ID0gZWxlbWVudC5z
aGFkb3dSb290KCkpCi0gICAgICAgICAgICB1bmJpbmQocm9vdCwgbm9kZXNNYXApOworICAgICAg
ICAgICAgdW5iaW5kKCpyb290KTsKICAgICAgICAgaWYgKFBzZXVkb0VsZW1lbnQqIGJlZm9yZUVs
ZW1lbnQgPSBlbGVtZW50LmJlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHVuYmlu
ZChiZWZvcmVFbGVtZW50LCBub2Rlc01hcCk7CisgICAgICAgICAgICB1bmJpbmQoKmJlZm9yZUVs
ZW1lbnQpOwogICAgICAgICBpZiAoUHNldWRvRWxlbWVudCogYWZ0ZXJFbGVtZW50ID0gZWxlbWVu
dC5hZnRlclBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHVuYmluZChhZnRlckVsZW1lbnQs
IG5vZGVzTWFwKTsKKyAgICAgICAgICAgIHVuYmluZCgqYWZ0ZXJFbGVtZW50KTsKICAgICB9CiAK
LSAgICBub2Rlc01hcC0+cmVtb3ZlKG5vZGUpOwotCiAgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2Vu
dC0+ZGlkUmVtb3ZlRE9NTm9kZSgqbm9kZSwgaWQpOworICAgICAgICBjc3NBZ2VudC0+ZGlkUmVt
b3ZlRE9NTm9kZShub2RlLCBpZCk7CiAKICAgICBpZiAobV9jaGlsZHJlblJlcXVlc3RlZC5yZW1v
dmUoaWQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gZG8gdGhpcyBp
dGVyYXRpdmVseSByYXRoZXIgdGhhbiByZWN1cnNpdmVseS4KLSAgICAgICAgZm9yIChOb2RlKiBj
aGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2li
bGluZyhjaGlsZCkpCi0gICAgICAgICAgICB1bmJpbmQoY2hpbGQsIG5vZGVzTWFwKTsKKyAgICAg
ICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZCgmbm9kZSk7IGNoaWxkOyBjaGls
ZCA9IGlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQorICAgICAgICAgICAgdW5iaW5kKCpjaGlsZCk7
CiAgICAgfQogfQogCkBAIC01MDAsNyArNDk2LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
UmVmPFByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQK
ICAgICByZXNldCgpOwogICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKIAotICAgIGF1dG8gcm9v
dCA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShtX2RvY3VtZW50LmdldCgpLCAyLCAmbV9kb2N1bWVudE5v
ZGVUb0lkTWFwKTsKKyAgICBhdXRvIHJvb3QgPSBidWlsZE9iamVjdEZvck5vZGUobV9kb2N1bWVu
dC5nZXQoKSwgMik7CiAKICAgICBpZiAobV9ub2RlVG9Gb2N1cykKICAgICAgICAgZm9jdXNOb2Rl
KCk7CkBAIC01MTQsOCArNTEwLDYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxk
Tm9kZXNUb0Zyb250ZW5kKFByb3RvY29sOjpET006Ok5vZGVJZCBub2RlSWQsIGkKICAgICBpZiAo
IW5vZGUgfHwgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUt
Pm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9
IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBO
b2RlVG9JZE1hcCogbm9kZU1hcCA9IG1faWRUb05vZGVzTWFwLmdldChub2RlSWQpOwotCiAgICAg
aWYgKG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkgewogICAgICAgICBpZiAo
ZGVwdGggPD0gMSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUyMyw3ICs1MTcsNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoUHJvdG9jb2w6OkRP
TTo6Tm9kZUlkIG5vZGVJZCwgaQogICAgICAgICBkZXB0aC0tOwogCiAgICAgICAgIGZvciAobm9k
ZSA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgbm9kZTsgbm9kZSA9IGlubmVyTmV4dFNpYmxpbmco
bm9kZSkpIHsKLSAgICAgICAgICAgIGF1dG8gY2hpbGROb2RlSWQgPSBub2RlTWFwLT5nZXQobm9k
ZSk7CisgICAgICAgICAgICBhdXRvIGNoaWxkTm9kZUlkID0gYm91bmROb2RlSWQobm9kZSk7CiAg
ICAgICAgICAgICBBU1NFUlQoY2hpbGROb2RlSWQpOwogICAgICAgICAgICAgcHVzaENoaWxkTm9k
ZXNUb0Zyb250ZW5kKGNoaWxkTm9kZUlkLCBkZXB0aCk7CiAgICAgICAgIH0KQEAgLTUzMSwxNyAr
NTI1LDE2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVu
ZChQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5v
ZGUsIGRlcHRoLCBub2RlTWFwKTsKKyAgICBhdXRvIGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
c2V0Q2hpbGROb2Rlcyhub2RlSWQsIFdURk1vdmUoY2hpbGRyZW4pKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKCkKIHsKLSAgICBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuY2xlYXIoKTsKKyAgICBtX25vZGVUb0lkLmNsZWFyKCk7CiAgICAgbV9pZFRvTm9kZS5j
bGVhcigpOwogICAgIG1fZGlzcGF0Y2hlZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXZlbnRMaXN0
ZW5lckVudHJpZXMuY2xlYXIoKTsKLSAgICByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIG1f
Y2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKIH0KIApAQCAtNjU0LDUxICs2NDcsNDggQEAgUHJv
dG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKFByb3RvY29sOjpFcnJvclMKICAgICB9CiAKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMzQ5OT4gV2ViIEluc3BlY3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGlu
c3RydW1lbnRlZCBhdCBhbnkgcG9pbnQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBk
b2N1bWVudCBoYXMgYWxzbyBiZWVuIGluc3RydW1lbnRlZAotICAgIGlmICghbV9kb2N1bWVudE5v
ZGVUb0lkTWFwLmNvbnRhaW5zKG1fZG9jdW1lbnQpKSB7CisgICAgaWYgKCFtX25vZGVUb0lkLmNv
bnRhaW5zKG1fZG9jdW1lbnQuZ2V0KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkRvY3Vt
ZW50IG11c3QgaGF2ZSBiZWVuIHJlcXVlc3RlZCJfczsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCiAgICAgLy8gUmV0dXJuIGlkIGluIGNhc2UgdGhlIG5vZGUgaXMga25vd24uCi0gICAgaWYg
KGF1dG8gcmVzdWx0ID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChub2RlVG9QdXNoKSkKKyAg
ICBpZiAoYXV0byByZXN1bHQgPSBib3VuZE5vZGVJZChub2RlVG9QdXNoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAogICAgIE5vZGUqIG5vZGUgPSBub2RlVG9QdXNoOwogICAgIFZlY3RvcjxO
b2RlKj4gcGF0aDsKLSAgICBOb2RlVG9JZE1hcCogZGFuZ2xpbmdNYXAgPSAwOwogCiAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUp
OwogICAgICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNo
ZWQgaXMgZGV0YWNoZWQgLT4gcHVzaCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBhdXRvIG5l
d01hcCA9IG1ha2VVbmlxdWU8Tm9kZVRvSWRNYXA+KCk7Ci0gICAgICAgICAgICBkYW5nbGluZ01h
cCA9IG5ld01hcC5nZXQoKTsKLSAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBw
ZW5kKG5ld01hcC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7
CisgICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUobm9kZSwg
MCkpOwogICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMoMCwg
V1RGTW92ZShjaGlsZHJlbikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChwYXJlbnQpOwotICAgICAgICAgICAgaWYgKG1fZG9j
dW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KSkKKyAgICAgICAgICAgIGlmIChib3VuZE5vZGVJ
ZChwYXJlbnQpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CisgICAgICAgICAgICBub2RlID0gcGFyZW50Owog
ICAgICAgICB9CiAgICAgfQogCi0gICAgTm9kZVRvSWRNYXAqIG1hcCA9IGRhbmdsaW5nTWFwID8g
ZGFuZ2xpbmdNYXAgOiAmbV9kb2N1bWVudE5vZGVUb0lkTWFwOwogICAgIGZvciAoaW50IGkgPSBw
YXRoLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIGF1dG8gbm9kZUlkID0gbWFw
LT5nZXQocGF0aC5hdChpKSk7CisgICAgICAgIGF1dG8gbm9kZUlkID0gYm91bmROb2RlSWQocGF0
aC5hdChpKSk7CiAgICAgICAgIEFTU0VSVChub2RlSWQpOwogICAgICAgICBwdXNoQ2hpbGROb2Rl
c1RvRnJvbnRlbmQobm9kZUlkKTsKICAgICB9Ci0gICAgcmV0dXJuIG1hcC0+Z2V0KG5vZGVUb1B1
c2gpOworICAgIHJldHVybiBib3VuZE5vZGVJZChub2RlVG9QdXNoKTsKIH0KIAogUHJvdG9jb2w6
OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZChjb25zdCBOb2RlKiBu
b2RlKQogewotICAgIHJldHVybiBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGNvbnN0X2Nhc3Q8
Tm9kZSo+KG5vZGUpKTsKKyAgICBpZiAoIW1fbm9kZVRvSWQuaXNWYWxpZEtleShub2RlKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbV9ub2RlVG9JZC5nZXQobm9kZSk7CiB9CiAK
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRy
aWJ1dGVWYWx1ZShQcm90b2NvbDo6RE9NOjpOb2RlSWQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0xNzEyLDkgKzE3MDIsOSBAQCBzdGF0aWMgU3Ry
aW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNvZGVk
KGRpZ2VzdC5kYXRhKCksIGRpZ2VzdC5zaXplKCkpKTsKIH0KIAotUmVmPFByb3RvY29sOjpET006
Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwg
aW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCitSZWY8UHJvdG9jb2w6OkRPTTo6Tm9k
ZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQg
ZGVwdGgpCiB7Ci0gICAgYXV0byBpZCA9IGJpbmQobm9kZSwgbm9kZXNNYXApOworICAgIGF1dG8g
aWQgPSBiaW5kKCpub2RlKTsKICAgICBTdHJpbmcgbm9kZU5hbWU7CiAgICAgU3RyaW5nIGxvY2Fs
TmFtZTsKICAgICBTdHJpbmcgbm9kZVZhbHVlOwpAQCAtMTc1Niw3ICsxNzQ2LDcgQEAgUmVmPFBy
b3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUo
Tm9kZSogbm9kZSwgaW50IGQKICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpIHsKICAg
ICAgICAgaW50IG5vZGVDb3VudCA9IGlubmVyQ2hpbGROb2RlQ291bnQobm9kZSk7CiAgICAgICAg
IHZhbHVlLT5zZXRDaGlsZE5vZGVDb3VudChub2RlQ291bnQpOwotICAgICAgICBhdXRvIGNoaWxk
cmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01h
cCk7CisgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRy
ZW4obm9kZSwgZGVwdGgpOwogICAgICAgICBpZiAoY2hpbGRyZW4tPmxlbmd0aCgpID4gMCkKICAg
ICAgICAgICAgIHZhbHVlLT5zZXRDaGlsZHJlbihXVEZNb3ZlKGNoaWxkcmVuKSk7CiAgICAgfQpA
QCAtMTc3NSwxNyArMTc2NSwxNyBAQCBSZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZAogICAgICAgICB2
YWx1ZS0+c2V0QXR0cmlidXRlcyhidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoJmVsZW1l
bnQpKTsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZU93bmVyRWxlbWVudD4oZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PEhUTUxGcmFtZU93bmVy
RWxlbWVudD4oZWxlbWVudCkuY29udGVudERvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgdmFs
dWUtPnNldENvbnRlbnREb2N1bWVudChidWlsZE9iamVjdEZvck5vZGUoZG9jdW1lbnQsIDAsIG5v
ZGVzTWFwKSk7CisgICAgICAgICAgICAgICAgdmFsdWUtPnNldENvbnRlbnREb2N1bWVudChidWls
ZE9iamVjdEZvck5vZGUoZG9jdW1lbnQsIDApKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gZWxlbWVudC5zaGFkb3dSb290KCkpIHsKICAgICAgICAgICAgIGF1
dG8gc2hhZG93Um9vdHMgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+OjpjcmVh
dGUoKTsKLSAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9k
ZShyb290LCAwLCBub2Rlc01hcCkpOworICAgICAgICAgICAgc2hhZG93Um9vdHMtPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JOb2RlKHJvb3QsIDApKTsKICAgICAgICAgICAgIHZhbHVlLT5zZXRTaGFk
b3dSb290cyhXVEZNb3ZlKHNoYWRvd1Jvb3RzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
aXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgICAgICB2YWx1ZS0+c2V0
VGVtcGxhdGVDb250ZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZSgmZG93bmNhc3Q8SFRNTFRlbXBsYXRl
RWxlbWVudD4oZWxlbWVudCkuY29udGVudCgpLCAwLCBub2Rlc01hcCkpOworICAgICAgICAgICAg
dmFsdWUtPnNldFRlbXBsYXRlQ29udGVudChidWlsZE9iamVjdEZvck5vZGUoJmRvd25jYXN0PEhU
TUxUZW1wbGF0ZUVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRlbnQoKSwgMCkpOwogCiAgICAgICAgIGlm
IChpczxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTFNjcmlwdEVsZW1lbnQ+
KGVsZW1lbnQpICYmICFlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
SFRNTE5hbWVzOjpzcmNBdHRyKSkpCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaChjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaChlbGVt
ZW50KSk7CkBAIC0xNzk5LDcgKzE3ODksNyBAQCBSZWY8UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZAogICAg
ICAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRUeXBlKGVsZW1lbnQucHNldWRvSWQoKSwgJnBzZXVk
b1R5cGUpKQogICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9UeXBlKHBzZXVkb1R5cGUp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGF1dG8gcHNldWRvRWxlbWVudHMg
PSBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVudCwgbm9kZXNNYXApKQorICAgICAg
ICAgICAgaWYgKGF1dG8gcHNldWRvRWxlbWVudHMgPSBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVu
dHMoZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgdmFsdWUtPnNldFBzZXVkb0VsZW1lbnRzKHBz
ZXVkb0VsZW1lbnRzLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChpczxEb2N1bWVudD4oKm5vZGUpKSB7CkBAIC0xODM5LDMxICsxODI5LDMxIEBAIFJlZjxKU09O
OjpBcnJheU9mPFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVu
dEF0dHJpYnV0ZXMoRWxlCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZTsKIH0KIAotUmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWls
ZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5v
ZGVUb0lkTWFwKiBub2Rlc01hcCkKK1JlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5v
ZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5v
ZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoKQogewogICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpB
cnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICBpZiAoZGVwdGggPT0g
MCkgewogICAgICAgICAvLyBTcGVjaWFsLWNhc2UgdGhlIG9ubHkgdGV4dCBjaGlsZCAtIHByZXRl
bmQgdGhhdCBjb250YWluZXIncyBjaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkLgogICAgICAg
ICBOb2RlKiBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlm
IChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RF
ICYmICFmaXJzdENoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBjaGlsZHJlbi0+
YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoZmlyc3RDaGlsZCwgMCwgbm9kZXNNYXApKTsKLSAg
ICAgICAgICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuYWRkKGJpbmQoY29udGFpbmVyLCBub2Rlc01h
cCkpOworICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGZp
cnN0Q2hpbGQsIDApKTsKKyAgICAgICAgICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuYWRkKGJpbmQo
KmNvbnRhaW5lcikpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKICAgICB9
CiAKICAgICBOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChjb250YWluZXIpOwogICAgIGRl
cHRoLS07Ci0gICAgbV9jaGlsZHJlblJlcXVlc3RlZC5hZGQoYmluZChjb250YWluZXIsIG5vZGVz
TWFwKSk7CisgICAgbV9jaGlsZHJlblJlcXVlc3RlZC5hZGQoYmluZCgqY29udGFpbmVyKSk7CiAK
ICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JOb2RlKGNoaWxkLCBkZXB0aCwgbm9kZXNNYXApKTsKKyAgICAgICAgY2hpbGRyZW4tPmFk
ZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGNoaWxkLCBkZXB0aCkpOwogICAgICAgICBjaGlsZCA9
IGlubmVyTmV4dFNpYmxpbmcoY2hpbGQpOwogICAgIH0KICAgICByZXR1cm4gY2hpbGRyZW47CiB9
CiAKLVJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKK1JlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29s
OjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0VsZW1l
bnRzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgUHNldWRvRWxlbWVudCogYmVmb3Jl
RWxlbWVudCA9IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpOwogICAgIFBzZXVkb0VsZW1l
bnQqIGFmdGVyRWxlbWVudCA9IGVsZW1lbnQuYWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CkBAIC0xODcy
LDkgKzE4NjIsOSBAQCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RE9NOjpOb2RlPj4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZAogCiAgICAgYXV0byBwc2V1ZG9F
bGVtZW50cyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwog
ICAgIGlmIChiZWZvcmVFbGVtZW50KQotICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShi
dWlsZE9iamVjdEZvck5vZGUoYmVmb3JlRWxlbWVudCwgMCwgbm9kZXNNYXApKTsKKyAgICAgICAg
cHNldWRvRWxlbWVudHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKGJlZm9yZUVsZW1lbnQs
IDApKTsKICAgICBpZiAoYWZ0ZXJFbGVtZW50KQotICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRk
SXRlbShidWlsZE9iamVjdEZvck5vZGUoYWZ0ZXJFbGVtZW50LCAwLCBub2Rlc01hcCkpOworICAg
ICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUoYWZ0ZXJFbGVt
ZW50LCAwKSk7CiAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRzOwogfQogCkBAIC0yMzYzLDE4ICsy
MzUzLDE4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIGlmICghZnJhbWVPd25lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBmcmFtZU93bmVySWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KGZyYW1lT3duZXIp
OworICAgIGF1dG8gZnJhbWVPd25lcklkID0gYm91bmROb2RlSWQoZnJhbWVPd25lci5nZXQoKSk7
CiAgICAgaWYgKCFmcmFtZU93bmVySWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJlLWFk
ZCBmcmFtZSBvd25lciBlbGVtZW50IHRvZ2V0aGVyIHdpdGggaXRzIG5ldyBjaGlsZHJlbi4KLSAg
ICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChpbm5lclBhcmVudE5v
ZGUoZnJhbWVPd25lci5nZXQoKSkpOworICAgIGF1dG8gcGFyZW50SWQgPSBib3VuZE5vZGVJZChp
bm5lclBhcmVudE5vZGUoZnJhbWVPd25lci5nZXQoKSkpOwogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBmcmFtZU93bmVySWQpOwotICAgIHVuYmlu
ZChmcmFtZU93bmVyLmdldCgpLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICB1bmJpbmQo
KmZyYW1lT3duZXIpOwogCi0gICAgYXV0byB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShmcmFt
ZU93bmVyLmdldCgpLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBhdXRvIHZhbHVl
ID0gYnVpbGRPYmplY3RGb3JOb2RlKGZyYW1lT3duZXIuZ2V0KCksIDApOwogICAgIE5vZGUqIHBy
ZXZpb3VzU2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKGZyYW1lT3duZXIuZ2V0KCkpOwot
ICAgIGF1dG8gcHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFw
LmdldChwcmV2aW91c1NpYmxpbmcpIDogMDsKKyAgICBhdXRvIHByZXZJZCA9IGJvdW5kTm9kZUlk
KHByZXZpb3VzU2libGluZyk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUlu
c2VydGVkKHBhcmVudElkLCBwcmV2SWQsIFdURk1vdmUodmFsdWUpKTsKIH0KIApAQCAtMjQyOSwx
MyArMjQxOSwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGNvdWxkIGJlIGF0dGFjaGlu
ZyBleGlzdGluZyBzdWJ0cmVlLiBGb3JnZXQgdGhlIGJpbmRpbmdzLgotICAgIHVuYmluZCgmbm9k
ZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgdW5iaW5kKG5vZGUpOwogCiAgICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnQp
Ci0gICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KHBhcmVudCk7CisgICAgYXV0byBwYXJlbnRJZCA9IGJvdW5kTm9kZUlkKHBhcmVu
dCk7CiAgICAgLy8gUmV0dXJuIGlmIHBhcmVudCBpcyBub3QgbWFwcGVkIHlldC4KICAgICBpZiAo
IXBhcmVudElkKQogICAgICAgICByZXR1cm47CkBAIC0yNDQ2LDggKzI0MzQsOCBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZCAtPiByZXR1cm4gdmFs
dWUgb2YgYSBuZXcgY2hpbGQuCiAgICAgICAgIE5vZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQcmV2
aW91c1NpYmxpbmcoJm5vZGUpOwotICAgICAgICBhdXRvIHByZXZJZCA9IHByZXZTaWJsaW5nID8g
bV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOwotICAgICAgICBhdXRv
IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKCZub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lk
TWFwKTsKKyAgICAgICAgYXV0byBwcmV2SWQgPSBib3VuZE5vZGVJZChwcmV2U2libGluZyk7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUoJm5vZGUsIDApOwogICAgICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJ
ZCwgV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIH0KQEAgLTI0NTksMTkgKzI0NDcsNjMgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogCiAgICAg
Q29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CiAKKyAgICBhdXRvIHBh
cmVudElkID0gYm91bmROb2RlSWQocGFyZW50KTsKICAgICAvLyBJZiBwYXJlbnQgaXMgbm90IG1h
cHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KLSAgICBpZiAoIW1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5jb250YWlucyhwYXJlbnQpKQorICAgIGlmICghcGFyZW50SWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVu
dCk7Ci0KKyAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8xODk2ODc+IFByZXNlcnZlIERPTS5O
b2RlSWQgaWYgYSBub2RlIGlzIHJlbW92ZWQgYW5kIHJlLWFkZGVkCiAgICAgaWYgKCFtX2NoaWxk
cmVuUmVxdWVzdGVkLmNvbnRhaW5zKHBhcmVudElkKSkgewogICAgICAgICAvLyBObyBjaGlsZHJl
biBhcmUgbWFwcGVkIHlldCAtPiBvbmx5IG5vdGlmeSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVu
LgogICAgICAgICBpZiAoaW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQpID09IDEpCiAgICAgICAg
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElk
LCAwKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9k
ZVJlbW92ZWQocGFyZW50SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJm5vZGUpKTsKLSAg
ICB1bmJpbmQoJm5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgYm91bmROb2RlSWQoJm5v
ZGUpKTsKKyAgICB1bmJpbmQobm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Ondp
bGxEZXN0cm95RE9NTm9kZShOb2RlJiBub2RlKQoreworICAgIGlmIChjb250YWluc09ubHlIVE1M
V2hpdGVzcGFjZSgmbm9kZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbm9kZUlkID0g
bV9ub2RlVG9JZC50YWtlKCZub2RlKTsKKyAgICBpZiAoIW5vZGVJZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pZFRvTm9kZS5yZW1vdmUobm9kZUlkKTsKKyAgICBtX2NoaWxkcmVuUmVxdWVz
dGVkLnJlbW92ZShub2RlSWQpOworCisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkUmVt
b3ZlRE9NTm9kZShub2RlLCBub2RlSWQpOworCisgICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIGlu
IHJlc3BvbnNlIHRvIEdDLiBEdWUgdG8gdGhlIHNpbmdsZS1wcm9jZXNzIG1vZGVsIHVzZWQgaW4g
V2ViS2l0MSwgdGhlCisgICAgLy8gZXZlbnQgbXVzdCBiZSBkaXNwYXRjaGVkIGZyb20gYSB0aW1l
ciB0byBwcmV2ZW50IHRoZSBmcm9udGVuZCBmcm9tIG1ha2luZyBKUyBhbGxvY2F0aW9ucworICAg
IC8vIHdoaWxlIHRoZSBHQyBpcyBzdGlsbCBhY3RpdmUuCisKKyAgICAvLyBGSVhNRTogPHdlYmtp
dC5vcmcvYi8xODk2ODc+IFVuaWZ5IG1fZGVzdHJveWVkQXR0YWNoZWROb2RlSWRlbnRpZmllcnMg
YW5kIG1fZGVzdHJveWVkRGV0YWNoZWROb2RlSWRlbnRpZmllcnMuCisgICAgaWYgKGF1dG8gcGFy
ZW50SWQgPSBib3VuZE5vZGVJZChub2RlLnBhcmVudE5vZGUoKSkpCisgICAgICAgIG1fZGVzdHJv
eWVkQXR0YWNoZWROb2RlSWRlbnRpZmllcnMuYXBwZW5kKHsgcGFyZW50SWQsIG5vZGVJZCB9KTsK
KyAgICBlbHNlCisgICAgICAgIG1fZGVzdHJveWVkRGV0YWNoZWROb2RlSWRlbnRpZmllcnMuYXBw
ZW5kKG5vZGVJZCk7CisKKyAgICBpZiAoIW1fZGVzdHJveWVkTm9kZXNUaW1lci5pc0FjdGl2ZSgp
KQorICAgICAgICBtX2Rlc3Ryb3llZE5vZGVzVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRlc3Ryb3llZE5vZGVzVGltZXJGaXJlZCgpCit7Cisg
ICAgZm9yIChhdXRvJiBbcGFyZW50SWQsIG5vZGVJZF0gOiBzdGQ6OmV4Y2hhbmdlKG1fZGVzdHJv
eWVkQXR0YWNoZWROb2RlSWRlbnRpZmllcnMsIHsgfSkpIHsKKyAgICAgICAgaWYgKCFtX2NoaWxk
cmVuUmVxdWVzdGVkLmNvbnRhaW5zKHBhcmVudElkKSkgeworICAgICAgICAgICAgYXV0byogcGFy
ZW50ID0gbm9kZUZvcklkKHBhcmVudElkKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgaW5u
ZXJDaGlsZE5vZGVDb3VudChwYXJlbnQpID09IDEpCisgICAgICAgICAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92
ZWQocGFyZW50SWQsIG5vZGVJZCk7CisgICAgfQorICAgIAorICAgIGZvciAoYXV0byBub2RlSWQg
OiBzdGQ6OmV4Y2hhbmdlKG1fZGVzdHJveWVkRGV0YWNoZWROb2RlSWRlbnRpZmllcnMsIHsgfSkp
CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53aWxsRGVzdHJveURPTU5vZGUobm9kZUlk
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIoRWxlbWVu
dCYsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1
ZSkKQEAgLTI1MjYsNyArMjU1OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0
cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVuCiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZChDaGFyYWN0ZXJEYXRhJiBj
aGFyYWN0ZXJEYXRhKQogewotICAgIGF1dG8gaWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0
KCZjaGFyYWN0ZXJEYXRhKTsKKyAgICBhdXRvIGlkID0gYm91bmROb2RlSWQoJmNoYXJhY3RlckRh
dGEpOwogICAgIGlmICghaWQpIHsKICAgICAgICAgLy8gUHVzaCB0ZXh0IG5vZGUgaWYgaXQgaXMg
YmVpbmcgY3JlYXRlZC4KICAgICAgICAgZGlkSW5zZXJ0RE9NTm9kZShjaGFyYWN0ZXJEYXRhKTsK
QEAgLTI1MzcsNyArMjU2OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRh
dGFNb2RpZmllZChDaGFyYWN0ZXJEYXRhJiBjaGFyYWN0ZXJEYXRhKQogCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0g
ICAgYXV0byBpZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJmVsZW1lbnQpOworICAgIGF1
dG8gaWQgPSBib3VuZE5vZGVJZCgmZWxlbWVudCk7CiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0yNTQ4LDIyICsyNTgwLDIyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYgcm9v
dCkKIHsKLSAgICBhdXRvIGhvc3RJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJmhvc3Qp
OworICAgIGF1dG8gaG9zdElkID0gYm91bmROb2RlSWQoJmhvc3QpOwogICAgIGlmIChob3N0SWQp
Ci0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zaGFkb3dSb290UHVzaGVkKGhvc3RJZCwg
YnVpbGRPYmplY3RGb3JOb2RlKCZyb290LCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKSk7Cisg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zaGFkb3dSb290UHVzaGVkKGhvc3RJZCwgYnVp
bGRPYmplY3RGb3JOb2RlKCZyb290LCAwKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7Ci0g
ICAgYXV0byBob3N0SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZob3N0KTsKLSAgICBh
dXRvIHJvb3RJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJnJvb3QpOworICAgIGF1dG8g
aG9zdElkID0gYm91bmROb2RlSWQoJmhvc3QpOworICAgIGF1dG8gcm9vdElkID0gYm91bmROb2Rl
SWQoJnJvb3QpOwogICAgIGlmIChob3N0SWQgJiYgcm9vdElkKQogICAgICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+c2hhZG93Um9vdFBvcHBlZChob3N0SWQsIHJvb3RJZCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZShFbGVtZW50JiBl
bGVtZW50KQogewotICAgIGF1dG8gZWxlbWVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdl
dCgmZWxlbWVudCk7CisgICAgYXV0byBlbGVtZW50SWQgPSBib3VuZE5vZGVJZCgmZWxlbWVudCk7
CiAgICAgaWYgKCFlbGVtZW50SWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjU5MCwyNyArMjYy
MiwyNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwc2V1ZG9FbGVtZW50Q3JlYXRlZChQc2V1
ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50KQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwYXJl
bnQpOworICAgIGF1dG8gcGFyZW50SWQgPSBib3VuZE5vZGVJZChwYXJlbnQpOwogICAgIGlmICgh
cGFyZW50SWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVu
ZChwYXJlbnRJZCwgMSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBzZXVkb0VsZW1lbnRB
ZGRlZChwYXJlbnRJZCwgYnVpbGRPYmplY3RGb3JOb2RlKCZwc2V1ZG9FbGVtZW50LCAwLCAmbV9k
b2N1bWVudE5vZGVUb0lkTWFwKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBzZXVkb0Vs
ZW1lbnRBZGRlZChwYXJlbnRJZCwgYnVpbGRPYmplY3RGb3JOb2RlKCZwc2V1ZG9FbGVtZW50LCAw
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQo
UHNldWRvRWxlbWVudCYgcHNldWRvRWxlbWVudCkKIHsKLSAgICBhdXRvIHBzZXVkb0VsZW1lbnRJ
ZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJnBzZXVkb0VsZW1lbnQpOworICAgIGF1dG8g
cHNldWRvRWxlbWVudElkID0gYm91bmROb2RlSWQoJnBzZXVkb0VsZW1lbnQpOwogICAgIGlmICgh
cHNldWRvRWxlbWVudElkKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiBhIFBzZXVkb0Vs
ZW1lbnQgaXMgYm91bmQsIGl0cyBwYXJlbnQgZWxlbWVudCBtdXN0IGhhdmUgYmVlbiBib3VuZC4K
ICAgICBFbGVtZW50KiBwYXJlbnQgPSBwc2V1ZG9FbGVtZW50Lmhvc3RFbGVtZW50KCk7CiAgICAg
QVNTRVJUKHBhcmVudCk7Ci0gICAgYXV0byBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1h
cC5nZXQocGFyZW50KTsKKyAgICBhdXRvIHBhcmVudElkID0gYm91bmROb2RlSWQocGFyZW50KTsK
ICAgICBBU1NFUlQocGFyZW50SWQpOwogCi0gICAgdW5iaW5kKCZwc2V1ZG9FbGVtZW50LCAmbV9k
b2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICB1bmJpbmQocHNldWRvRWxlbWVudCk7CiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnBzZXVkb0VsZW1lbnRSZW1vdmVkKHBhcmVudElkLCBwc2V1ZG9F
bGVtZW50SWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggNzRhNjBmNjE4MDkyNjc2ZDhiZWU4NzUzOGM5ZDY5
N2YzYzU4NDMwNC4uMzNiODI4NGVhMDc5Mjg4MThiMmJjODhiZDc1NGRmMzcxNzA3NmJmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVu
ZXJzVG9Ob2RlKE5vZGUmKTsKICAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSYpOwogICAg
IHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJik7CisgICAgdm9pZCB3aWxsRGVzdHJveURPTU5v
ZGUoTm9kZSYpOwogICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0
b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSk7CiAgICAgdm9p
ZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQm
LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKQEAgLTE3OSw3ICsxODAsNiBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxsYmFja3MgdGhhdCBkb24ndCBkaXJlY3RseSBjb3JyZXNwb25kIHRvIGFuIGlu
c3RydW1lbnRhdGlvbiBlbnRyeSBwb2ludC4KICAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50
Kik7Ci0gICAgdm9pZCByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogCiAgICAgdm9pZCBzdHlsZUF0
dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKTsKIApA
QCAtMjE4LDE5ICsyMTgsMTggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yT3ZlcmxheTo6R3JpZDo6Q29uZmlnPiBncmlkT3ZlcmxheUNvbmZpZ0Zyb21JbnNwZWN0b3JP
YmplY3QoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYmIGdyaWRPdmVybGF5SW5zcGVjdG9yT2JqZWN0KTsKIAogICAgIC8vIE5vZGUtcmVsYXRl
ZCBtZXRob2RzLgotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBOb2RlVG9JZE1hcDsKLSAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGVJZCBiaW5kKE5vZGUqLCBOb2RlVG9JZE1hcCopOwotICAgIHZvaWQgdW5i
aW5kKE5vZGUqLCBOb2RlVG9JZE1hcCopOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZUlkIGJpbmQoTm9kZSYpOworICAgIHZvaWQgdW5iaW5kKE5vZGUmKTsKIAogICAgIE5vZGUq
IGFzc2VydEVkaXRhYmxlTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkKTsKICAgICBFbGVtZW50KiBhc3NlcnRFZGl0
YWJsZUVsZW1lbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpET006Ok5vZGVJZCk7CiAKICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9u
dGVuZChJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwgaW50IGRlcHRoID0gMSk7CiAK
LSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5v
ZGUoTm9kZSosIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCk7
CiAgICAgUmVmPEpTT046OkFycmF5T2Y8U3RyaW5nPj4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRy
aWJ1dGVzKEVsZW1lbnQqKTsKLSAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29u
dGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZv
clBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwor
ICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1
aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCk7
CisgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
Pj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNvbnN0IEVsZW1lbnQmKTsKICAgICBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2
ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkV2ZW50TGlzdGVuZXJJZCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYsIGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgY29uc3QgUmVmUHRyPEpT
Qzo6QnJlYWtwb2ludD4mKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nl
c3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGll
cyhOb2RlJik7CiAgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9i
amVjdCYsIEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+Jik7
CkBAIC0yNDIsMTYgKzI0MSwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbm5lckhpZ2hsaWdo
dFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
Y29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAorICAgIHZvaWQgZGVzdHJveWVkTm9kZXNU
aW1lckZpcmVkKCk7CisKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9N
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBQ
YWdlJiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5IHsg
bnVsbHB0ciB9OwotICAgIE5vZGVUb0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsKLSAgICAv
LyBPd25zIG5vZGUgbWFwcGluZ3MgZm9yIGRhbmdsaW5nIG5vZGVzLgotICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Tm9kZVRvSWRNYXA+PiBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzOworICAgIEhh
c2hNYXA8Y29uc3QgTm9kZSosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBtX25v
ZGVUb0lkOwogICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIE5v
ZGUqPiBtX2lkVG9Ob2RlOwotICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlSWQsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CiAgICAgSGFzaFNldDxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gbV9jaGlsZHJlblJlcXVlc3RlZDsKICAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBtX2xhc3ROb2RlSWQgeyAxIH07CiAgICAgUmVm
UHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwpAQCAtMjY1LDYgKzI2MywxMCBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CiAKKyAgICBWZWN0b3I8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IG1fZGVzdHJveWVkRGV0YWNoZWROb2RlSWRlbnRp
ZmllcnM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+PiBtX2Rlc3Ryb3llZEF0dGFj
aGVkTm9kZUlkZW50aWZpZXJzOworICAgIFRpbWVyIG1fZGVzdHJveWVkTm9kZXNUaW1lcjsKKwog
I2lmIEVOQUJMRShWSURFTykKICAgICBUaW1lciBtX21lZGlhTWV0cmljc1RpbWVyOwogICAgIHN0
cnVjdCBNZWRpYU1ldHJpY3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IDAyODMwZmQwNjQ5YWZm
MTgzMDU1NWM0Y2E4ZmQ4ZGM4ZmUxMzZkM2IuLjZlMmZkNmZhMjFkODMxNTI1NjNkMDQzYjMwY2Ux
NTVkZWVhYTJiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ3LDIxICs0NywxMiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBQYWdlQ29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFn
ZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBXZWJDb25zb2xlQWdlbnQoY29u
dGV4dCkKLSAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdB
Z2VudHMpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewog
fQogCiBQYWdlQ29uc29sZUFnZW50Ojp+UGFnZUNvbnNvbGVBZ2VudCgpID0gZGVmYXVsdDsKIAot
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNz
YWdlcygpCi17Ci0gICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
LnBlcnNpc3RlbnRET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+cmVsZWFzZURhbmdsaW5n
Tm9kZXMoKTsKLQotICAgIHJldHVybiBXZWJDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoKTsK
LX0KLQogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OkNvbnNvbGU6OkNoYW5uZWw+Pj4gUGFnZUNvbnNvbGVBZ2VudDo6Z2V0TG9nZ2luZ0NoYW5uZWxz
KCkKIHsKICAgICBhdXRvIGNoYW5uZWxzID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6Q29uc29s
ZTo6Q2hhbm5lbD46OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmgKaW5kZXggNDFmZTc2ZDAzMjA3MGUw
ZDQxMDNlNDBhMmMxNDRjZTM3OTgxYzgzMy4uNzNlOWU3MzFjNzYzN2Q4NjcwZWQ0OTRhZDA2NTEz
NDljZGVhNzhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oCkBAIC00NCwxMiArNDQsMTAgQEAgcHVibGljOgog
ICAgIH5QYWdlQ29uc29sZUFnZW50KCk7CiAKICAgICAvLyBDb25zb2xlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyCi0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBj
bGVhck1lc3NhZ2VzKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxS
ZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPj4+
IGdldExvZ2dpbmdDaGFubmVscygpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gc2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChJbnNwZWN0b3I6OlByb3RvY29sOjpD
b25zb2xlOjpDaGFubmVsU291cmNlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFu
bmVsTGV2ZWwpOwogCiBwcml2YXRlOgotICAgIEluc3RydW1lbnRpbmdBZ2VudHMmIG1faW5zdHJ1
bWVudGluZ0FnZW50czsKICAgICBQYWdlJiBtX2luc3BlY3RlZFBhZ2U7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01E
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCA2YzIwNzJjNDI5OTRjZTdlZTI0NWY3MDg2MzFhNmNjODNk
ZjcxYTVlLi4xMDRhZGE4ODE1ZDQ5MTVjYmMyOTY4MGM1YjIzZTdhNmUyZDc4YzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI3Nyw2ICsyNzcsMTMgQEAgdm9pZCBQYWdlRE9NRGVi
dWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogICAgIG1fZG9tTm9kZVJl
bW92ZWRCcmVha3BvaW50cy5yZW1vdmVJZihub2RlQ29udGFpbnNCcmVha3BvaW50T3duZXIpOwog
fQogCit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveURPTU5vZGUoTm9kZSYg
bm9kZSkKK3sKKyAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gR0MuCisg
ICAgLy8gRE9NIE5vZGUgZGVzdHJ1Y3Rpb24gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgaWYgdGhlIG5v
ZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHRyZWUuCisgICAgZGlkUmVtb3ZlRE9NTm9kZShu
b2RlKTsKK30KKwogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIo
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2lu
dHNBY3RpdmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggZDg3MjgyOTI1ZWM2OTMxMGUw
YmMwZTc4ODNjZGNhNTA4ZDEwMzUyMi4uYjgxYjViMzE1ZDc2Y2NlNjJiM2RlNDFmNzNiNWNhZjUz
ODJjY2JiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KTsKICAgICB2b2lkIHdp
bGxSZW1vdmVET01Ob2RlKE5vZGUmKTsKICAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYp
OworICAgIHZvaWQgd2lsbERlc3Ryb3lET01Ob2RlKE5vZGUmKTsKICAgICB2b2lkIHdpbGxNb2Rp
ZnlET01BdHRyKEVsZW1lbnQmKTsKICAgICB2b2lkIHdpbGxJbnZhbGlkYXRlU3R5bGVBdHRyKEVs
ZW1lbnQmKTsKICAgICB2b2lkIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
T01NYW5hZ2VyLmpzCmluZGV4IDcwYjhmZDg5YTAwYjhhZjkwMmYxOTYyYjNjMWRjM2Q0N2U2NWFi
YzYuLjgwMDljZTgxY2U4YjFkMjc3NzMxYzg3M2NiMzNkZjE1NTk0ZDgyZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRE9NTWFuYWdlci5qcwpAQCAtMTg1LDYgKzE4NSwxNSBAQCBXSS5ET01NYW5hZ2VyID0gY2xh
c3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgLy8gRE9NT2JzZXJ2ZXIKIAor
ICAgIHdpbGxEZXN0cm95RE9NTm9kZShub2RlSWQpCisgICAgeworICAgICAgICBsZXQgbm9kZSA9
IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAgICAgIG5vZGUubWFya0Rlc3Ryb3llZCgp
OworICAgICAgICBkZWxldGUgdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKKworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVSZW1v
dmVkLCB7bm9kZX0pOworICAgIH0KKwogICAgIGRpZEFkZEV2ZW50TGlzdGVuZXIobm9kZUlkKQog
ICAgIHsKICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9N
T2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9ET01PYnNlcnZlci5qcwppbmRleCA2NGY5YTEyYzYzY2QxYTQwYTgwZDIzZmMyNzc2Zjk4YTRi
YjAzNDZlLi4xZWE5YzI0NzU4YjlhNDVjZjNlMjk0ZjNmZDA0NjMyNGFmZjQyZmUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNl
cnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9ET01PYnNlcnZlci5qcwpAQCAtNzcsNiArNzcsMTEgQEAgV0kuRE9NT2JzZXJ2ZXIgPSBjbGFz
cyBET01PYnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgogICAgICAg
ICBXSS5kb21NYW5hZ2VyLl9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKTsK
ICAgICB9CiAKKyAgICB3aWxsRGVzdHJveURPTU5vZGUobm9kZUlkKQorICAgIHsKKyAgICAgICAg
V0kuZG9tTWFuYWdlci53aWxsRGVzdHJveURPTU5vZGUobm9kZUlkKTsKKyAgICB9CisKICAgICBz
aGFkb3dSb290UHVzaGVkKGhvc3RJZCwgcm9vdCkKICAgICB7CiAgICAgICAgIFdJLmRvbU1hbmFn
ZXIuX2NoaWxkTm9kZUluc2VydGVkKGhvc3RJZCwgMCwgcm9vdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVy
LmpzCmluZGV4IDEwZjkyMjkwZjFlMTZhNTg5Y2U0YTdjOGJlNDNlOTlkMmU4NmQ0ZDguLjZjMGFl
OGExNmY5NDM2ZWM2YjJlZmJmZjJhYjQ4MjhiMzIxYjgxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVy
LmpzCkBAIC0xMDMsNyArMTAzLDExIEBAIFdJLkRPTVRyZWVVcGRhdGVyLnByb3RvdHlwZSA9IHsK
IAogICAgIF9ub2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlz
Ll9yZWNlbnRseURlbGV0ZWROb2Rlcy5zZXQoZXZlbnQuZGF0YS5ub2RlLCB7cGFyZW50OiBldmVu
dC5kYXRhLnBhcmVudH0pOworICAgICAgICBsZXQgcGFyZW50ID0gZXZlbnQuZGF0YS5wYXJlbnQ7
CisgICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3JlY2VudGx5RGVsZXRlZE5vZGVzLnNldChldmVudC5kYXRhLm5vZGUsIHtwYXJlbnR9KTsK
ICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQogICAgICAgICAgICAgdGhp
cy5fdXBkYXRlTW9kaWZpZWROb2Rlc0RlYm91bmNlci5kZWxheUZvckZyYW1lKCk7CiAgICAgfSwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYTcyMWUyYjczNzU1MTQ5ZjZiMzUwMTMwNTQ0YWZiOWIxOTM5Mjg1Li4yYThmMzEz
OTk5MDMyZTUwYjlkNzdhZmEwOGFlNzZmYjY1NzdmMWMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjEtMDYtMTAgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEFkZCBpbnN0cnVtZW50YXRpb24gdG8gbm9kZSBkZXN0cnVjdGlvbiBm
b3IgSW5zcGVjdG9yRE9NQWdlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4K
KworICAgICAgICAqIGluc3BlY3Rvci9kb20vd2lsbERlc3Ryb3lET01Ob2RlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUuaHRt
bDogQWRkZWQuCisKIDIwMjEtMDYtMDEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgY2FsYygpIG9uIGNvbXBvbmVudHMgaW5zaWRlIHJlbGF0aXZlIGNv
bG9yIHN5bnRheCBjb2xvcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
d2lsbERlc3Ryb3lET01Ob2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20vd2lsbERlc3Ryb3lET01Ob2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTI4ZTY0NTI5
NjRhMzE5NWRlMDc4YmY2MDBmNDE2NzUzODcwZDRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1Rlc3QgZm9yIERPTS53aWxsRGVzdHJveURPTU5vZGUuCisKKworPT0gUnVu
bmluZyB0ZXN0IHN1aXRlOiBET00ud2lsbERlc3Ryb3lET01Ob2RlCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRE9NLndpbGxEZXN0cm95RE9NTm9kZS5DcmVhdGVEZWxldGVBbmRHQ0RldGFjaGVkTm9k
ZQorQ3JlYXRpbmcgbmV3IGRldGFjaGVkIERPTSBub2RlLgorUmVxdWVzdGluZyBET00gbm9kZSBp
biBvcmRlciB0byByZWNlaXZlIGZ1dHVyZSBldmVudHMuCitSZWxlYXNpbmcgbm9kZSBhbmQgdGhl
biB0cmlnZ2VyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGlsZSBhd2FpdGluZyBgRE9NLndpbGxE
ZXN0cm95RE9NTm9kZWAgZXZlbnQuCitSZWNlaXZlZCBldmVudCBgRE9NLndpbGxEZXN0b3J5RE9N
Tm9kZWAgYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL3dpbGxEZXN0cm95RE9NTm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjhjOWIwZDBh
MGUzYzc3YjJjMGJiY2IzYjFlODg0OGQ1ODU4MWE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS93aWxsRGVzdHJveURPTU5vZGUuaHRtbApAQCAtMCwwICsxLDQ3
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IFByb3RvY29s
VGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00ud2lsbERlc3Ryb3lET01Ob2RlIik7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJET00ud2lsbERlc3Ryb3lET01Ob2Rl
LkNyZWF0ZURlbGV0ZUFuZEdDRGV0YWNoZWROb2RlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJD
cmVhdGUgYSBuZXcgRE9NIG5vZGUgdGhhdCBpcyBub3QgYXR0YWNoZWQgdGhlIERPTSB0cmVlLCBh
bmQgdGhlbiBhbGxvdyBpdCB0byBiZSBnYXJiYWdlIGNvbGxlY3RlZC4iLAorICAgICAgICBhc3lu
YyB0ZXN0KCkgeworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiQ3JlYXRpbmcgbmV3IGRl
dGFjaGVkIERPTSBub2RlLiIpOworICAgICAgICAgICAgbGV0IGRvbU5vZGVSZXNwb25zZSA9IGF3
YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7IG1ldGhvZDogIlJ1bnRpbWUuZXZh
bHVhdGUiLCBwYXJhbXM6IHsgZXhwcmVzc2lvbjogYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEi
KWAgfSB9KTsKKyAgICAgICAgICAgIGxldCBvYmplY3RJZCA9IGRvbU5vZGVSZXNwb25zZS5yZXN1
bHQub2JqZWN0SWQ7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QuYXNzZXJ0KCFkb21Ob2RlUmVz
cG9uc2Uud2FzVGhyb3duKTsKKworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUmVxdWVz
dGluZyBET00gbm9kZSBpbiBvcmRlciB0byByZWNlaXZlIGZ1dHVyZSBldmVudHMuIik7CisgICAg
ICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMzQ5OT4gV2ViIEluc3Bl
Y3RvcjogYWxsb3cgRE9NIG5vZGVzIHRvIGJlIGluc3RydW1lbnRlZCBhdCBhbnkgcG9pbnQsIHJl
Z2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWFpbiBkb2N1bWVudCBoYXMgYWxzbyBiZWVuIGluc3Ry
dW1lbnRlZAorICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5k
KHsgbWV0aG9kOiAiRE9NLmdldERvY3VtZW50In0pOworICAgICAgICAgICAgbGV0IG5vZGUgPSBh
d2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoeyBtZXRob2Q6ICJET00ucmVxdWVz
dE5vZGUiLCBwYXJhbXM6IHsgb2JqZWN0SWQgfSB9KTsKKworICAgICAgICAgICAgLy8gUHJvdG9j
b2xUZXN0LmxvZygiUmVsZWFzaW5nIHJlZmVyZW5jZSB0byBub2RlIGhlbGQgYnkgcmVtb3RlIG9i
amVjdC4iKQorICAgICAgICAgICAgLy8gYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21t
YW5kKHsgbWV0aG9kOiAiQ29uc29sZS5jbGVhck1lc3NhZ2VzIiB9KTsKKworICAgICAgICAgICAg
UHJvdG9jb2xUZXN0LmxvZygiUmVsZWFzaW5nIG5vZGUgYW5kIHRoZW4gdHJpZ2dlcmluZyBnYXJi
YWdlIGNvbGxlY3Rpb24gd2hpbGUgYXdhaXRpbmcgYERPTS53aWxsRGVzdHJveURPTU5vZGVgIGV2
ZW50LiIpOworICAgICAgICAgICAgbGV0IGRlbGV0ZU5vZGVQcm9taXNlID0gSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHsgbWV0aG9kOiAiUnVudGltZS5yZWxlYXNlT2JqZWN0IiwgcGFy
YW1zOiB7IG9iamVjdElkIH0gfSk7CisgICAgICAgICAgICBsZXQgZ2NQcm9taXNlID0gUHJvdG9j
b2xUZXN0LmV2YWx1YXRlSW5QYWdlKGBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpYCk7CisKKyAgICAg
ICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90
b2NvbC5hd2FpdEV2ZW50KHtldmVudDoiRE9NLndpbGxEZXN0cm95RE9NTm9kZSJ9KSwKKyAgICAg
ICAgICAgICAgICBkZWxldGVOb2RlUHJvbWlzZS50aGVuKChyZXNvbHZlKSA9PiBnY1Byb21pc2Up
LAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlJlY2Vp
dmVkIGV2ZW50IGBET00ud2lsbERlc3RvcnlET01Ob2RlYCBhZnRlciBnYXJiYWdlIGNvbGxlY3Rp
b24uIik7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7
Ij4KKzxwPlRlc3QgZm9yIERPTS53aWxsRGVzdHJveURPTU5vZGUuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>