<?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>206368</bug_id>
          
          <creation_ts>2020-01-16 12:20:35 -0800</creation_ts>
          <short_desc>[JSC] add DFG/FTL support for op_to_property_key</short_desc>
          <delta_ts>2020-01-18 15:15:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>195619</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>caitp</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1607588</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-16 12:20:35 -0800</bug_when>
    <thetext>Add tiered JIT support for op_to_property_key, used by computed class fields. One small part of https://bugs.webkit.org/show_bug.cgi?id=195619</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607589</commentid>
    <comment_count>1</comment_count>
      <attachid>387942</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-16 12:25:57 -0800</bug_when>
    <thetext>Created attachment 387942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607636</commentid>
    <comment_count>2</comment_count>
      <attachid>387942</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-16 13:41:16 -0800</bug_when>
    <thetext>Comment on attachment 387942
Patch

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

Looks really nice. I would like to have StringObject handling, which is implemented in ToPrimitive too. Then looks perfect.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1394
&gt; +        case ToPropertyKey: {

Let&apos;s handle StringObject case as it is done in ToPrimitive (and add tests).
If we detect the input is StringObject and m_graph.canOptimizeStringObjectAccess is true, let&apos;s insert a check, and convert it to ToString&lt;&gt;.

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:583
&gt; +        }

Let&apos;s handle StringObject case too, as it is done in ToPrimitive case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607893</commentid>
    <comment_count>3</comment_count>
      <attachid>387942</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-16 23:52:24 -0800</bug_when>
    <thetext>Comment on attachment 387942
Patch

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

LGTM too. I found one minor perf bug

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2530
&gt; +            m_state.setShouldTryConstantFolding(true);

You need to write the code inside DFGConstantFoldingPhase that corresponds to this and actually does the identity conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608038</commentid>
    <comment_count>4</comment_count>
      <attachid>388049</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-17 09:37:08 -0800</bug_when>
    <thetext>Created attachment 388049
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608044</commentid>
    <comment_count>5</comment_count>
      <attachid>387942</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-17 09:43:28 -0800</bug_when>
    <thetext>Comment on attachment 387942
Patch

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

Thanks very much for the review. I&apos;d like Caio to get the chance to review this as well, and there is probably some room for improvement before I set CQ+

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2530
&gt;&gt; +            m_state.setShouldTryConstantFolding(true);
&gt; 
&gt; You need to write the code inside DFGConstantFoldingPhase that corresponds to this and actually does the identity conversion.

Done

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1394
&gt;&gt; +        case ToPropertyKey: {
&gt; 
&gt; Let&apos;s handle StringObject case as it is done in ToPrimitive (and add tests).
&gt; If we detect the input is StringObject and m_graph.canOptimizeStringObjectAccess is true, let&apos;s insert a check, and convert it to ToString&lt;&gt;.

Done, but I&apos;m not super confident on it, so please take another look

&gt;&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:583
&gt;&gt; +        }
&gt; 
&gt; Let&apos;s handle StringObject case too, as it is done in ToPrimitive case.

Done (but again, please take another look to make sure the logic I came up with is sound)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608048</commentid>
    <comment_count>6</comment_count>
      <attachid>388049</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-01-17 09:52:10 -0800</bug_when>
    <thetext>Comment on attachment 388049
Patch v2

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

Sorry for the delay here. I just have one minor comment about Prediction propagation.

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:580
&gt; +            if (child)

I think we should be able to predict `SpecString | SpecSymbol` even when `child == SpecNone`, given those are the only possible output for `ToPropertyKey`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608217</commentid>
    <comment_count>7</comment_count>
      <attachid>388049</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-17 14:59:48 -0800</bug_when>
    <thetext>Comment on attachment 388049
Patch v2

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:580
&gt;&gt; +            if (child)
&gt; 
&gt; I think we should be able to predict `SpecString | SpecSymbol` even when `child == SpecNone`, given those are the only possible output for `ToPropertyKey`.

No. Prediction propagation phase is iterative. So, getting SpecNone here is not meaning that this is the final result (let&apos;s consider loops etc.). Returning `SpecString | SpecSymbol` for SpecNone pollutes type prediction information unnecessarily and produces inefficient generic code.
And, we should return SpecNone for SpecNone, this is better. This phase is not AbstractInterpreter: AI needs to offer proven all possible type, on the other hand, prediction propagation needs to offer &quot;prediction&quot; for efficient execution.
The input = SpecNone typically means this code is never executed. Even though, this type prediction could be merged into the active path later (due to the control flow), and in that case, we pollute the prediction accidentally, and leading to the inefficient code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608228</commentid>
    <comment_count>8</comment_count>
      <attachid>388049</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-17 15:10:54 -0800</bug_when>
    <thetext>Comment on attachment 388049
Patch v2

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1412
&gt; +            if (node-&gt;child1()-&gt;shouldSpeculateStringObject()
&gt; +                &amp;&amp; m_graph.canOptimizeStringObjectAccess(node-&gt;origin.semantic)) {
&gt; +                addCheckStructureForOriginalStringObjectUse(StringObjectUse, node-&gt;origin, node-&gt;child1().node());
&gt; +                fixEdge&lt;StringObjectUse&gt;(node-&gt;child1());
&gt; +                node-&gt;convertToToString();
&gt; +                return;

Looks nice.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1414
&gt; +            break;

You can also add `node-&gt;child1()-&gt;shouldSpeculateStringOrStringObject()` case as ToPrimitive is doing.

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:1449
&gt; +        if (type &amp; SpecStringObject &amp;&amp; m_graph.canOptimizeStringObjectAccess(m_currentNode-&gt;origin.semantic))
&gt; +            return mergeSpeculations(type &amp; SpecSymbol, SpecString);

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608229</commentid>
    <comment_count>9</comment_count>
      <attachid>388049</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-17 15:14:08 -0800</bug_when>
    <thetext>Comment on attachment 388049
Patch v2

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:580
&gt;&gt;&gt; +            if (child)
&gt;&gt; 
&gt;&gt; I think we should be able to predict `SpecString | SpecSymbol` even when `child == SpecNone`, given those are the only possible output for `ToPropertyKey`.
&gt; 
&gt; No. Prediction propagation phase is iterative. So, getting SpecNone here is not meaning that this is the final result (let&apos;s consider loops etc.). Returning `SpecString | SpecSymbol` for SpecNone pollutes type prediction information unnecessarily and produces inefficient generic code.
&gt; And, we should return SpecNone for SpecNone, this is better. This phase is not AbstractInterpreter: AI needs to offer proven all possible type, on the other hand, prediction propagation needs to offer &quot;prediction&quot; for efficient execution.
&gt; The input = SpecNone typically means this code is never executed. Even though, this type prediction could be merged into the active path later (due to the control flow), and in that case, we pollute the prediction accidentally, and leading to the inefficient code.

One way to consider about this phase is, &quot;Given this prediction input, what is the minimal possible type prediction which covers the input prediction&apos;s use case?&quot;
So, if the prediction input is saying SpecNone, SpecNone is the minimal possible type prediction output which covers the code producing the input&apos;s prediction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608237</commentid>
    <comment_count>10</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-01-17 15:32:14 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #9)
&gt; Comment on attachment 388049 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388049&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:580
&gt; &gt;&gt;&gt; +            if (child)
&gt; &gt;&gt; 
&gt; &gt;&gt; I think we should be able to predict `SpecString | SpecSymbol` even when `child == SpecNone`, given those are the only possible output for `ToPropertyKey`.
&gt; &gt; 
&gt; &gt; No. Prediction propagation phase is iterative. So, getting SpecNone here is not meaning that this is the final result (let&apos;s consider loops etc.). Returning `SpecString | SpecSymbol` for SpecNone pollutes type prediction information unnecessarily and produces inefficient generic code.
&gt; &gt; And, we should return SpecNone for SpecNone, this is better. This phase is not AbstractInterpreter: AI needs to offer proven all possible type, on the other hand, prediction propagation needs to offer &quot;prediction&quot; for efficient execution.
&gt; &gt; The input = SpecNone typically means this code is never executed. Even though, this type prediction could be merged into the active path later (due to the control flow), and in that case, we pollute the prediction accidentally, and leading to the inefficient code.
&gt; 
&gt; One way to consider about this phase is, &quot;Given this prediction input, what
&gt; is the minimal possible type prediction which covers the input prediction&apos;s
&gt; use case?&quot;
&gt; So, if the prediction input is saying SpecNone, SpecNone is the minimal
&gt; possible type prediction output which covers the code producing the input&apos;s
&gt; prediction.

Right! Thanks for the clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608261</commentid>
    <comment_count>11</comment_count>
      <attachid>388103</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-17 15:59:46 -0800</bug_when>
    <thetext>Created attachment 388103
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608265</commentid>
    <comment_count>12</comment_count>
      <attachid>388049</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-17 16:02:30 -0800</bug_when>
    <thetext>Comment on attachment 388049
Patch v2

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1414
&gt;&gt; +            break;
&gt; 
&gt; You can also add `node-&gt;child1()-&gt;shouldSpeculateStringOrStringObject()` case as ToPrimitive is doing.

Done in the patch for landing. I&apos;ve added a test, which I hope exercises this path, but hard to be sure.

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:580
&gt;&gt;&gt;&gt;&gt; +            if (child)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I think we should be able to predict `SpecString | SpecSymbol` even when `child == SpecNone`, given those are the only possible output for `ToPropertyKey`.
&gt;&gt;&gt; 
&gt;&gt;&gt; No. Prediction propagation phase is iterative. So, getting SpecNone here is not meaning that this is the final result (let&apos;s consider loops etc.). Returning `SpecString | SpecSymbol` for SpecNone pollutes type prediction information unnecessarily and produces inefficient generic code.
&gt;&gt;&gt; And, we should return SpecNone for SpecNone, this is better. This phase is not AbstractInterpreter: AI needs to offer proven all possible type, on the other hand, prediction propagation needs to offer &quot;prediction&quot; for efficient execution.
&gt;&gt;&gt; The input = SpecNone typically means this code is never executed. Even though, this type prediction could be merged into the active path later (due to the control flow), and in that case, we pollute the prediction accidentally, and leading to the inefficient code.
&gt;&gt; 
&gt;&gt; One way to consider about this phase is, &quot;Given this prediction input, what is the minimal possible type prediction which covers the input prediction&apos;s use case?&quot;
&gt;&gt; So, if the prediction input is saying SpecNone, SpecNone is the minimal possible type prediction output which covers the code producing the input&apos;s prediction.
&gt; 
&gt; Right! Thanks for the clarification.

+1, thanks a lot for the explanation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608267</commentid>
    <comment_count>13</comment_count>
      <attachid>388049</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-17 16:13:39 -0800</bug_when>
    <thetext>Comment on attachment 388049
Patch v2

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1414
&gt;&gt;&gt; +            break;
&gt;&gt; 
&gt;&gt; You can also add `node-&gt;child1()-&gt;shouldSpeculateStringOrStringObject()` case as ToPrimitive is doing.
&gt; 
&gt; Done in the patch for landing. I&apos;ve added a test, which I hope exercises this path, but hard to be sure.

well, I&apos;ve just now verified that the path is taken in the test, so that&apos;s promising.

This doesn&apos;t seem like something that would likely be hit in practice, but I guess it&apos;s not too expensive to support it. ¯\(°_o)/¯</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608448</commentid>
    <comment_count>14</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-18 09:11:34 -0800</bug_when>
    <thetext>I flipped cq+ last night, and reflipped today, but doesn’t seem to be going anywhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608475</commentid>
    <comment_count>15</comment_count>
      <attachid>388103</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-18 13:45:49 -0800</bug_when>
    <thetext>Comment on attachment 388103
Patch for landing

Reflipped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608476</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-18 13:46:38 -0800</bug_when>
    <thetext>cq is currently in migration state from High Sierra =&gt; Mojave IIUC. And maybe, in some trouble, not sure whether this is fixed already. Try refliping again now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608480</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-18 14:43:20 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388103:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608483</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-18 14:43:43 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388103:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608486</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-18 15:14:02 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388103:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608487</commentid>
    <comment_count>20</comment_count>
      <attachid>388103</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-18 15:14:35 -0800</bug_when>
    <thetext>Comment on attachment 388103
Patch for landing

Clearing flags on attachment: 388103

Committed r254801: &lt;https://trac.webkit.org/changeset/254801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608488</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-18 15:14:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608489</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-18 15:15:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/58713990&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387942</attachid>
            <date>2020-01-16 12:25:57 -0800</date>
            <delta_ts>2020-01-17 09:37:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206368-20200116152554.patch</filename>
            <type>text/plain</type>
            <size>24378</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzNlYmEwOThlMWU1NjA2MjY2ZGYzNzFiOWUzYzEyY2ZjMWFiOGMwLi5iMzJmMTMyZWFmMzYzMTJm
YmY1N2M4NWM5MTkzNjUwODFjNzRiNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAyMC0wMS0xNiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX3RvX3Byb3BlcnR5
X2tleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2
MzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IERGRy9GVEwgc3VwcG9ydCBmb3IgdGhlIG9wX3RvX3Byb3BlcnR5X2tleSBvcGNvZGUu
IFRoaXMgb3BlcmF0ZXMKKyAgICAgICAgc2ltaWxhciB0byB0aGUgTExJbnQgYW5kIGJhc2UgSklU
IGltcGxlbWVudGF0aW9ucywgaW4gd2hpY2ggd2UgYXZvaWQgaW52b2tpbmcKKyAgICAgICAgdGhl
IGZ1bGwgVG9Qcm9wZXJ0eUtleSBvcGVyYXRpb24gaWYgdGhlIHNvdXJjZSBvcGVyYW5kIGlzIGFs
cmVhZHkgYSBTdHJpbmcgb3IKKyAgICAgICAgU3ltYm9sIGF0IHJ1bnRpbWUuCisKKyAgICAgICAg
SWYgREZHL0ZUTCBhcmUgY29uZmlkZW50IHRoZSB2YWx1ZSB3aWxsIGJlIGEgU3RyaW5nIG9yIFN5
bWJvbCBhdCBjb21waWxlIHRpbWUsCisgICAgICAgIHRoZSBvcGVyYXRpb24gaXMgb21pdHRlZCBl
bnRpcmVseSBpbiB0aGUgZmluYWwgZ3JhcGguCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9Qcm9wZXJ0eUtleSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb1Byb3Bl
cnR5S2V5KToKKwogMjAyMC0wMS0xNiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgUGFzcyBKU1Rva2VuIGJ5IGNvbnN0IHJlZmVyZW5jZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IGMyNmMyNGFmZWJlMWNmN2VkZTFhMDc4NDBkMGM2NmQ5NzQ2NjgwMDMuLmYz
MTA4YTdiYzMyZTIzOTg4NjU1MGM5ZDE5YWNiMWY2NjY0OTEyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTI1MjUsNiArMjUyNSwyMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFRvUHJvcGVydHlLZXk6IHsKKyAgICAgICAgaWYg
KCEoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjU3RyaW5nIHwgU3BlY1N5
bWJvbCkpKSB7CisgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGlu
Zyh0cnVlKTsKKyAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAg
IHNldEZvck5vZGUobm9kZSwgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjbG9iYmVyV29ybGQoKTsKKworICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgVG9OdW1iZXI6IHsKICAgICAgICAgSlNWYWx1ZSBjaGls
ZENvbnN0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNo
aWxkQ29uc3QgJiYgY2hpbGRDb25zdC5pc051bWJlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDdlZmZhZDA3ZjIyNDI1OGYw
N2EyZTA0ZjZhYmZlZTA2MGIyZmFkNTAuLjBmNWNjNGFiYjJmZTJlOTc0MjRlMTMyZTA5Y2M4M2U2
MGUzYjc2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC01NTQ5LDcgKzU1NDksMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwg
YWRkVG9HcmFwaChUb1ByaW1pdGl2ZSwgdmFsdWUpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3RvX3ByaW1pdGl2ZSk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNh
c2Ugb3BfdG9fcHJvcGVydHlfa2V5OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFRvUHJvcGVydHlLZXk+KCk7CisgICAgICAgICAgICBOb2Rl
KiB2YWx1ZSA9IGdldChieXRlY29kZS5tX3NyYyk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kc3QsIGFkZFRvR3JhcGgoVG9Qcm9wZXJ0eUtleSwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3RvX3Byb3BlcnR5X2tleSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX3N0cmNhdDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BTdHJjYXQ+KCk7CiAgICAgICAgICAgICBpbnQgc3RhcnRPcGVyYW5kID0gYnl0
ZWNvZGUubV9zcmMub2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKaW5kZXggYjE4MjMxN2I5ZmY4NDE2YTU5NzQxNjFlM2RjMmI4YTU3M2Y1
YWU4ZC4uZjljYmFmOGJlMjJjNjZlNzU3MTdjMTY5YWRhYzZlMmJjNGU5NGFkNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjgyLDYgKzI4
Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQs
IENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgog
ICAgIGNhc2Ugb3BfZ2V0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFs
X2ZpZWxkOgorICAgIGNhc2Ugb3BfdG9fcHJvcGVydHlfa2V5OgogICAgIGNhc2Ugb3BfdW5yZWFj
aGFibGU6CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3Vw
ZXJfc2FtcGxlcl9lbmQ6CkBAIC0yOTMsNyArMjk0LDYgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IEkKIAogICAgIGNhc2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2Zy
YW1lX2Vudmlyb25tZW50OgotICAgIGNhc2Ugb3BfdG9fcHJvcGVydHlfa2V5OiAvLyBGSVhNRTog
b3BfdG9fcHJvcGVydHlfa2V5IHdpbGwgbmVlZCBERkcvRlRMIHN1cHBvcnQgdG8gc2hpcCBjbGFz
cyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGNhc2UgbGxp
bnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3Vl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiZmIxZDE0
NjE1NWM0YzdlMmJhOThlOTFiM2I5YjNiMjg0ZmJjMDM0Li5kNmJlMGNlOWU0OTkzOWIzZGZkOGYz
NWY3MzVjZGY5NDczMjU1NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtNjQ5LDYgKzY0OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAg
Y2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6
CiAgICAgY2FzZSBUb1ByaW1pdGl2ZToKKyAgICBjYXNlIFRvUHJvcGVydHlLZXk6CiAgICAgY2Fz
ZSBJbkJ5VmFsOgogICAgIGNhc2UgSW5CeUlkOgogICAgIGNhc2UgSGFzT3duUHJvcGVydHk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggYTU4Mzk5MzQyYWFhOWVi
NWE5NTkwZDQ4NjU5ZDQ5MjQ3NTY4YmZlZi4uOGM5OTk1MGUxMzVkYWU5YjlhZjI4MmJkN2QxMDcx
ZWI3ODIyNWM4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzM1LDYgKzMzNSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIFRvTnVtZXJpYzoKICAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNhc2UgVG9QcmltaXRp
dmU6CisgICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2Ug
VHJ5R2V0QnlJZDoKICAgICBjYXNlIENyZWF0ZVRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzNzRkNTI2MDljM2VjNjY2YjVjYzYzMDc2NzAx
NGVkYjQ1MGY0ZmQ4Li5mYTc2MjRiODFlMzlhMjI0ZjBlYTUwYmNiY2Q3NjYwZmI4MTBhODgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEzOTEs
NiArMTM5MSwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIFRvUHJvcGVydHlLZXk6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgp
KSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBUb051bWJlcjogewogICAgICAgICAgICAgZml4dXBUb051bWJlcihu
b2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IGMwNDdjNmU3MTgyNTlhYTk1ZjVkMTNhYWE4NzBmODE3MTQ2MWNjZWIuLjI5
MDM0Y2UxODk4OGExNDU1N2YzYjY5NzgyMDIwMTM1ZDk2NDMzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQwMCw2ICs0MDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFRvUHJp
bWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oVG9Q
cm9wZXJ0eUtleSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KFRvU3RyaW5nLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
VG9OdW1iZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhU
b051bWVyaWMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGJiNWM4MzU5YzEyODVhY2Iz
NjExZGI1Mjc2OGYzNTA5MDhmMDRmNjMuLjcyYmY4NjVhMGRhMzhlZGYzYTIwNzYzZTIxZWNjN2M0
Y2I4OGMyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cApAQCAtMTY0OSw2ICsxNjQ5LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VG9Qcm9wZXJ0eUtleShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1Byb3BlcnR5S2V5
VmFsdWUoZ2xvYmFsT2JqZWN0KSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBhMzNlZGU5YjUxMTIwZTkx
NWQ2YWJlOGUxNzliNjkxN2FmNThkN2FjLi4wZjFjODc1NGNkNjlmNzc4ZTk2NzgzMGYyMTY3YTlh
NGM4ZDI5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApA
QCAtOTEsNiArOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5VmFsU3RyaW5nSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbgogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZyhKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCosIEpTQ2VsbCogc3RyaW5nKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiwgSlNDZWxsKiBzeW1ib2wpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9O
dW1iZXIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWVyaWMoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmMTFjZTc2NGIzOTZkOWEzYTlmZjdhOGQ1ZWM0YzE4
YWUxMWU0NzA3Li41NTcwMTVlNGM0OTE2OWNkZWI5MTU5YTg1YWI5Y2QxNTUyNTk2Y2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTc1LDYgKzU3NSwxMyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFRvUHJvcGVydHlLZXk6IHsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGNoaWxkID0gbm9kZS0+Y2hpbGQxKCktPnByZWRp
Y3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChjaGlsZCkKKyAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihyZXN1bHRPZlRvUHJvcGVydHlLZXkoY2hpbGQpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBOb3JtYWxpemVNYXBLZXk6
IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLT5jaGlsZDEo
KS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCkBAIC0xMjIyLDYg
KzEyMjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNl
IFRvVGhpczoKICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZTogCisgICAgICAgIGNhc2UgVG9Qcm9w
ZXJ0eUtleToKICAgICAgICAgY2FzZSBOb3JtYWxpemVNYXBLZXk6CiAgICAgICAgIGNhc2UgQXRv
bWljc0FkZDoKICAgICAgICAgY2FzZSBBdG9taWNzQW5kOgpAQCAtMTQzMCw2ICsxNDM4LDE1IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0eXBlOwogICAgIH0KIAorICAgIFNwZWN1bGF0ZWRU
eXBlIHJlc3VsdE9mVG9Qcm9wZXJ0eUtleShTcGVjdWxhdGVkVHlwZSB0eXBlKQorICAgIHsKKyAg
ICAgICAgLy8gUHJvcGFnYXRlIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBzb3VyY2UgZGlyZWN0bHkg
aWYgYWxyZWFkeSBwcm92ZW4gdG8gYmUgYSBwcm9wZXJ0eSBrZXkuCisgICAgICAgIGlmICh0eXBl
ICYmICEodHlwZSAmIH4oU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpKSkKKyAgICAgICAgICAgIHJl
dHVybiB0eXBlOworCisgICAgICAgIHJldHVybiBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbDsKKyAg
ICB9CisKICAgICBWZWN0b3I8Tm9kZSo+IG1fZGVwZW5kZW50Tm9kZXM7CiAgICAgTm9kZSogbV9j
dXJyZW50Tm9kZTsKICAgICBib29sIG1fY2hhbmdlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGY5MWJhNDhmNTg4OWQ1NDNj
Zjk5YmZhYmY0N2QxYzAzMzhhNDllZmUuLjI3ZjI3ZGYzNDQ3NDMwNjNkNTdhMDZlMDg5OGRmZDE1
OGM4MDg2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0zNjAsNiArMzYwLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgY2FzZSBU
b1ByaW1pdGl2ZToKKyAgICBjYXNlIFRvUHJvcGVydHlLZXk6CiAgICAgY2FzZSBUb1N0cmluZzoK
ICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9OdW1lcmljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBlYmYzYjZiY2VmOGE1
MjdjOTNjOGZkMzhhM2RhMmJmNTFjNGU0ZWFiLi4wNTNjZTgzMTk4Yjg3YzdkZThjZTAzNTE0MmE4
MmI2ZGYwODYyMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcApAQCAtMTMwNTIsNiArMTMwNTIsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Byb3BlcnR5S2V5KE5vZGUqIG5v
ZGUpCit7CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKyAg
ICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNW
YWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBhcmd1bWVudCk7CisKKyAgICBK
U1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygpOworICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgYXJndW1lbnQudXNl
KCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50UmVncykpOworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcm9wZXJ0eUtleSA9IG1faml0LmJyYW5jaElmU3lt
Ym9sKGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RTdHJpbmcoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworCisgICAg
YWxyZWFkeVByb3BlcnR5S2V5LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3ZlVmFsdWVSZWdz
KGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5LCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CisKKyAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKU0NlbGwsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb051bWVyaWMoTm9kZSogbm9kZSkKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCmluZGV4IDIyMjMwMzQ0N2VjNDZkY2E2ZjA5YzQ3OTk4NzkzOWI3NjJjODMwYjIu
LjVmOGQyMTc0NjE5OGYzZDkzMzNiZjgzYzlmZTdhZWRiYjQwZjg0Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0ODgsNiArMTQ4OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlTmV3QXJyYXlJdGVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
VG9QcmltaXRpdmUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVRvUHJvcGVydHlLZXkoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZVRvTnVtZXJpYyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9n
U2hhZG93Q2hpY2tlblByb2xvZ3VlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dD
aGlja2VuVGFpbChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA5ZTY1MGM4MzIwNzFkZDcwZjI5OTRhYmM0
YTI4Yjg1MGFiZDVmZjQwLi4yM2I0ZGExNTI3OTYwNmVkMTI0YTk0NmY3ZWZjYzYzZTFhMWM3NTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKQEAgLTMwOTUsNiArMzA5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgVG9Q
cm9wZXJ0eUtleTogeworICAgICAgICBjb21waWxlVG9Qcm9wZXJ0eUtleShub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBUb051bWJlcjogewogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHRUYWcodGhpcywgUmV1c2UsIGFyZ3VtZW50LCBUYWdXb3JkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDQ0
NzM5MjU0MDQ3MjhkZmE2MzcxNTcxMTM5OTFiZmMxZjQzM2I3YzYuLmI0Y2I2Zjk5MTlkOTQyYzA1
MzhiNTJiMGMzOTMwZmY5MzUwMTg3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzQzMSw2ICszNDMxLDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBUb1Byb3BlcnR5S2V5OiB7CisgICAgICAgIGNvbXBpbGVUb1Byb3BlcnR5
S2V5KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFRvTnVtYmVyOiB7
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYXJndW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDRlN2Ez
YzE3NDliMGFlZTVhYTA2MjQxOGQ1MjljZjNjMzA3ZmE4NmQuLjMwYmM5OGQ5YjQ5NjdjNGJjOWM1
ZTFjNGM0YzQxZTA0ZTdhODU3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKQEAgLTIzMiw2ICsyMzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgVG9QcmltaXRpdmU6CisgICAgY2Fz
ZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBUaHJvd1N0YXRpY0Vy
cm9yOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNGYyY2M4Mjg4ZDkzMGUzZDVlYmNhODIwNTA3YzNh
M2RlOTdhMDYxZC4uYzQ4N2I5MzVkYmQ5OGQxMzVlYWQ0ZTI4ZmU2NWE0ZmZlNTc4ODRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTEz
OSw2ICsxMTM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZToKICAgICAg
ICAgICAgIGNvbXBpbGVUb1ByaW1pdGl2ZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVG9Qcm9wZXJ0eUtleToKKyAgICAgICAgICAgIGNvbXBpbGVUb1Byb3BlcnR5S2V5KCk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNYWtlUm9wZToKICAgICAgICAgICAg
IGNvbXBpbGVNYWtlUm9wZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MzM2LDYgKzczMzks
MzggQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCByZXN1bHRzKSk7CiAg
ICAgfQorCisgICAgdm9pZCBjb21waWxlVG9Qcm9wZXJ0eUtleSgpCisgICAgeworICAgICAgICBB
U1NFUlQobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOworCisgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMz4gcmVzdWx0czsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgaXNDZWxsKHZhbHVlLCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoc2xvd1Bh
dGhDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpc0NlbGxDYXNlLCBub3RTdHJpbmdDYXNlKTsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9v
dXQuYW5jaG9yKHZhbHVlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc1N0cmluZyh2YWx1ZSwg
cHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUobm90U3RyaW5nQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nh
c2UsIHNsb3dQYXRoQ2FzZSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcih2
YWx1ZSkpOworICAgICAgICBtX291dC5icmFuY2goaXNTeW1ib2wodmFsdWUsIHByb3ZlblR5cGUo
bV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRo
Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoQ2FzZSwgY29udGludWF0
aW9uKTsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAg
ICAgICAgIEludDY0LCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCB2YWx1ZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOworICAgIH0KICAgICAKICAgICB2
b2lkIGNvbXBpbGVNYWtlUm9wZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxYTBhNTI5NzNlOTIyY2RiMDM4OTkwY2Q4ZmJl
NTZkYmIyYWE0NmI0Li5kYTVmY2YyMzg2NmU0YmRmNjQ1YzcyMDcyNWNlYWQ3YjgxYWIwOWVhIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIwLTAxLTE2ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0pTQ10gYWRkIERGRy9GVEwgc3VwcG9ydCBmb3Igb3BfdG9fcHJvcGVy
dHlfa2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDYzNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LWNvbnN0LXN0cmluZy1mdGwuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LWNv
bnN0LXN5bWJvbC1mdGwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMt
dG8tcHJvcGVydHkta2V5LXNsb3ctb2JqZWN0LXRvc3RyaW5nLWZ0bC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktc2xvdy1vYmplY3QtdmFs
dWVvZi1mdGwuanM6IEFkZGVkLgorCiAyMDIwLTAxLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBvcGVyYXRpb25Ub09iamVjdCgpIHNob3VsZCBjaGVjayBmb3Ig
YSBudWxsIGVycm9yTWVzc2FnZS4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy10by1wcm9wZXJ0eS1rZXktY29uc3Qtc3RyaW5nLWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktY29uc3Qtc3RyaW5nLWZ0bC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNjRhZmYxZWZmNGExZDQzOGFkMDM1MzVhZWIyYjQ5NjhlNzAyMmNkCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1jb25z
dC1zdHJpbmctZnRsLmpzCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCBpZiBpc0ZUTEVuYWJsZWQgdGhlbiBydW5GVExOb0NK
SVQgZWxzZSBza2lwIGVuZAorCitsZXQgZnRsVHJ1ZSA9ICR2bS5mdGxUcnVlOworbGV0IGRpZEZU
TENvbXBpbGUgPSBmYWxzZTsKK2Z1bmN0aW9uIGNvbnN0Rm9sZFN0cmluZyhpKSB7CisgICAgY2xh
c3MgQyB7CisgICAgICAgIFsiZm9vIl0gPSBpOworICAgIH0KKyAgICBkaWRGVExDb21waWxlID0g
ZnRsVHJ1ZSgpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBpZiAoYy5mb28gIT09IGkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIG9uIGl0ZXJhdGlvbiAke2l9XG4ke0pTT04u
c3RyaW5naWZ5KGMpfWApOworfQorbm9JbmxpbmUoY29uc3RGb2xkU3RyaW5nKTsKKworbGV0IGkg
PSAwOworbGV0IG1heFRyaWVzID0gMTAwMDA7Citmb3IgKDsgaSA8IG1heFRyaWVzICYmICFudW1i
ZXJPZkRGR0NvbXBpbGVzKGNvbnN0Rm9sZFN0cmluZykgJiYgIWRpZEZUTENvbXBpbGU7ICsraSkg
eworICAgIG9wdGltaXplTmV4dEludm9jYXRpb24oY29uc3RGb2xkU3RyaW5nKTsKKyAgICBjb25z
dEZvbGRTdHJpbmcoaSk7Cit9CisKK2lmIChpID49IG1heFRyaWVzKQorICAgIHRocm93IG5ldyBF
cnJvcigiRmFpbGVkIHRvIGNvbXBpbGUgY29uc3RGb2xkU3RyaW5nIHdpdGggREZHIEpJVCIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1j
b25zdC1zeW1ib2wtZnRsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3Bl
cnR5LWtleS1jb25zdC1zeW1ib2wtZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMWIyZTRkYWM4NDMwMjFk
YTlhNjJjOWMwNGIyYTQ4MjNkNzFjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LWNvbnN0LXN5bWJvbC1mdGwuanMKQEAgLTAs
MCArMSwyNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQor
Ly9AIGlmIGlzRlRMRW5hYmxlZCB0aGVuIHJ1bkZUTE5vQ0pJVCBlbHNlIHNraXAgZW5kCisKK2xl
dCBmdGxUcnVlID0gJHZtLmZ0bFRydWU7CitsZXQgZGlkRlRMQ29tcGlsZSA9IGZhbHNlOworbGV0
IHN5bWJvbCA9IFN5bWJvbCgidGVzdCIpOworZnVuY3Rpb24gY29uc3RGb2xkU3ltYm9sKGkpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgW3N5bWJvbF0gPSBpOworICAgIH0KKyAgICBkaWRGVExD
b21waWxlID0gZnRsVHJ1ZSgpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBpZiAoY1tzeW1i
b2xdICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCBvbiBpdGVyYXRpb24g
JHtpfVxuJHtKU09OLnN0cmluZ2lmeShjKX1gKTsKK30KK25vSW5saW5lKGNvbnN0Rm9sZFN5bWJv
bCk7CisKK2xldCBpID0gMDsKK2xldCBtYXhUcmllcyA9IDEwMDAwOworZm9yICg7IGkgPCBtYXhU
cmllcyAmJiAhbnVtYmVyT2ZERkdDb21waWxlcyhjb25zdEZvbGRTeW1ib2wpICYmICFkaWRGVExD
b21waWxlOyArK2kpIHsKKyAgICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKGNvbnN0Rm9sZFN5bWJv
bCk7CisgICAgY29uc3RGb2xkU3ltYm9sKGkpOworfQorCitpZiAoaSA+PSBtYXhUcmllcykKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBjb21waWxlIHdpdGggREZHIEpJVCIpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zbG93
LW9iamVjdC10b3N0cmluZy1mdGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8t
cHJvcGVydHkta2V5LXNsb3ctb2JqZWN0LXRvc3RyaW5nLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWI3
Y2M0N2ZkYmQ4M2JjNGMyMzViMjkyMDYyMWQ0NTg0YzBkMTZmCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zbG93LW9iamVjdC10
b3N0cmluZy1mdGwuanMKQEAgLTAsMCArMSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZUNsYXNzRmllbGRzPXRydWUiKQorLy9AIGlmIGlzRlRMRW5hYmxlZCB0aGVuIHJ1bkZUTE5vQ0pJ
VCBlbHNlIHNraXAgZW5kCisKK2xldCBmdGxUcnVlID0gJHZtLmZ0bFRydWU7CitsZXQgZGlkRlRM
Q29tcGlsZSA9IGZhbHNlOworZnVuY3Rpb24gc2xvd09iamVjdFZhbHVlT2YoaSkgeworICAgIGxl
dCBnZXRUb1N0cmluZ0NhbGxlZCA9IGZhbHNlOworICAgIGxldCB2YWx1ZU9mQ2FsbGVkID0gZmFs
c2U7CisgICAgbGV0IHNsb3dPYmplY3QgPSB7CisgICAgICAgIGdldCB0b1N0cmluZygpIHsgZ2V0
VG9TdHJpbmdDYWxsZWQgPSB0cnVlOyB9LAorICAgICAgICB2YWx1ZU9mKCkgeyB2YWx1ZU9mQ2Fs
bGVkID0gdHJ1ZTsgcmV0dXJuICJ0ZXN0IjsgfQorICAgIH07CisKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgW3Nsb3dPYmplY3RdID0gaTsKKyAgICB9CisgICAgZGlkRlRMQ29tcGlsZSA9IGZ0bFRy
dWUoKTsKKyAgICBpZiAoIWdldFRvU3RyaW5nQ2FsbGVkIHx8ICF2YWx1ZU9mQ2FsbGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCBvbiBpdGVyYXRpb24gJHtpfSAoZ2V0VG9TdHJp
bmdDYWxsZWQgPT09ICR7Z2V0VG9TdHJpbmdDYWxsZWR9LCB2YWx1ZU9mQ2FsbGVkID09ICR7dmFs
dWVPZkNhbGxlZH0pYCk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGlmIChjLnRlc3QgIT09
IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIG9uIGl0ZXJhdGlvbiAke2l9XG4k
e0pTT04uc3RyaW5naWZ5KGMpfWApOworfQorCitsZXQgaSA9IDA7CitsZXQgbWF4VHJpZXMgPSAx
MDAwMDsKK2ZvciAoaSA9IDA7IGkgPCBtYXhUcmllcyAmJiAhbnVtYmVyT2ZERkdDb21waWxlcyhz
bG93T2JqZWN0VmFsdWVPZikgJiYgIWRpZEZUTENvbXBpbGU7ICsraSkgeworICAgIG9wdGltaXpl
TmV4dEludm9jYXRpb24oc2xvd09iamVjdFZhbHVlT2YpOworICAgIHNsb3dPYmplY3RWYWx1ZU9m
KGkpOworfQorCitpZiAoaSA+PSBtYXhUcmllcykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxl
ZCB0byBjb21waWxlIHNsb3dPYmplY3RWYWx1ZU9mIHdpdGggREZHIEpJVCIpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zbG93LW9iamVj
dC12YWx1ZW9mLWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0
eS1rZXktc2xvdy1vYmplY3QtdmFsdWVvZi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE2OGI1MjAxYWM1
Y2Y1NzcyYWQ1NTE5ODlhM2MwYjY0NWFmNzBiOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktc2xvdy1vYmplY3QtdmFsdWVvZi1m
dGwuanMKQEAgLTAsMCArMSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmll
bGRzPXRydWUiKQorLy9AIGlmIGlzRlRMRW5hYmxlZCB0aGVuIHJ1bkZUTE5vQ0pJVCBlbHNlIHNr
aXAgZW5kCisKK2xldCBmdGxUcnVlID0gJHZtLmZ0bFRydWU7CitsZXQgZGlkRlRMQ29tcGlsZSA9
IGZhbHNlOworZnVuY3Rpb24gc2xvd09iamVjdFZhbHVlT2YoaSkgeworICAgIGxldCBnZXRUb1N0
cmluZ0NhbGxlZCA9IGZhbHNlOworICAgIGxldCB2YWx1ZU9mQ2FsbGVkID0gZmFsc2U7CisgICAg
bGV0IHNsb3dPYmplY3QgPSB7CisgICAgICAgIGdldCB0b1N0cmluZygpIHsgZ2V0VG9TdHJpbmdD
YWxsZWQgPSB0cnVlOyB9LAorICAgICAgICB2YWx1ZU9mKCkgeyB2YWx1ZU9mQ2FsbGVkID0gdHJ1
ZTsgcmV0dXJuICJ0ZXN0IjsgfQorICAgIH07CisKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgW3Ns
b3dPYmplY3RdID0gaTsKKyAgICB9CisgICAgZGlkRlRMQ29tcGlsZSA9IGZ0bFRydWUoKTsKKyAg
ICBpZiAoIWdldFRvU3RyaW5nQ2FsbGVkIHx8ICF2YWx1ZU9mQ2FsbGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEZhaWxlZCBvbiBpdGVyYXRpb24gJHtpfSAoZ2V0VG9TdHJpbmdDYWxsZWQg
PT09ICR7Z2V0VG9TdHJpbmdDYWxsZWR9LCB2YWx1ZU9mQ2FsbGVkID09ICR7dmFsdWVPZkNhbGxl
ZH0pYCk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGlmIChjLnRlc3QgIT09IGkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIG9uIGl0ZXJhdGlvbiAke2l9XG4ke0pTT04uc3Ry
aW5naWZ5KGMpfWApOworfQorCitsZXQgaSA9IDA7CitsZXQgbWF4VHJpZXMgPSAxMDAwMDsKK2Zv
ciAoaSA9IDA7IGkgPCAhbWF4VHJpZXMgJiYgIW51bWJlck9mREZHQ29tcGlsZXMoc2xvd09iamVj
dFZhbHVlT2YpICYmICFkaWRGVExDb21waWxlOyArK2kpIHsKKyAgICBvcHRpbWl6ZU5leHRJbnZv
Y2F0aW9uKHNsb3dPYmplY3RWYWx1ZU9mKTsKKyAgICBzbG93T2JqZWN0VmFsdWVPZihpKTsKK30K
KworaWYgKGkgPj0gbWF4VHJpZXMpCisgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29t
cGlsZSBzbG93T2JqZWN0VmFsdWVPZiB3aXRoIERGRyBKSVQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388049</attachid>
            <date>2020-01-17 09:37:08 -0800</date>
            <delta_ts>2020-01-17 15:59:43 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-206368-20200117123708.patch</filename>
            <type>text/plain</type>
            <size>28425</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NjIwYzE5YjMzZjBkZGE4YWIwNDNjMjdlYzYxZGU0MTQwYzVhNTExLi4yOWM4OWU1NWMxZDdkZTY0
NmQ3MWI4ZjI1Nzc1MGNlMDcyZmI2ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMC0wMS0xNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX3RvX3Byb3BlcnR5
X2tleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2
MzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuIAorCisgICAgICAgIEltcGxl
bWVudCBERkcvRlRMIHN1cHBvcnQgZm9yIHRoZSBvcF90b19wcm9wZXJ0eV9rZXkgb3Bjb2RlLiBU
aGlzIG9wZXJhdGVzCisgICAgICAgIHNpbWlsYXIgdG8gdGhlIExMSW50IGFuZCBiYXNlIEpJVCBp
bXBsZW1lbnRhdGlvbnMsIGluIHdoaWNoIHdlIGF2b2lkIGludm9raW5nCisgICAgICAgIHRoZSBm
dWxsIFRvUHJvcGVydHlLZXkgb3BlcmF0aW9uIGlmIHRoZSBzb3VyY2Ugb3BlcmFuZCBpcyBhbHJl
YWR5IGEgU3RyaW5nIG9yCisgICAgICAgIFN5bWJvbCBhdCBydW50aW1lLgorCisgICAgICAgIElm
IERGRy9GVEwgYXJlIGNvbmZpZGVudCB0aGUgdmFsdWUgd2lsbCBiZSBhIFN0cmluZyBvciBTeW1i
b2wgYXQgY29tcGlsZSB0aW1lLAorICAgICAgICB0aGUgb3BlcmF0aW9uIGlzIG9taXR0ZWQgZW50
aXJlbHkgaW4gdGhlIGZpbmFsIGdyYXBoLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRp
bmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1RvU3Ry
aW5nKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJvcGVydHlLZXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5v
ZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9Qcm9w
ZXJ0eUtleSk6CisKIDIwMjAtMDEtMTcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgogCiAgICAgICAgIEJ5dGVjb2RlIGNoZWNrcG9pbnRzIGJyZWFrIDMyYml0IHRlc3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKaW5kZXggZTUyODRhZDg1ZDFkNmY1NGY0Y2EzMmQ0OThmNzkzYWZhY2I1ZmJj
YS4uN2JlN2UyY2EyZmNmMjA3MTEwMDJhMTUyZjFlZmFjMGEyOWVkOTVlMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaApAQCAtMjUzMSw2ICsyNTMxLDIwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgVG9Qcm9wZXJ0eUtleTogeworICAgICAg
ICBpZiAoIShmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNTdHJpbmcgfCBT
cGVjU3ltYm9sKSkpIHsKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRG
b2xkaW5nKHRydWUpOworICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAg
ICAgICAgc2V0Rm9yTm9kZShub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworCisgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBUb051bWJlcjogewogICAgICAgICBKU1ZhbHVl
IGNoaWxkQ29uc3QgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGRDb25zdCAmJiBjaGlsZENvbnN0LmlzTnVtYmVyKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYmMwMWNmYjE3Njcw
ODc5NzE5Njk1ODc0Njc0YWI0ZjMwYjcxOTA1Yy4uZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRl
ZjgxYmM5ZDJmMWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTU2MDMsNyArNTYwMywxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBhZGRUb0dyYXBoKFRvUHJpbWl0aXZlLCB2YWx1ZSkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfdG9fcHJpbWl0aXZlKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAg
ICAgY2FzZSBvcF90b19wcm9wZXJ0eV9rZXk6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9Qcm9wZXJ0eUtleT4oKTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fc3JjKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChUb1Byb3BlcnR5S2V5LCB2YWx1ZSkpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfdG9fcHJvcGVydHlfa2V5KTsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2Ugb3Bfc3RyY2F0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFN0cmNhdD4oKTsKICAgICAgICAgICAgIGludCBzdGFydE9wZXJhbmQg
PSBieXRlY29kZS5tX3NyYy5vZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjZTVmNmFhYTY4ODI3M2Q5YmU3MGVkNDhhYjE5ZjU2
MjYxY2RmYWM0Li43NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4OGY4ZTFjMmEwYjY3MGJmOTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yODIs
NiArMjgyLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNv
ZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX25ld19yZWdl
eHA6CiAgICAgY2FzZSBvcF9nZXRfaW50ZXJuYWxfZmllbGQ6CiAgICAgY2FzZSBvcF9wdXRfaW50
ZXJuYWxfZmllbGQ6CisgICAgY2FzZSBvcF90b19wcm9wZXJ0eV9rZXk6CiAgICAgY2FzZSBvcF91
bnJlYWNoYWJsZToKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW46CiAgICAgY2FzZSBv
cF9zdXBlcl9zYW1wbGVyX2VuZDoKQEAgLTI5Myw3ICsyOTQsNiBAQCBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSQogCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0
b3JfZnJhbWVfZW52aXJvbm1lbnQ6Ci0gICAgY2FzZSBvcF90b19wcm9wZXJ0eV9rZXk6IC8vIEZJ
WE1FOiBvcF90b19wcm9wZXJ0eV9rZXkgd2lsbCBuZWVkIERGRy9GVEwgc3VwcG9ydCB0byBzaGlw
IGNsYXNzIGZpZWxkcy4KICAgICBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAgY2Fz
ZSBsbGludF9ldmFsX3Byb2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJv
bG9ndWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGVl
ZTliYWVjZDI4OWQ4ZjI4NzM3MjQ1MTA3MGM0ZmIyYTI4ZTgzZGMuLjgxYjAwMTRlNmIxYTUzYjFi
NDdhNTk1MWQyOWE3ZTZjMDY5OTQ3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC02NDksNiArNjQ5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFy
YXJnczoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgorICAgIGNhc2UgVG9Qcm9wZXJ0eUtleToKICAg
ICBjYXNlIEluQnlWYWw6CiAgICAgY2FzZSBJbkJ5SWQ6CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0
eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKaW5kZXggY2ViYjNjOGU5Y2I4YWRmZDg5YTZjZDZjMmM1MzRiMDAxODJiM2Uw
ZS4uZDhhZjAzNTI3Nzk1NWI3YjdiZjk3YmNmMTY1MzgzMDI2N2JiNGY0NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
QEAgLTcxNyw2ICs3MTcsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBUb1Byb3BlcnR5S2V5OiB7CisgICAgICAg
ICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihT
cGVjU3RyaW5nIHwgU3BlY1N5bWJvbCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgICAgICAgICBUb1RoaXNSZXN1
bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbV9ncmFwaC5pc1N0
cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNSZXN1bHQ6
OklkZW50aXR5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
MWYzMGRmZjYxNzljMGMzM2VlZjUxOTMyMjI3Yzc1OTY2NzVhYmZhZC4uNmVlNzI1YTBhMzg2MjIy
MTRjOTliZjEyMmI1Yzk0ZWIzNjQ4NGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFRvTnVtZXJpYzoKICAgICBjYXNlIFRvT2JqZWN0OgogICAg
IGNhc2UgVG9QcmltaXRpdmU6CisgICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2UgVG9U
aGlzOgogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIENyZWF0ZVRoaXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA5MjJkMzViYmZhZjBi
YjFkZDkwYjA5MDNhNWYyY2RlNDlhYjg2YmIyLi4yMGI1N2Y3MWUxZmIxYTIxYjk3ODYwN2ZlNjVj
YzY4NmZhYTVkNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTEzOTEsNiArMTM5MSwyOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFRvUHJvcGVydHlLZXk6IHsKKyAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZVN5bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdPYmplY3QoKQorICAgICAg
ICAgICAgICAgICYmIG1fZ3JhcGguY2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+
b3JpZ2luLnNlbWFudGljKSkgeworICAgICAgICAgICAgICAgIGFkZENoZWNrU3RydWN0dXJlRm9y
T3JpZ2luYWxTdHJpbmdPYmplY3RVc2UoU3RyaW5nT2JqZWN0VXNlLCBub2RlLT5vcmlnaW4sIG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdPYmpl
Y3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9U
b1N0cmluZygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBUb051bWJlcjogewogICAg
ICAgICAgICAgZml4dXBUb051bWJlcihub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA1MTdhZjEwMDNhZmNlNmQzNWY3MTQ1ZGJiNjk1
MWYxOGNjMjIzYjY4Li4zNDRhMmFiNTliMmNhMTFjNmIyNzk1ZWQ1MzY5ZWM5NWM3ZjBlMmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNzExLDcgKzcxMSw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb1RvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX29wID09IFRvUHJpbWl0aXZlIHx8IG1fb3AgPT0gU3RyaW5nVmFsdWVPZik7CisgICAg
ICAgIEFTU0VSVChtX29wID09IFRvUHJpbWl0aXZlIHx8IG1fb3AgPT0gU3RyaW5nVmFsdWVPZiB8
fCBtX29wID09IFRvUHJvcGVydHlLZXkpOwogICAgICAgICBtX29wID0gVG9TdHJpbmc7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggN2M2ZDFiMmFm
YzVhZmY0NzQ3NjgxMDNhNWUxM2QzYTIyMjZjYTZmYy4uNTQ3ZmU0ZDk1NTM5NDIxN2Q2YTFkN2Jj
ODZmMTY4YjIwYzZkNTU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aApAQCAtNDAyLDYgKzQwMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhUeXBlT2YsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKExvZ2ljYWxOb3QsIE5v
ZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVG9QcmltaXRpdmUsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhUb1Byb3BlcnR5S2V5LCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVG9TdHJpbmcsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUb051bWJlciwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRvTnVtZXJpYywgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKaW5kZXggZjdhYzdjZThjNzQ3OTExNzAwZGY1ODUxOTU2NDVkMzQxMWViZjNi
Mi4uMmZkYjljOWQ3NjdlNjg3MmZkY2FkNjg3M2RlZjhlOTQ4MWVmODFkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNjQ5LDYgKzE2NDksMTUg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpKTsKIH0KIAorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvUHJvcGVydHlLZXlWYWx1ZShnbG9iYWxPYmplY3QpKTsK
K30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWJlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oCmluZGV4IGEzM2VkZTliNTExMjBlOTE1ZDZhYmU4ZTE3OWI2OTE3YWY1OGQ3
YWMuLjBmMWM4NzU0Y2Q2OWY3NzhlOTY3ODMwZjIxNjdhOWE0YzhkMjk2MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC05MSw2ICs5MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU1N0cmluCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5VmFsT2JqZWN0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgSlNDZWxsKiBz
dHJpbmcpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlWYWxPYmplY3RTeW1ib2woSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU0NlbGwq
IHN5bWJvbCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvUHJvcGVydHlL
ZXkoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWJlcihKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsV2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmlu
ZGV4IGY5MmFlOWRiMGJkN2QzODFlMGViNWZhMjc2MDc2ZDFhNDE5ZDAzNjQuLjliOGQ2MGQyNzUz
OTM0ZjUwNGY3NjQyNDBhYjE0ZWE3M2I0ZjAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC01NzUsNiArNTc1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgVG9Qcm9wZXJ0eUtleTogeworICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgY2hpbGQgPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAg
aWYgKGNoaWxkKQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHJl
c3VsdE9mVG9Qcm9wZXJ0eUtleShjaGlsZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIE5vcm1hbGl6ZU1hcEtleTogewogICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAg
ICAgICAgICBpZiAocHJlZGljdGlvbikKQEAgLTEyMjIsNiArMTIyOSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAgICBjYXNl
IFRvUHJpbWl0aXZlOiAKKyAgICAgICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgICAgICBjYXNl
IE5vcm1hbGl6ZU1hcEtleToKICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBjYXNl
IEF0b21pY3NBbmQ6CkBAIC0xNDMxLDYgKzE0MzksMTggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIHR5cGU7CiAgICAgfQogCisgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0T2ZUb1Byb3BlcnR5
S2V5KFNwZWN1bGF0ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICAvLyBQcm9wYWdhdGUgdGhl
IHByZWRpY3Rpb24gb2YgdGhlIHNvdXJjZSBkaXJlY3RseSBpZiBhbHJlYWR5IHByb3ZlbiB0byBi
ZSBhIHByb3BlcnR5IGtleS4KKyAgICAgICAgaWYgKHR5cGUgJiYgISh0eXBlICYgfihTcGVjU3Ry
aW5nIHwgU3BlY1N5bWJvbCkpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisKKyAgICAgICAg
aWYgKHR5cGUgJiBTcGVjU3RyaW5nT2JqZWN0ICYmIG1fZ3JhcGguY2FuT3B0aW1pemVTdHJpbmdP
YmplY3RBY2Nlc3MobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgICAg
IHJldHVybiBtZXJnZVNwZWN1bGF0aW9ucyh0eXBlICYgU3BlY1N5bWJvbCwgU3BlY1N0cmluZyk7
CisKKyAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sOworICAgIH0KKwogICAg
IFZlY3RvcjxOb2RlKj4gbV9kZXBlbmRlbnROb2RlczsKICAgICBOb2RlKiBtX2N1cnJlbnROb2Rl
OwogICAgIGJvb2wgbV9jaGFuZ2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjAzMzg3YjY2NTY0ODZjMDY1Mzk5ZTFlMWNk
YmUwYjljMzU1ZTZlYS4uZWNkZDk5M2MzZDRmZTk1N2QxZjBmODhhODA0NzNmYWMzNDE1NjNkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM2
MSw2ICszNjEsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRl
LCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgTG9naWNhbE5v
dDoKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIFRvUHJpbWl0aXZl
OgorICAgIGNhc2UgVG9Qcm9wZXJ0eUtleToKICAgICBjYXNlIFRvU3RyaW5nOgogICAgIGNhc2Ug
VG9OdW1iZXI6CiAgICAgY2FzZSBUb051bWVyaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDY4ZjUyM2ZlOTg1N2JkZmY5YTQ5OTJm
YWQ0OWY0MDU0ZDZlZmZlNTMuLjEzZjI4Y2U4MjY1NjY0MTlhZWM5OTllMjI3NjIxNWI1ZDQzNmY2
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0xMzA1Myw2ICsxMzA1MywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VG9QcmltaXRpdmUoTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJvcGVydHlLZXkoTm9kZSogbm9kZSkKK3sKKyAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworICAgIEpTVmFsdWVP
cGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGFyZ3VtZW50KTsKKworICAgIEpTVmFsdWVSZWdz
IGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBhcmd1bWVudC51c2UoKTsKKworICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJndW1lbnRSZWdzKSk7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYWxyZWFkeVByb3BlcnR5S2V5ID0gbV9qaXQuYnJhbmNoSWZTeW1ib2woYXJndW1l
bnRSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdFN0cmluZyhhcmd1bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7CisKKyAgICBhbHJlYWR5UHJv
cGVydHlLZXkubGluaygmbV9qaXQpOworICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJndW1lbnRS
ZWdzLCByZXN1bHRSZWdzKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvUHJvcGVydHlLZXksIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKworICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTQ2VsbCwgVXNlQ2hpbGRyZW5DYWxs
ZWRFeHBsaWNpdGx5KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTnVtZXJp
YyhOb2RlKiBub2RlKQogewogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggOGY5NjE4MjFmNWFkNDgyMWIwMzQzNjlhZjJkZjE3MWFjZjJmZTFmNC4uYjFmYjBlOGM5
N2E3NTllYmQyOWY0N2IxM2FhMWM0NzhiMjAxM2VjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTQ2NCw2ICsxNDY0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdBcnJheUl0ZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1ByaW1pdGl2
ZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlVG9Qcm9wZXJ0eUtleShOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlVG9OdW1lcmljKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlj
a2VuUHJvbG9ndWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWls
KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IGQ0NWVkYzE2YzAyZTI4YmQ5MzUxNWVhZGYzZTMzMzM1NDll
ZmI0NTguLmZhMDY2YmZlMTJmOWI2MWRjY2UwYzc1ZDYwN2JlM2RlYTViOTE1ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMzA5NSw2ICszMDk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBUb1Byb3BlcnR5S2V5
OiB7CisgICAgICAgIGNvbXBpbGVUb1Byb3BlcnR5S2V5KG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIFRvTnVtYmVyOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFy
Z3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFRhZyh0aGlzLCBSZXVzZSwgYXJndW1lbnQsIFRhZ1dvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWM3ZjMzN2NiOWUw
MDAyYTBkMGI5M2RjZGEzYWMzNzRkODE2OWQxMC4uODA0MzY5ZDk2NmFmYjI2ZTIyMDZlNWExMmEy
NWVlMmU5MjA1NDdkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNDMxLDYgKzM0MzEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIFRvUHJvcGVydHlLZXk6IHsKKyAgICAgICAgY29tcGlsZVRvUHJvcGVydHlLZXkobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgVG9OdW1iZXI6IHsKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBhcmd1bWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYjk1M2NmZWM3MTVjNmFh
ZGQyYjYyMTM4MWRhMTVhYTExYzJmY2M1MC4uZWJhMTk3ZjM5MGQxODM2MWM0MDUwM2U5MjE2ODM2
YTczMmEwM2E3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMjMzLDYgKzIzMyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11
bHRpUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBUb1ByaW1pdGl2ZToKKyAgICBjYXNlIFRvUHJvcGVy
dHlLZXk6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIFRocm93U3RhdGljRXJyb3I6CiAgICAg
Y2FzZSBVbnJlYWNoYWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCA1ODM5MGQzNjk4MjExZjMyNGNiZDJjOTQyYmQwYjFiMjAwNjI2M2Ez
Li4wYzU4NTcyOTk1M2ZlOGQ1NmEwYTUwMmQ5ZDJjNjQ3ZTE3NGI5N2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMTM5LDYgKzExMzks
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRvUHJpbWl0aXZlOgogICAgICAgICAgICAgY29t
cGlsZVRvUHJpbWl0aXZlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUb1By
b3BlcnR5S2V5OgorICAgICAgICAgICAgY29tcGlsZVRvUHJvcGVydHlLZXkoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1ha2VSb3BlOgogICAgICAgICAgICAgY29tcGlsZU1h
a2VSb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTczMzksNiArNzM0MiwzOCBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9CisKKyAg
ICB2b2lkIGNvbXBpbGVUb1Byb3BlcnR5S2V5KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisKKyAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCAzPiByZXN1bHRzOworICAgICAgICBt
X291dC5icmFuY2goCisgICAgICAgICAgICBpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2Rl
LT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShzbG93UGF0aENhc2UpKTsK
KworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENh
c2UsIG5vdFN0cmluZ0Nhc2UpOworICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Io
dmFsdWUpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nKHZhbHVlLCBwcm92ZW5UeXBl
KG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJp
bmdDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nQ2FzZSwgc2xvd1Bh
dGhDYXNlKTsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZhbHVlKSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc1N5bWJvbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNo
aWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGhDYXNlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGhDYXNlLCBjb250aW51YXRpb24pOworICAg
ICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgSW50
NjQsIG9wZXJhdGlvblRvUHJvcGVydHlLZXksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZh
bHVlKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKEludDY0LCByZXN1bHRzKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZU1ha2VSb3BlKCkKICAgICB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDgwODBmYjc3YThiYzljOGRjYWQ5MTRlZTQ0ZjE3Zjk2ZGE5MWQ0
ZjQuLmE5YTZkZDY4Y2JlOGZjZmNhZWVlZWFjODBlNWQzZjFjNGIzYTNjM2EgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMjAtMDEtMTcgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBhZGQgREZHL0ZUTCBzdXBwb3J0IGZvciBvcF90b19wcm9wZXJ0eV9rZXkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM2OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogc3RyZXNzL2NsYXNz
LWZpZWxkcy10by1wcm9wZXJ0eS1rZXktY29uc3Qtc3RyaW5nLWZ0bC5qczogQWRkZWQuCisgICAg
ICAgIChjb25zdEZvbGRTdHJpbmcuQyk6CisgICAgICAgIChjb25zdEZvbGRTdHJpbmcpOgorICAg
ICAgICAoaS5tYXhUcmllcy5udW1iZXJPZkRGR0NvbXBpbGVzKToKKyAgICAgICAgKiBzdHJlc3Mv
Y2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1jb25zdC1zeW1ib2wtZnRsLmpzOiBBZGRlZC4K
KyAgICAgICAgKGNvbnN0Rm9sZFN5bWJvbC5DKToKKyAgICAgICAgKGNvbnN0Rm9sZFN5bWJvbCk6
CisgICAgICAgIChpLm1heFRyaWVzLm51bWJlck9mREZHQ29tcGlsZXMpOgorICAgICAgICAqIHN0
cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LXNsb3ctb2JqZWN0LXRvc3RyaW5nLWZ0
bC5qczogQWRkZWQuCisgICAgICAgIChzbG93T2JqZWN0VmFsdWVPZi5sZXQuc2xvd09iamVjdC5n
ZXQgdG9TdHJpbmcpOgorICAgICAgICAoc2xvd09iamVjdFZhbHVlT2YuQyk6CisgICAgICAgIChz
bG93T2JqZWN0VmFsdWVPZik6CisgICAgICAgIChpLm1heFRyaWVzLm51bWJlck9mREZHQ29tcGls
ZXMpOgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LXNsb3ct
b2JqZWN0LXZhbHVlb2YtZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKHNsb3dPYmplY3RWYWx1ZU9m
LmxldC5zbG93T2JqZWN0LmdldCB0b1N0cmluZyk6CisgICAgICAgIChzbG93T2JqZWN0VmFsdWVP
Zi5DKToKKyAgICAgICAgKHNsb3dPYmplY3RWYWx1ZU9mKToKKyAgICAgICAgKGkubWF4VHJpZXMu
bnVtYmVyT2ZERkdDb21waWxlcyk6CisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy10by1w
cm9wZXJ0eS1rZXktc3RyaW5nLW9iamVjdC1mdGwuanM6IEFkZGVkLgorICAgICAgICAoc3RyaW5n
T2JqZWN0VG9TdHJpbmcuQyk6CisgICAgICAgIChzdHJpbmdPYmplY3RUb1N0cmluZyk6CisgICAg
ICAgIChpLm1heFRyaWVzLm51bWJlck9mREZHQ29tcGlsZXMpOgorCiAyMDIwLTAxLTE2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgW0VTTmV4dF0gRW5h
YmxlcyBhIHdheSB0byB0aHJvdyBhbiBlcnJvciBvbiBCeXRlQ29kZUdlbmVyYXRvciBzdGVwCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LWNv
bnN0LXN0cmluZy1mdGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVy
dHkta2V5LWNvbnN0LXN0cmluZy1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY0YWZmMWVmZjRhMWQ0Mzhh
ZDAzNTM1YWViMmI0OTY4ZTcwMjJjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktY29uc3Qtc3RyaW5nLWZ0bC5qcwpAQCAtMCww
ICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisv
L0AgaWYgaXNGVExFbmFibGVkIHRoZW4gcnVuRlRMTm9DSklUIGVsc2Ugc2tpcCBlbmQKKworbGV0
IGZ0bFRydWUgPSAkdm0uZnRsVHJ1ZTsKK2xldCBkaWRGVExDb21waWxlID0gZmFsc2U7CitmdW5j
dGlvbiBjb25zdEZvbGRTdHJpbmcoaSkgeworICAgIGNsYXNzIEMgeworICAgICAgICBbImZvbyJd
ID0gaTsKKyAgICB9CisgICAgZGlkRlRMQ29tcGlsZSA9IGZ0bFRydWUoKTsKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgaWYgKGMuZm9vICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEZhaWxlZCBvbiBpdGVyYXRpb24gJHtpfVxuJHtKU09OLnN0cmluZ2lmeShjKX1gKTsKK30KK25v
SW5saW5lKGNvbnN0Rm9sZFN0cmluZyk7CisKK2xldCBpID0gMDsKK2xldCBtYXhUcmllcyA9IDEw
MDAwOworZm9yICg7IGkgPCBtYXhUcmllcyAmJiAhbnVtYmVyT2ZERkdDb21waWxlcyhjb25zdEZv
bGRTdHJpbmcpICYmICFkaWRGVExDb21waWxlOyArK2kpIHsKKyAgICBvcHRpbWl6ZU5leHRJbnZv
Y2F0aW9uKGNvbnN0Rm9sZFN0cmluZyk7CisgICAgY29uc3RGb2xkU3RyaW5nKGkpOworfQorCitp
ZiAoaSA+PSBtYXhUcmllcykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBjb21waWxl
IGNvbnN0Rm9sZFN0cmluZyB3aXRoIERGRyBKSVQiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktY29uc3Qtc3ltYm9sLWZ0bC5qcyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktY29uc3Qtc3ltYm9sLWZ0
bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZTFiMmU0ZGFjODQzMDIxZGE5YTYyYzljMDRiMmE0ODIzZDcxY2Y4
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3Bl
cnR5LWtleS1jb25zdC1zeW1ib2wtZnRsLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCBpZiBpc0ZUTEVuYWJsZWQgdGhl
biBydW5GVExOb0NKSVQgZWxzZSBza2lwIGVuZAorCitsZXQgZnRsVHJ1ZSA9ICR2bS5mdGxUcnVl
OworbGV0IGRpZEZUTENvbXBpbGUgPSBmYWxzZTsKK2xldCBzeW1ib2wgPSBTeW1ib2woInRlc3Qi
KTsKK2Z1bmN0aW9uIGNvbnN0Rm9sZFN5bWJvbChpKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
IFtzeW1ib2xdID0gaTsKKyAgICB9CisgICAgZGlkRlRMQ29tcGlsZSA9IGZ0bFRydWUoKTsKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgaWYgKGNbc3ltYm9sXSAhPT0gaSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBGYWlsZWQgb24gaXRlcmF0aW9uICR7aX1cbiR7SlNPTi5zdHJpbmdpZnko
Yyl9YCk7Cit9Citub0lubGluZShjb25zdEZvbGRTeW1ib2wpOworCitsZXQgaSA9IDA7CitsZXQg
bWF4VHJpZXMgPSAxMDAwMDsKK2ZvciAoOyBpIDwgbWF4VHJpZXMgJiYgIW51bWJlck9mREZHQ29t
cGlsZXMoY29uc3RGb2xkU3ltYm9sKSAmJiAhZGlkRlRMQ29tcGlsZTsgKytpKSB7CisgICAgb3B0
aW1pemVOZXh0SW52b2NhdGlvbihjb25zdEZvbGRTeW1ib2wpOworICAgIGNvbnN0Rm9sZFN5bWJv
bChpKTsKK30KKworaWYgKGkgPj0gbWF4VHJpZXMpCisgICAgdGhyb3cgbmV3IEVycm9yKCJGYWls
ZWQgdG8gY29tcGlsZSB3aXRoIERGRyBKSVQiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktc2xvdy1vYmplY3QtdG9zdHJpbmctZnRsLmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zbG93LW9iamVj
dC10b3N0cmluZy1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDliN2NjNDdmZGJkODNiYzRjMjM1YjI5MjA2
MjFkNDU4NGMwZDE2ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy10by1wcm9wZXJ0eS1rZXktc2xvdy1vYmplY3QtdG9zdHJpbmctZnRsLmpzCkBAIC0wLDAg
KzEsMzMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKy8v
QCBpZiBpc0ZUTEVuYWJsZWQgdGhlbiBydW5GVExOb0NKSVQgZWxzZSBza2lwIGVuZAorCitsZXQg
ZnRsVHJ1ZSA9ICR2bS5mdGxUcnVlOworbGV0IGRpZEZUTENvbXBpbGUgPSBmYWxzZTsKK2Z1bmN0
aW9uIHNsb3dPYmplY3RWYWx1ZU9mKGkpIHsKKyAgICBsZXQgZ2V0VG9TdHJpbmdDYWxsZWQgPSBm
YWxzZTsKKyAgICBsZXQgdmFsdWVPZkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBzbG93T2JqZWN0
ID0geworICAgICAgICBnZXQgdG9TdHJpbmcoKSB7IGdldFRvU3RyaW5nQ2FsbGVkID0gdHJ1ZTsg
fSwKKyAgICAgICAgdmFsdWVPZigpIHsgdmFsdWVPZkNhbGxlZCA9IHRydWU7IHJldHVybiAidGVz
dCI7IH0KKyAgICB9OworCisgICAgY2xhc3MgQyB7CisgICAgICAgIFtzbG93T2JqZWN0XSA9IGk7
CisgICAgfQorICAgIGRpZEZUTENvbXBpbGUgPSBmdGxUcnVlKCk7CisgICAgaWYgKCFnZXRUb1N0
cmluZ0NhbGxlZCB8fCAhdmFsdWVPZkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBG
YWlsZWQgb24gaXRlcmF0aW9uICR7aX0gKGdldFRvU3RyaW5nQ2FsbGVkID09PSAke2dldFRvU3Ry
aW5nQ2FsbGVkfSwgdmFsdWVPZkNhbGxlZCA9PSAke3ZhbHVlT2ZDYWxsZWR9KWApOworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBpZiAoYy50ZXN0ICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYEZhaWxlZCBvbiBpdGVyYXRpb24gJHtpfVxuJHtKU09OLnN0cmluZ2lmeShjKX1gKTsK
K30KKworbGV0IGkgPSAwOworbGV0IG1heFRyaWVzID0gMTAwMDA7Citmb3IgKGkgPSAwOyBpIDwg
bWF4VHJpZXMgJiYgIW51bWJlck9mREZHQ29tcGlsZXMoc2xvd09iamVjdFZhbHVlT2YpICYmICFk
aWRGVExDb21waWxlOyArK2kpIHsKKyAgICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHNsb3dPYmpl
Y3RWYWx1ZU9mKTsKKyAgICBzbG93T2JqZWN0VmFsdWVPZihpKTsKK30KKworaWYgKGkgPj0gbWF4
VHJpZXMpCisgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29tcGlsZSBzbG93T2JqZWN0
VmFsdWVPZiB3aXRoIERGRyBKSVQiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy10by1wcm9wZXJ0eS1rZXktc2xvdy1vYmplY3QtdmFsdWVvZi1mdGwuanMgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LXNsb3ctb2JqZWN0LXZhbHVl
b2YtZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNjhiNTIwMWFjNWNmNTc3MmFkNTUxOTg5YTNjMGI2NDVh
ZjcwYjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8t
cHJvcGVydHkta2V5LXNsb3ctb2JqZWN0LXZhbHVlb2YtZnRsLmpzCkBAIC0wLDAgKzEsMzMgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCBpZiBpc0ZU
TEVuYWJsZWQgdGhlbiBydW5GVExOb0NKSVQgZWxzZSBza2lwIGVuZAorCitsZXQgZnRsVHJ1ZSA9
ICR2bS5mdGxUcnVlOworbGV0IGRpZEZUTENvbXBpbGUgPSBmYWxzZTsKK2Z1bmN0aW9uIHNsb3dP
YmplY3RWYWx1ZU9mKGkpIHsKKyAgICBsZXQgZ2V0VG9TdHJpbmdDYWxsZWQgPSBmYWxzZTsKKyAg
ICBsZXQgdmFsdWVPZkNhbGxlZCA9IGZhbHNlOworICAgIGxldCBzbG93T2JqZWN0ID0geworICAg
ICAgICBnZXQgdG9TdHJpbmcoKSB7IGdldFRvU3RyaW5nQ2FsbGVkID0gdHJ1ZTsgfSwKKyAgICAg
ICAgdmFsdWVPZigpIHsgdmFsdWVPZkNhbGxlZCA9IHRydWU7IHJldHVybiAidGVzdCI7IH0KKyAg
ICB9OworCisgICAgY2xhc3MgQyB7CisgICAgICAgIFtzbG93T2JqZWN0XSA9IGk7CisgICAgfQor
ICAgIGRpZEZUTENvbXBpbGUgPSBmdGxUcnVlKCk7CisgICAgaWYgKCFnZXRUb1N0cmluZ0NhbGxl
ZCB8fCAhdmFsdWVPZkNhbGxlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgb24g
aXRlcmF0aW9uICR7aX0gKGdldFRvU3RyaW5nQ2FsbGVkID09PSAke2dldFRvU3RyaW5nQ2FsbGVk
fSwgdmFsdWVPZkNhbGxlZCA9PSAke3ZhbHVlT2ZDYWxsZWR9KWApOworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBpZiAoYy50ZXN0ICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZh
aWxlZCBvbiBpdGVyYXRpb24gJHtpfVxuJHtKU09OLnN0cmluZ2lmeShjKX1gKTsKK30KKworbGV0
IGkgPSAwOworbGV0IG1heFRyaWVzID0gMTAwMDA7Citmb3IgKGkgPSAwOyBpIDwgIW1heFRyaWVz
ICYmICFudW1iZXJPZkRGR0NvbXBpbGVzKHNsb3dPYmplY3RWYWx1ZU9mKSAmJiAhZGlkRlRMQ29t
cGlsZTsgKytpKSB7CisgICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbihzbG93T2JqZWN0VmFsdWVP
Zik7CisgICAgc2xvd09iamVjdFZhbHVlT2YoaSk7Cit9CisKK2lmIChpID49IG1heFRyaWVzKQor
ICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGNvbXBpbGUgc2xvd09iamVjdFZhbHVlT2Yg
d2l0aCBERkcgSklUIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
dG8tcHJvcGVydHkta2V5LXN0cmluZy1vYmplY3QtZnRsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zdHJpbmctb2JqZWN0LWZ0bC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NmEwODljMjQxNjRiNjA5ZDFhMWM1MDE1YTRhMGZlYmQ1NTNhYWE3Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zdHJpbmct
b2JqZWN0LWZ0bC5qcwpAQCAtMCwwICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisvL0AgaWYgaXNGVExFbmFibGVkIHRoZW4gcnVuRlRMTm9DSklU
IGVsc2Ugc2tpcCBlbmQKKworbGV0IGZ0bFRydWUgPSAkdm0uZnRsVHJ1ZTsKK2xldCBkaWRGVExD
b21waWxlID0gZmFsc2U7CitmdW5jdGlvbiBzdHJpbmdPYmplY3RUb1N0cmluZyhpKSB7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgIFtuZXcgU3RyaW5nKCJmb28iKV0gPSBpOworICAgIH0KKyAgICBk
aWRGVExDb21waWxlID0gZnRsVHJ1ZSgpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBpZiAo
Yy5mb28gIT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIG9uIGl0ZXJhdGlv
biAke2l9XG4ke0pTT04uc3RyaW5naWZ5KGMpfWApOworfQorbm9JbmxpbmUoc3RyaW5nT2JqZWN0
VG9TdHJpbmcpOworCitsZXQgaSA9IDA7CitsZXQgbWF4VHJpZXMgPSAzMDAwMDsKK2ZvciAoOyBp
IDwgbWF4VHJpZXMgJiYgIW51bWJlck9mREZHQ29tcGlsZXMoc3RyaW5nT2JqZWN0VG9TdHJpbmcp
ICYmICFkaWRGVExDb21waWxlOyArK2kpIHsKKyAgICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHN0
cmluZ09iamVjdFRvU3RyaW5nKTsKKyAgICBzdHJpbmdPYmplY3RUb1N0cmluZyhpKTsKK30KKwor
aWYgKGkgPj0gbWF4VHJpZXMpCisgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29tcGls
ZSBzdHJpbmdPYmplY3RUb1N0cmluZyB3aXRoIERGRyBKSVQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388103</attachid>
            <date>2020-01-17 15:59:46 -0800</date>
            <delta_ts>2020-01-18 15:14:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206368-20200117185945.patch</filename>
            <type>text/plain</type>
            <size>29583</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NTBjNGM3NjYxZTY0NTkzYTgxYzIzYzQzMTYxYzllZDRmMDU0MWE2Li42M2U0NjAxMDEwNmM1NTM4
M2Q4OGYzNGI0ZTc4M2RkMGQ2MDQ5MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMC0wMS0xNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGFkZCBERkcvRlRMIHN1cHBvcnQgZm9yIG9wX3RvX3Byb3BlcnR5
X2tleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2
MzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuIAorCisgICAgICAgIEltcGxl
bWVudCBERkcvRlRMIHN1cHBvcnQgZm9yIHRoZSBvcF90b19wcm9wZXJ0eV9rZXkgb3Bjb2RlLiBU
aGlzIG9wZXJhdGVzCisgICAgICAgIHNpbWlsYXIgdG8gdGhlIExMSW50IGFuZCBiYXNlIEpJVCBp
bXBsZW1lbnRhdGlvbnMsIGluIHdoaWNoIHdlIGF2b2lkIGludm9raW5nCisgICAgICAgIHRoZSBm
dWxsIFRvUHJvcGVydHlLZXkgb3BlcmF0aW9uIGlmIHRoZSBzb3VyY2Ugb3BlcmFuZCBpcyBhbHJl
YWR5IGEgU3RyaW5nIG9yCisgICAgICAgIFN5bWJvbCBhdCBydW50aW1lLgorCisgICAgICAgIElm
IERGRy9GVEwgYXJlIGNvbmZpZGVudCB0aGUgdmFsdWUgd2lsbCBiZSBhIFN0cmluZyBvciBTeW1i
b2wgYXQgY29tcGlsZSB0aW1lLAorICAgICAgICB0aGUgb3BlcmF0aW9uIGlzIG9taXR0ZWQgZW50
aXJlbHkgaW4gdGhlIGZpbmFsIGdyYXBoLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRp
bmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1RvU3Ry
aW5nKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJvcGVydHlLZXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5v
ZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9Qcm9w
ZXJ0eUtleSk6CisKIDIwMjAtMDEtMTcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcGFyYXRlIHN0b3JhZ2Ugb2YgU3RydWN0dXJlOjptX29m
ZnNldCBpbnRvIHRyYW5zaXRpb24gYW5kIG1heCBvZmZzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCBlNTI4NGFkODVkMWQ2ZjU0ZjRjYTMyZDQ5OGY3OTNhZmFjYjVmYmNhLi43YmU3ZTJjYTJmY2Yy
MDcxMTAwMmExNTJmMWVmYWMwYTI5ZWQ5NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yNTMx
LDYgKzI1MzEsMjAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBUb1Byb3BlcnR5S2V5OiB7CisgICAgICAgIGlmICghKGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpKSkgewor
ICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Cisg
ICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICBzZXRGb3JOb2Rl
KG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgY2xvYmJlcldvcmxkKCk7CisKKyAgICAgICAgc2V0VHlwZUZvck5v
ZGUobm9kZSwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIFRvTnVtYmVyOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGRDb25zdCA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZENvbnN0ICYm
IGNoaWxkQ29uc3QuaXNOdW1iZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBiYzAxY2ZiMTc2NzA4Nzk3MTk2OTU4NzQ2NzRh
YjRmMzBiNzE5MDVjLi5kMWZhMGIzMTc4NzcyZWZmOWRmNDRiYzU4ZGVmODFiYzlkMmYxYjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApA
QCAtNTYwMyw3ICs1NjAzLDE0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
VG9QcmltaXRpdmUsIHZhbHVlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90b19wcmlt
aXRpdmUpOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIG9wX3RvX3By
b3BlcnR5X2tleTogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BUb1Byb3BlcnR5S2V5PigpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoYnl0ZWNvZGUubV9zcmMpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRU
b0dyYXBoKFRvUHJvcGVydHlLZXksIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF90b19wcm9wZXJ0eV9rZXkpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9zdHJjYXQ6
IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
U3RyY2F0PigpOwogICAgICAgICAgICAgaW50IHN0YXJ0T3BlcmFuZCA9IGJ5dGVjb2RlLm1fc3Jj
Lm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IGNlNWY2YWFhNjg4MjczZDliZTcwZWQ0OGFiMTlmNTYyNjFjZGZhYzQuLjc1OWI3
NzgwYTZjYzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI4Miw2ICsyODIsNyBAQCBDYXBh
YmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKICAgICBjYXNlIG9w
X2dldF9pbnRlcm5hbF9maWVsZDoKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9maWVsZDoKKyAg
ICBjYXNlIG9wX3RvX3Byb3BlcnR5X2tleToKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgogICAg
IGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9iZWdpbjoKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBsZXJf
ZW5kOgpAQCAtMjkzLDcgKzI5NCw2IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAKICAgICBj
YXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3BfY3JlYXRlX2dlbmVyYXRvcl9mcmFtZV9lbnZpcm9u
bWVudDoKLSAgICBjYXNlIG9wX3RvX3Byb3BlcnR5X2tleTogLy8gRklYTUU6IG9wX3RvX3Byb3Bl
cnR5X2tleSB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRzLgog
ICAgIGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2YWxfcHJv
bG9ndWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZWVlOWJhZWNkMjg5ZDhmMjg3
MzcyNDUxMDcwYzRmYjJhMjhlODNkYy4uODFiMDAxNGU2YjFhNTNiMWI0N2E1OTUxZDI5YTdlNmMw
Njk5NDdmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTY0OSw2ICs2NDksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgQ29uc3Ry
dWN0VmFyYXJnczoKICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2Ug
VG9QcmltaXRpdmU6CisgICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2UgSW5CeVZhbDoK
ICAgICBjYXNlIEluQnlJZDoKICAgICBjYXNlIEhhc093blByb3BlcnR5OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRl
eCBjZWJiM2M4ZTljYjhhZGZkODlhNmNkNmMyYzUzNGIwMDE4MmIzZTBlLi5kOGFmMDM1Mjc3OTU1
YjdiN2JmOTdiY2YxNjUzODMwMjY3YmI0ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNzE3LDYgKzcxNywx
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICBjYXNlIFRvUHJvcGVydHlLZXk6IHsKKyAgICAgICAgICAgICAgICBpZiAobV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNTdHJpbmcgfCBTcGVj
U3ltYm9sKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBj
YXNlIFRvVGhpczogewogICAgICAgICAgICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1Rv
VGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxZjMwZGZmNjE3OWMwYzMz
ZWVmNTE5MzIyMjdjNzU5NjY3NWFiZmFkLi42ZWU3MjVhMGEzODYyMjIxNGM5OWJmMTIyYjVjOTRl
YjM2NDg0YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0z
MzYsNiArMzM2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgVG9OdW1lcmljOgogICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgY2FzZSBUb1ByaW1pdGl2
ZToKKyAgICBjYXNlIFRvUHJvcGVydHlLZXk6CiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBU
cnlHZXRCeUlkOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDkyMmQzNWJiZmFmMGJiMWRkOTBiMDkwM2E1ZjJj
ZGU0OWFiODZiYjIuLmM3OWNkN2MzOGJlZWIyY2IxNDNjNWM2YjBmYzY4MDg5ZjdkNTdjNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTM5MSw2
ICsxMzkxLDM4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2UgVG9Qcm9wZXJ0eUtleTogeworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvSWRlbnRpdHkoKTsKKworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2wo
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0KCkKKyAgICAgICAgICAgICAgICAmJiBt
X2dyYXBoLmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpIHsKKyAgICAgICAgICAgICAgICBhZGRDaGVja1N0cnVjdHVyZUZvck9yaWdpbmFsU3RyaW5n
T2JqZWN0VXNlKFN0cmluZ09iamVjdFVzZSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKS5u
b2RlKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvVG9TdHJpbmcoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoKQorICAg
ICAgICAgICAgICAgICYmIG1fZ3JhcGguY2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSkgeworICAgICAgICAgICAgICAgIGFkZENoZWNrU3RydWN0dXJl
Rm9yT3JpZ2luYWxTdHJpbmdPYmplY3RVc2UoU3RyaW5nT3JTdHJpbmdPYmplY3RVc2UsIG5vZGUt
Pm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y29udmVydFRvVG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgVG9OdW1iZXI6IHsKICAgICAgICAgICAgIGZpeHVwVG9OdW1iZXIobm9kZSk7CiAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNTE3YWYxMDAz
YWZjZTZkMzVmNzE0NWRiYjY5NTFmMThjYzIyM2I2OC4uMzQ0YTJhYjU5YjJjYTExYzZiMjc5NWVk
NTM2OWVjOTVjN2YwZTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTcx
MSw3ICs3MTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9Ub1N0cmluZygp
CiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBUb1ByaW1pdGl2ZSB8fCBtX29wID09IFN0
cmluZ1ZhbHVlT2YpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBUb1ByaW1pdGl2ZSB8fCBtX29w
ID09IFN0cmluZ1ZhbHVlT2YgfHwgbV9vcCA9PSBUb1Byb3BlcnR5S2V5KTsKICAgICAgICAgbV9v
cCA9IFRvU3RyaW5nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCmluZGV4IDdjNmQxYjJhZmM1YWZmNDc0NzY4MTAzYTVlMTNkM2EyMjI2Y2E2ZmMuLjU0N2Zl
NGQ5NTUzOTQyMTdkNmExZDdiYzg2ZjE2OGIyMGM2ZDU1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQwMiw2ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFRvUHJpbWl0
aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oVG9Qcm9w
ZXJ0eUtleSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRv
U3RyaW5nLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVG9O
dW1iZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUb051
bWVyaWMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGY3YWM3Y2U4Yzc0NzkxMTcwMGRm
NTg1MTk1NjQ1ZDM0MTFlYmYzYjIuLjJmZGI5YzlkNzY3ZTY4NzJmZGNhZDY4NzNkZWY4ZTk0ODFl
ZjgxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApA
QCAtMTY0OSw2ICsxNjQ5LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9QcmltaXRpdmUoZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Q
cm9wZXJ0eUtleShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1Byb3BlcnR5S2V5VmFs
dWUoZ2xvYmFsT2JqZWN0KSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBhMzNlZGU5YjUxMTIwZTkxNWQ2
YWJlOGUxNzliNjkxN2FmNThkN2FjLi4wZjFjODc1NGNkNjlmNzc4ZTk2NzgzMGYyMTY3YTlhNGM4
ZDI5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
OTEsNiArOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsU3RyaW5nSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbgogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZyhKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCosIEpTQ2VsbCogc3RyaW5nKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiwgSlNDZWxsKiBzeW1ib2wpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ub1Byb3BlcnR5S2V5KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9OdW1i
ZXIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWVyaWMoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAppbmRleCBmOTJhZTlkYjBiZDdkMzgxZTBlYjVmYTI3NjA3NmQxYTQx
OWQwMzY0Li45YjhkNjBkMjc1MzkzNGY1MDRmNzY0MjQwYWIxNGVhNzNiNGYwMGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtNTc1LDYgKzU3NSwxMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFRvUHJvcGVydHlLZXk6IHsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGNoaWxkID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rp
b24oKTsKKyAgICAgICAgICAgIGlmIChjaGlsZCkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihyZXN1bHRPZlRvUHJvcGVydHlLZXkoY2hpbGQpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBOb3JtYWxpemVNYXBLZXk6IHsK
ICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLT5jaGlsZDEoKS0+
cHJlZGljdGlvbigpOwogICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCkBAIC0xMjIyLDYgKzEy
MjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIFRv
VGhpczoKICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZTogCisgICAgICAgIGNhc2UgVG9Qcm9wZXJ0
eUtleToKICAgICAgICAgY2FzZSBOb3JtYWxpemVNYXBLZXk6CiAgICAgICAgIGNhc2UgQXRvbWlj
c0FkZDoKICAgICAgICAgY2FzZSBBdG9taWNzQW5kOgpAQCAtMTQzMSw2ICsxNDM5LDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiB0eXBlOwogICAgIH0KIAorICAgIFNwZWN1bGF0ZWRUeXBl
IHJlc3VsdE9mVG9Qcm9wZXJ0eUtleShTcGVjdWxhdGVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAg
ICAgLy8gUHJvcGFnYXRlIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBzb3VyY2UgZGlyZWN0bHkgaWYg
YWxyZWFkeSBwcm92ZW4gdG8gYmUgYSBwcm9wZXJ0eSBrZXkuCisgICAgICAgIGlmICh0eXBlICYm
ICEodHlwZSAmIH4oU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpKSkKKyAgICAgICAgICAgIHJldHVy
biB0eXBlOworCisgICAgICAgIGlmICh0eXBlICYgU3BlY1N0cmluZ09iamVjdCAmJiBtX2dyYXBo
LmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpCisgICAgICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlvbnModHlwZSAmIFNwZWNT
eW1ib2wsIFNwZWNTdHJpbmcpOworCisgICAgICAgIHJldHVybiBTcGVjU3RyaW5nIHwgU3BlY1N5
bWJvbDsKKyAgICB9CisKICAgICBWZWN0b3I8Tm9kZSo+IG1fZGVwZW5kZW50Tm9kZXM7CiAgICAg
Tm9kZSogbV9jdXJyZW50Tm9kZTsKICAgICBib29sIG1fY2hhbmdlZCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIwMzM4N2I2
NjU2NDg2YzA2NTM5OWUxZTFjZGJlMGI5YzM1NWU2ZWEuLmVjZGQ5OTNjM2Q0ZmU5NTdkMWYwZjg4
YTgwNDczZmFjMzQxNTYzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCkBAIC0zNjEsNiArMzYxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
ICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAg
ICAgY2FzZSBUb1ByaW1pdGl2ZToKKyAgICBjYXNlIFRvUHJvcGVydHlLZXk6CiAgICAgY2FzZSBU
b1N0cmluZzoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9OdW1lcmljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2OGY1
MjNmZTk4NTdiZGZmOWE0OTkyZmFkNDlmNDA1NGQ2ZWZmZTUzLi4xM2YyOGNlODI2NTY2NDE5YWVj
OTk5ZTIyNzYyMTViNWQ0MzZmNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTMwNTMsNiArMTMwNTMsMzAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Byb3BlcnR5S2V5
KE5vZGUqIG5vZGUpCit7CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBhcmd1bWVudCk7
CisKKyAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVudC5qc1ZhbHVlUmVncygp
OworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgYXJn
dW1lbnQudXNlKCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50UmVncykp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcm9wZXJ0eUtleSA9IG1faml0LmJy
YW5jaElmU3ltYm9sKGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpOworICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkp
OworCisgICAgYWxyZWFkeVByb3BlcnR5S2V5LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5tb3Zl
VmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CisKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5
S2V5LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdz
KSk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKU0Nl
bGwsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVUb051bWVyaWMoTm9kZSogbm9kZSkKIHsKICAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDhmOTYxODIxZjVhZDQ4MjFiMDM0MzY5YWYyZGYxNzFh
Y2YyZmUxZjQuLmIxZmIwZThjOTdhNzU5ZWJkMjlmNDdiMTNhYTFjNDc4YjIwMTNlYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0NjQs
NiArMTQ2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlJdGVyYXRvcihOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlVG9QcmltaXRpdmUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVRvUHJvcGVydHlL
ZXkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvTnVtZXJpYyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlTG9nU2hhZG93Q2hpY2tlblByb2xvZ3VlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVM
b2dTaGFkb3dDaGlja2VuVGFpbChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBkNDVlZGMxNmMwMmUyOGJk
OTM1MTVlYWRmM2UzMzMzNTQ5ZWZiNDU4Li5mYTA2NmJmZTEyZjliNjFkY2NlMGM3NWQ2MDdiZTNk
ZWE1YjkxNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMwOTUsNiArMzA5NSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgVG9Qcm9wZXJ0eUtleTogeworICAgICAgICBjb21waWxlVG9Qcm9wZXJ0eUtleShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBUb051bWJlcjogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcywgUmV1c2UsIGFyZ3VtZW50LCBUYWdXb3JkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGVjN2YzMzdjYjllMDAwMmEwZDBiOTNkY2RhM2FjMzc0ZDgxNjlkMTAuLjgwNDM2OWQ5
NjZhZmIyNmUyMjA2ZTVhMTJhMjVlZTJlOTIwNTQ3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzQzMSw2ICszNDMxLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBUb1Byb3BlcnR5S2V5OiB7CisgICAgICAgIGNvbXBpbGVU
b1Byb3BlcnR5S2V5KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFRv
TnVtYmVyOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYXJndW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IGI5NTNjZmVjNzE1YzZhYWRkMmI2MjEzODFkYTE1YWExMWMyZmNjNTAuLmViYTE5N2YzOTBk
MTgzNjFjNDA1MDNlOTIxNjgzNmE3MzJhMDNhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTIzMyw2ICsyMzMsNyBAQCBpbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE11bHRpR2V0QnlP
ZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgVG9QcmltaXRpdmU6
CisgICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBUaHJv
d1N0YXRpY0Vycm9yOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNTgzOTBkMzY5ODIxMWYzMjRjYmQy
Yzk0MmJkMGIxYjIwMDYyNjNhMy4uMGM1ODU3Mjk5NTNmZThkNTZhMGE1MDJkOWQyYzY0N2UxNzRi
OTdkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMTEzOSw2ICsxMTM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUb1ByaW1pdGl2
ZToKICAgICAgICAgICAgIGNvbXBpbGVUb1ByaW1pdGl2ZSgpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgVG9Qcm9wZXJ0eUtleToKKyAgICAgICAgICAgIGNvbXBpbGVUb1Byb3Bl
cnR5S2V5KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNYWtlUm9wZToKICAg
ICAgICAgICAgIGNvbXBpbGVNYWtlUm9wZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MzM5
LDYgKzczNDIsMzggQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCByZXN1
bHRzKSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlVG9Qcm9wZXJ0eUtleSgpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXND
ZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmlu
Z0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aENh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMz4g
cmVzdWx0czsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgaXNDZWxsKHZhbHVl
LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1
cmUoc2xvd1BhdGhDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBub3RTdHJpbmdDYXNlKTsKKyAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKHZhbHVlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc1N0cmlu
Zyh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRp
b24pLCB1bnN1cmUobm90U3RyaW5nQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dFN0cmluZ0Nhc2UsIHNsb3dQYXRoQ2FzZSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0
LmFuY2hvcih2YWx1ZSkpOworICAgICAgICBtX291dC5icmFuY2goaXNTeW1ib2wodmFsdWUsIHBy
b3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJl
KHNsb3dQYXRoQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoQ2FzZSwg
Y29udGludWF0aW9uKTsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2Fs
bCgKKyAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCB2YWx1ZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwor
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOworICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyMmI3MTE1MzIwNzVlYjhjNGUy
N2Q1NjA0MWVjODlmZjU4MmNmZTA0Li43MzQzMTM2ZGMyZDJiMDM0Y2U4ODBmMmM1MGI4YTU0MDYw
ODI1YzM5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAxLTE3ICBDYWl0bGluIFBvdHRlciAgPGNhaXRw
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gYWRkIERGRy9GVEwgc3VwcG9ydCBmb3Igb3Bf
dG9fcHJvcGVydHlfa2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDYzNjgKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAg
ICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LWNvbnN0LXN0cmluZy1m
dGwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkt
a2V5LWNvbnN0LXN5bWJvbC1mdGwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtdG8tcHJvcGVydHkta2V5LXNsb3ctb2JqZWN0LXRvc3RyaW5nLWZ0bC5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktc2xvdy1vYmpl
Y3QtdmFsdWVvZi1mdGwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMt
dG8tcHJvcGVydHkta2V5LXN0cmluZy1vYmplY3QtZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zdHJpbmctb3Itc3RyaW5nLW9iamVj
dC1mdGwuanM6IEFkZGVkLgorCiAyMDIwLTAxLTE3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBKU09OLnBhcnNlIHNob3VsZCBsb29rdXAgcHJvdG90
eXBlIGNoYWlucyBkdXJpbmcgcmV2aXZhbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1jb25zdC1zdHJpbmctZnRsLmpzIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1jb25zdC1zdHJpbmctZnRsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU2NGFmZjFlZmY0YTFkNDM4YWQwMzUzNWFlYjJiNDk2OGU3MDIyY2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5
LWNvbnN0LXN0cmluZy1mdGwuanMKQEAgLTAsMCArMSwyNSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQorLy9AIGlmIGlzRlRMRW5hYmxlZCB0aGVuIHJ1bkZU
TE5vQ0pJVCBlbHNlIHNraXAgZW5kCisKK2xldCBmdGxUcnVlID0gJHZtLmZ0bFRydWU7CitsZXQg
ZGlkRlRMQ29tcGlsZSA9IGZhbHNlOworZnVuY3Rpb24gY29uc3RGb2xkU3RyaW5nKGkpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgWyJmb28iXSA9IGk7CisgICAgfQorICAgIGRpZEZUTENvbXBp
bGUgPSBmdGxUcnVlKCk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGlmIChjLmZvbyAhPT0g
aSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgb24gaXRlcmF0aW9uICR7aX1cbiR7
SlNPTi5zdHJpbmdpZnkoYyl9YCk7Cit9Citub0lubGluZShjb25zdEZvbGRTdHJpbmcpOworCits
ZXQgaSA9IDA7CitsZXQgbWF4VHJpZXMgPSAxMDAwMDsKK2ZvciAoOyBpIDwgbWF4VHJpZXMgJiYg
IW51bWJlck9mREZHQ29tcGlsZXMoY29uc3RGb2xkU3RyaW5nKSAmJiAhZGlkRlRMQ29tcGlsZTsg
KytpKSB7CisgICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbihjb25zdEZvbGRTdHJpbmcpOworICAg
IGNvbnN0Rm9sZFN0cmluZyhpKTsKK30KKworaWYgKGkgPj0gbWF4VHJpZXMpCisgICAgdGhyb3cg
bmV3IEVycm9yKCJGYWlsZWQgdG8gY29tcGlsZSBjb25zdEZvbGRTdHJpbmcgd2l0aCBERkcgSklU
Iik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkt
a2V5LWNvbnN0LXN5bWJvbC1mdGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8t
cHJvcGVydHkta2V5LWNvbnN0LXN5bWJvbC1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUxYjJlNGRhYzg0
MzAyMWRhOWE2MmM5YzA0YjJhNDgyM2Q3MWNmOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktY29uc3Qtc3ltYm9sLWZ0bC5qcwpA
QCAtMCwwICsxLDI2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1
ZSIpCisvL0AgaWYgaXNGVExFbmFibGVkIHRoZW4gcnVuRlRMTm9DSklUIGVsc2Ugc2tpcCBlbmQK
KworbGV0IGZ0bFRydWUgPSAkdm0uZnRsVHJ1ZTsKK2xldCBkaWRGVExDb21waWxlID0gZmFsc2U7
CitsZXQgc3ltYm9sID0gU3ltYm9sKCJ0ZXN0Iik7CitmdW5jdGlvbiBjb25zdEZvbGRTeW1ib2wo
aSkgeworICAgIGNsYXNzIEMgeworICAgICAgICBbc3ltYm9sXSA9IGk7CisgICAgfQorICAgIGRp
ZEZUTENvbXBpbGUgPSBmdGxUcnVlKCk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGlmIChj
W3N5bWJvbF0gIT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIG9uIGl0ZXJh
dGlvbiAke2l9XG4ke0pTT04uc3RyaW5naWZ5KGMpfWApOworfQorbm9JbmxpbmUoY29uc3RGb2xk
U3ltYm9sKTsKKworbGV0IGkgPSAwOworbGV0IG1heFRyaWVzID0gMTAwMDA7Citmb3IgKDsgaSA8
IG1heFRyaWVzICYmICFudW1iZXJPZkRGR0NvbXBpbGVzKGNvbnN0Rm9sZFN5bWJvbCkgJiYgIWRp
ZEZUTENvbXBpbGU7ICsraSkgeworICAgIG9wdGltaXplTmV4dEludm9jYXRpb24oY29uc3RGb2xk
U3ltYm9sKTsKKyAgICBjb25zdEZvbGRTeW1ib2woaSk7Cit9CisKK2lmIChpID49IG1heFRyaWVz
KQorICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGNvbXBpbGUgd2l0aCBERkcgSklUIik7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5
LXNsb3ctb2JqZWN0LXRvc3RyaW5nLWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy10by1wcm9wZXJ0eS1rZXktc2xvdy1vYmplY3QtdG9zdHJpbmctZnRsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ5YjdjYzQ3ZmRiZDgzYmM0YzIzNWIyOTIwNjIxZDQ1ODRjMGQxNmYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LXNsb3ctb2Jq
ZWN0LXRvc3RyaW5nLWZ0bC5qcwpAQCAtMCwwICsxLDMzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisvL0AgaWYgaXNGVExFbmFibGVkIHRoZW4gcnVuRlRM
Tm9DSklUIGVsc2Ugc2tpcCBlbmQKKworbGV0IGZ0bFRydWUgPSAkdm0uZnRsVHJ1ZTsKK2xldCBk
aWRGVExDb21waWxlID0gZmFsc2U7CitmdW5jdGlvbiBzbG93T2JqZWN0VmFsdWVPZihpKSB7Cisg
ICAgbGV0IGdldFRvU3RyaW5nQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IHZhbHVlT2ZDYWxsZWQg
PSBmYWxzZTsKKyAgICBsZXQgc2xvd09iamVjdCA9IHsKKyAgICAgICAgZ2V0IHRvU3RyaW5nKCkg
eyBnZXRUb1N0cmluZ0NhbGxlZCA9IHRydWU7IH0sCisgICAgICAgIHZhbHVlT2YoKSB7IHZhbHVl
T2ZDYWxsZWQgPSB0cnVlOyByZXR1cm4gInRlc3QiOyB9CisgICAgfTsKKworICAgIGNsYXNzIEMg
eworICAgICAgICBbc2xvd09iamVjdF0gPSBpOworICAgIH0KKyAgICBkaWRGVExDb21waWxlID0g
ZnRsVHJ1ZSgpOworICAgIGlmICghZ2V0VG9TdHJpbmdDYWxsZWQgfHwgIXZhbHVlT2ZDYWxsZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIG9uIGl0ZXJhdGlvbiAke2l9IChnZXRU
b1N0cmluZ0NhbGxlZCA9PT0gJHtnZXRUb1N0cmluZ0NhbGxlZH0sIHZhbHVlT2ZDYWxsZWQgPT0g
JHt2YWx1ZU9mQ2FsbGVkfSlgKTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgaWYgKGMudGVz
dCAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgb24gaXRlcmF0aW9uICR7
aX1cbiR7SlNPTi5zdHJpbmdpZnkoYyl9YCk7Cit9CisKK2xldCBpID0gMDsKK2xldCBtYXhUcmll
cyA9IDEwMDAwOworZm9yIChpID0gMDsgaSA8IG1heFRyaWVzICYmICFudW1iZXJPZkRGR0NvbXBp
bGVzKHNsb3dPYmplY3RWYWx1ZU9mKSAmJiAhZGlkRlRMQ29tcGlsZTsgKytpKSB7CisgICAgb3B0
aW1pemVOZXh0SW52b2NhdGlvbihzbG93T2JqZWN0VmFsdWVPZik7CisgICAgc2xvd09iamVjdFZh
bHVlT2YoaSk7Cit9CisKK2lmIChpID49IG1heFRyaWVzKQorICAgIHRocm93IG5ldyBFcnJvcigi
RmFpbGVkIHRvIGNvbXBpbGUgc2xvd09iamVjdFZhbHVlT2Ygd2l0aCBERkcgSklUIik7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVydHkta2V5LXNsb3ct
b2JqZWN0LXZhbHVlb2YtZnRsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXBy
b3BlcnR5LWtleS1zbG93LW9iamVjdC12YWx1ZW9mLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTY4YjUy
MDFhYzVjZjU3NzJhZDU1MTk4OWEzYzBiNjQ1YWY3MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zbG93LW9iamVjdC12YWx1
ZW9mLWZ0bC5qcwpAQCAtMCwwICsxLDMzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xh
c3NGaWVsZHM9dHJ1ZSIpCisvL0AgaWYgaXNGVExFbmFibGVkIHRoZW4gcnVuRlRMTm9DSklUIGVs
c2Ugc2tpcCBlbmQKKworbGV0IGZ0bFRydWUgPSAkdm0uZnRsVHJ1ZTsKK2xldCBkaWRGVExDb21w
aWxlID0gZmFsc2U7CitmdW5jdGlvbiBzbG93T2JqZWN0VmFsdWVPZihpKSB7CisgICAgbGV0IGdl
dFRvU3RyaW5nQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IHZhbHVlT2ZDYWxsZWQgPSBmYWxzZTsK
KyAgICBsZXQgc2xvd09iamVjdCA9IHsKKyAgICAgICAgZ2V0IHRvU3RyaW5nKCkgeyBnZXRUb1N0
cmluZ0NhbGxlZCA9IHRydWU7IH0sCisgICAgICAgIHZhbHVlT2YoKSB7IHZhbHVlT2ZDYWxsZWQg
PSB0cnVlOyByZXR1cm4gInRlc3QiOyB9CisgICAgfTsKKworICAgIGNsYXNzIEMgeworICAgICAg
ICBbc2xvd09iamVjdF0gPSBpOworICAgIH0KKyAgICBkaWRGVExDb21waWxlID0gZnRsVHJ1ZSgp
OworICAgIGlmICghZ2V0VG9TdHJpbmdDYWxsZWQgfHwgIXZhbHVlT2ZDYWxsZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRmFpbGVkIG9uIGl0ZXJhdGlvbiAke2l9IChnZXRUb1N0cmluZ0Nh
bGxlZCA9PT0gJHtnZXRUb1N0cmluZ0NhbGxlZH0sIHZhbHVlT2ZDYWxsZWQgPT0gJHt2YWx1ZU9m
Q2FsbGVkfSlgKTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgaWYgKGMudGVzdCAhPT0gaSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgb24gaXRlcmF0aW9uICR7aX1cbiR7SlNP
Ti5zdHJpbmdpZnkoYyl9YCk7Cit9CisKK2xldCBpID0gMDsKK2xldCBtYXhUcmllcyA9IDEwMDAw
OworZm9yIChpID0gMDsgaSA8ICFtYXhUcmllcyAmJiAhbnVtYmVyT2ZERkdDb21waWxlcyhzbG93
T2JqZWN0VmFsdWVPZikgJiYgIWRpZEZUTENvbXBpbGU7ICsraSkgeworICAgIG9wdGltaXplTmV4
dEludm9jYXRpb24oc2xvd09iamVjdFZhbHVlT2YpOworICAgIHNsb3dPYmplY3RWYWx1ZU9mKGkp
OworfQorCitpZiAoaSA+PSBtYXhUcmllcykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0
byBjb21waWxlIHNsb3dPYmplY3RWYWx1ZU9mIHdpdGggREZHIEpJVCIpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXRvLXByb3BlcnR5LWtleS1zdHJpbmctb2JqZWN0
LWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktc3Ry
aW5nLW9iamVjdC1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZhMDg5YzI0MTY0YjYwOWQxYTFjNTAxNWE0
YTBmZWJkNTUzYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy10by1wcm9wZXJ0eS1rZXktc3RyaW5nLW9iamVjdC1mdGwuanMKQEAgLTAsMCArMSwyNSBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQorLy9AIGlmIGlz
RlRMRW5hYmxlZCB0aGVuIHJ1bkZUTE5vQ0pJVCBlbHNlIHNraXAgZW5kCisKK2xldCBmdGxUcnVl
ID0gJHZtLmZ0bFRydWU7CitsZXQgZGlkRlRMQ29tcGlsZSA9IGZhbHNlOworZnVuY3Rpb24gc3Ry
aW5nT2JqZWN0VG9TdHJpbmcoaSkgeworICAgIGNsYXNzIEMgeworICAgICAgICBbbmV3IFN0cmlu
ZygiZm9vIildID0gaTsKKyAgICB9CisgICAgZGlkRlRMQ29tcGlsZSA9IGZ0bFRydWUoKTsKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgaWYgKGMuZm9vICE9PSBpKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEZhaWxlZCBvbiBpdGVyYXRpb24gJHtpfVxuJHtKU09OLnN0cmluZ2lmeShjKX1g
KTsKK30KK25vSW5saW5lKHN0cmluZ09iamVjdFRvU3RyaW5nKTsKKworbGV0IGkgPSAwOworbGV0
IG1heFRyaWVzID0gMzAwMDA7Citmb3IgKDsgaSA8IG1heFRyaWVzICYmICFudW1iZXJPZkRGR0Nv
bXBpbGVzKHN0cmluZ09iamVjdFRvU3RyaW5nKSAmJiAhZGlkRlRMQ29tcGlsZTsgKytpKSB7Cisg
ICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbihzdHJpbmdPYmplY3RUb1N0cmluZyk7CisgICAgc3Ry
aW5nT2JqZWN0VG9TdHJpbmcoaSk7Cit9CisKK2lmIChpID49IG1heFRyaWVzKQorICAgIHRocm93
IG5ldyBFcnJvcigiRmFpbGVkIHRvIGNvbXBpbGUgc3RyaW5nT2JqZWN0VG9TdHJpbmcgd2l0aCBE
RkcgSklUIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJv
cGVydHkta2V5LXN0cmluZy1vci1zdHJpbmctb2JqZWN0LWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy10by1wcm9wZXJ0eS1rZXktc3RyaW5nLW9yLXN0cmluZy1vYmplY3QtZnRs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM1M2Y3MjVkZWY1NzU1ZTQzMjkyMGE2N2I0NmNkMTFiYjdlMzZhODYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtdG8tcHJvcGVy
dHkta2V5LXN0cmluZy1vci1zdHJpbmctb2JqZWN0LWZ0bC5qcwpAQCAtMCwwICsxLDI4IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisvL0AgaWYgaXNGVExF
bmFibGVkIHRoZW4gcnVuRlRMTm9DSklUIGVsc2Ugc2tpcCBlbmQKKworbGV0IGZ0bFRydWUgPSAk
dm0uZnRsVHJ1ZTsKK2xldCBkaWRGVExDb21waWxlID0gZmFsc2U7CitmdW5jdGlvbiBrZXkoaSkg
eworICAgIHJldHVybiAoaSAmIDEpID8gbmV3IFN0cmluZygiZm9vIikgOiAiZm9vIjsKK30KK2Z1
bmN0aW9uIHN0cmluZ09yU3RyaW5nT2JqZWN0VG9TdHJpbmcoaSkgeworICAgIGNsYXNzIEMgewor
ICAgICAgICBba2V5KGkpXSA9IGk7CisgICAgfQorICAgIGRpZEZUTENvbXBpbGUgPSBmdGxUcnVl
KCk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGlmIChjLmZvbyAhPT0gaSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgb24gaXRlcmF0aW9uICR7aX1cbiR7SlNPTi5zdHJpbmdp
ZnkoYyl9YCk7Cit9Citub0lubGluZShzdHJpbmdPclN0cmluZ09iamVjdFRvU3RyaW5nKTsKKwor
bGV0IGkgPSAwOworbGV0IG1heFRyaWVzID0gMzAwMDA7Citmb3IgKDsgaSA8IG1heFRyaWVzICYm
ICFudW1iZXJPZkRGR0NvbXBpbGVzKHN0cmluZ09yU3RyaW5nT2JqZWN0VG9TdHJpbmcpICYmICFk
aWRGVExDb21waWxlOyArK2kpIHsKKyAgICBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKHN0cmluZ09y
U3RyaW5nT2JqZWN0VG9TdHJpbmcpOworICAgIHN0cmluZ09yU3RyaW5nT2JqZWN0VG9TdHJpbmco
aSk7Cit9CisKK2lmIChpID49IG1heFRyaWVzKQorICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVk
IHRvIGNvbXBpbGUgc3RyaW5nT3JTdHJpbmdPYmplY3RUb1N0cmluZyB3aXRoIERGRyBKSVQiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>