<?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>115542</bug_id>
          
          <creation_ts>2013-05-02 21:30:15 -0700</creation_ts>
          <short_desc>Rationalized &apos;this&apos; value conversion</short_desc>
          <delta_ts>2013-09-05 14:20:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>120781</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>884057</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-02 21:30:15 -0700</bug_when>
    <thetext>Rationalized &apos;this&apos; value conversion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884062</commentid>
    <comment_count>1</comment_count>
      <attachid>200385</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-02 21:50:39 -0700</bug_when>
    <thetext>Created attachment 200385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884068</commentid>
    <comment_count>2</comment_count>
      <attachid>200385</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-02 21:59:31 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/391318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884071</commentid>
    <comment_count>3</comment_count>
      <attachid>200385</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-02 22:01:56 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/290326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884072</commentid>
    <comment_count>4</comment_count>
      <attachid>200385</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-02 22:02:27 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/343309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884073</commentid>
    <comment_count>5</comment_count>
      <attachid>200385</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-02 22:02:44 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/343310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884074</commentid>
    <comment_count>6</comment_count>
      <attachid>200385</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-02 22:04:00 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

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

Do you want to land on trunk?  Or on the branch?  R=me either way, but I sort of prefer the branch.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:639
&gt; +            ECMAMode ecmaMode = m_graph.executableFor(node-&gt;codeOrigin)-&gt;isStrictMode() ? StrictMode : NotStrictMode;

Oh thank god for the ECMAMode enum.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:107
&gt; +    ASSERT(FinalObjectType == 18);

Is this just to have a fast &quot;am I already suitable for this&quot; check?

I buy that it&apos;s probably a sensible way to do it, but I do wonder why not have a type flag instead.

(I&apos;m not objecting.  I&apos;m just curious what your thinking was.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884078</commentid>
    <comment_count>7</comment_count>
      <attachid>200385</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-02 22:12:32 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/290325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884079</commentid>
    <comment_count>8</comment_count>
      <attachid>200385</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-02 22:22:33 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/391324</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884080</commentid>
    <comment_count>9</comment_count>
      <attachid>200385</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-02 22:30:57 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/392286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884087</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-02 23:03:34 -0700</bug_when>
    <thetext>&gt; Do you want to land on trunk?  Or on the branch?  R=me either way, but I sort of prefer the branch.

Yeah, branch.

&gt; &gt; Source/JavaScriptCore/llint/LLIntData.cpp:107
&gt; &gt; +    ASSERT(FinalObjectType == 18);
&gt; 
&gt; Is this just to have a fast &quot;am I already suitable for this&quot; check?

Yes.

&gt; I buy that it&apos;s probably a sensible way to do it, but I do wonder why not have a type flag instead.
&gt; 
&gt; (I&apos;m not objecting.  I&apos;m just curious what your thinking was.)

Thinking about this now, I think a flag would be fine too, and a bit broader -- checking FinalObject was just easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884089</commentid>
    <comment_count>11</comment_count>
      <attachid>200385</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-02 23:17:37 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

Attachment 200385 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/360367</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884181</commentid>
    <comment_count>12</comment_count>
      <attachid>200385</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-03 09:48:09 -0700</bug_when>
    <thetext>Comment on attachment 200385
Patch

I would make replace isStrictMode() with ecmaMode() everywhere and use the new ECMAMode enum -- also maybe use the enum class thingy?  I think that may mitigate accidental enum-&gt;bool conversion, though i&apos;m not 100% sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884257</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-03 11:45:48 -0700</bug_when>
    <thetext>Committed r149527: &lt;http://trac.webkit.org/changeset/149527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884607</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-04 17:16:02 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884608</commentid>
    <comment_count>15</comment_count>
      <attachid>200551</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-04 17:16:05 -0700</bug_when>
    <thetext>Created attachment 200551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884609</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-04 17:17:03 -0700</bug_when>
    <thetext>Attachment 200551 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/Object-defineProperty-expected.txt&apos;, u&apos;LayoutTests/fast/js/script-tests/primitive-property-access-edge-cases.js&apos;, u&apos;LayoutTests/sputnik/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T3-expected.txt&apos;, u&apos;LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T3-expected.txt&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackFunction.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObjectFunctions.h&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSObjectRef.cpp&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.order&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeOrigin.h&apos;, u&apos;Source/JavaScriptCore/bytecode/Opcode.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractState.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCapabilities.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JIT.h&apos;, u&apos;Source/JavaScriptCore/jit/JITOpcodes.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOpcodes32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.h&apos;, u&apos;Source/JavaScriptCore/llint/LLIntData.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.h&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter.asm&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm&apos;, u&apos;Source/JavaScriptCore/llint/LowLevelInterpreter64.asm&apos;, u&apos;Source/JavaScriptCore/profiler/ProfileGenerator.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CallData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ClassInfo.h&apos;, u&apos;Source/JavaScriptCore/runtime/Completion.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/DatePrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/GetterSetter.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/GetterSetter.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSActivation.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSActivation.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValueInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSNameScope.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSNameScope.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSScope.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSString.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSString.h&apos;, u&apos;Source/JavaScriptCore/runtime/PropertySlot.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/PropertySlot.h&apos;, u&apos;Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/StrictEvalActivation.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/StrictEvalActivation.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.order&apos;, u&apos;Source/WebCore/bindings/js/JSErrorHandler.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bridge/NP_jsobject.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/GetterSetter.h:83:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 82 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884610</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-04 17:17:26 -0700</bug_when>
    <thetext>This patch fixes a crash seen in a cyclic prototype regression test. It adds a non-trivial amount of changes to getters and setters, so it probably warrants a re-review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884875</commentid>
    <comment_count>18</comment_count>
      <attachid>200551</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 02:18:12 -0700</bug_when>
    <thetext>Comment on attachment 200551
Patch

Attachment 200551 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/406447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885101</commentid>
    <comment_count>19</comment_count>
      <attachid>200551</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-06 10:18:18 -0700</bug_when>
    <thetext>Comment on attachment 200551
Patch

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

&gt; Source/JavaScriptCore/runtime/GetterSetter.cpp:61
&gt; +
&gt; +    // Unlike other function calls, getter calls are specified to ToObject their base
&gt; +    // at the call site.
&gt; +    JSValue thisValue = base.toThis(exec, NotStrictMode);

Really?  Seems fairly dumb behavior to me :-/

&gt; Source/JavaScriptCore/runtime/JSActivation.cpp:235
&gt; +JSValue JSActivation::toThis(JSCell*, ExecState* exec, ECMAMode ecmaMode)
&gt;  {
&gt; +    if (ecmaMode == StrictMode)
&gt; +        return jsUndefined();
&gt;      return exec-&gt;globalThisValue();

May be faster to simply have this use this-&gt;globalObject() ?

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:88
&gt; +    if (ecmaMode == StrictMode)
&gt; +        return *this;

What if we&apos;re the global object?  we should be returning the proxy - how is this handled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885140</commentid>
    <comment_count>20</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-06 11:27:54 -0700</bug_when>
    <thetext>&gt; Really?  Seems fairly dumb behavior to me :-/

As you pointed out in my office, I read the spec wrong -- the spec mentions ToObject(base), but then says that base, and not ToObject(base), is passed to the getter/setter.

It appears that Firefox&apos;s behavior here is a bug.

&gt; &gt; Source/JavaScriptCore/runtime/JSActivation.cpp:235
&gt; &gt; +JSValue JSActivation::toThis(JSCell*, ExecState* exec, ECMAMode ecmaMode)
&gt; &gt;  {
&gt; &gt; +    if (ecmaMode == StrictMode)
&gt; &gt; +        return jsUndefined();
&gt; &gt;      return exec-&gt;globalThisValue();
&gt; 
&gt; May be faster to simply have this use this-&gt;globalObject() ?

&quot;this-&gt;globalObject()&quot; is no good because it&apos;s not the window shell. You probably meant &quot;this-&gt;globalThis()&quot;.

But I don&apos;t think that would be correct, either. If you have...

Window A:
    function f() { return this; }

Window B:
    (function(f) {
        return (function() {
            return f();
        })();
    })(A.f);

... you should see A.window and not B.window, even though &quot;f&quot; was resolved to an activation in B. In other words, &apos;this&apos; conversion is always performed in the lexical scope of the callee.

&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:88
&gt; &gt; +    if (ecmaMode == StrictMode)
&gt; &gt; +        return *this;
&gt; 
&gt; What if we&apos;re the global object?  we should be returning the proxy - how is this handled?

It may not be clear from diff context, but this is JSValue::toThisSlowCase(), which only handles non-cells (and it ASSERTs as much).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885306</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-06 13:47:37 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/149636&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912999</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-07-30 13:19:36 -0700</bug_when>
    <thetext>This broke a regression test, filed bug 119271.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925095</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-05 10:12:24 -0700</bug_when>
    <thetext>This totally breaks the DFG&apos;s handling of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925096</commentid>
    <comment_count>24</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-05 10:12:53 -0700</bug_when>
    <thetext>Simple test program:

var myFunction = function (arg1) { return [this, &quot;myFunction&quot;, arg1] };

for (var i = 0; i &lt; 1000; ++i) {
    var array = myFunction(&quot;arg&quot;);
    describe(array[0]);
}

Notice that after DFG tier-up we start returning something different than what we returned before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925102</commentid>
    <comment_count>25</comment_count>
      <attachid>200551</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-05 10:21:18 -0700</bug_when>
    <thetext>Comment on attachment 200551
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:657
&gt; -            if (isObjectSpeculation(node-&gt;child1()-&gt;prediction())) {
&gt; +            if (isFinalObjectSpeculation(node-&gt;child1()-&gt;prediction())) {
&gt;                  setUseKindAndUnboxIfProfitable&lt;ObjectUse&gt;(node-&gt;child1());

This is really bad.  This changes the prediction required to use this optimization, but then the check still accepts any object.  So if you had a program that passed FinalObject as this for  while and this kicked in, but then you started passing some weird proxied thing, then all of a sudden you&apos;d start getting bizarre behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925105</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-05 10:23:58 -0700</bug_when>
    <thetext>There are two really hard bugs introduced by this change:

- The DFG&apos;s optimization to turn ToThis into a structure check just doesn&apos;t work anymore.  Well, the DFG keeps doing it, and then you get totally wrong code.  The DFG can&apos;t know based on looking at the Structure whether toThis() will behave normally nor weirdly.  I mean, it could try to compare the toThis entry in the methodTable to something - but then it would still not be able to do any better than a full-blown virtual call in the case that you used &apos;this&apos; inside of a function that is called in global this context!  Anyway, that&apos;s just speculation about the performance regression we&apos;d see if we made the behavior correct - right now the behavior is just wrong.

- The DFG&apos;s optimization to use object checks to see if ToThis passes its argument through still does a generic object check rather than a &quot;are you an object and do you not have weird toThis behavior&quot; check, which would be required for correctness.  Even worse, this optimization is guarded by a prediction check that checks if &apos;this&apos; happened to be a final object according to profiling.  So this is a bug that manifests only when programs flip-flop their behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925210</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-05 14:20:10 -0700</bug_when>
    <thetext>Correctness fixed in http://trac.webkit.org/changeset/155149.  Filed https://bugs.webkit.org/show_bug.cgi?id=120796 for the performance bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200385</attachid>
            <date>2013-05-02 21:50:39 -0700</date>
            <delta_ts>2013-05-04 17:15:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115542-20130502214951.patch</filename>
            <type>text/plain</type>
            <size>84427</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NCBA
QAorMjAxMy0wNS0wMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJhdGlvbmFsaXplZCAndGhpcycgdmFsdWUgY29udmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBmaXhlcyBhIGJ1bmNoIG9mIFNw
dXRuaWsgdGVzdHMuCisKKyAgICAgICAgVGhlIG5ldyBtb2RlbCBpcyB0aGF0IHRoZSBjYWxsZWUg
YWx3YXlzIHBlcmZvcm1zICd0aGlzJyB2YWx1ZSBjb252ZXJzaW9uLgorCisgICAgICAgIE15IHVs
dGltYXRlIGdvYWwgaXMgdG8gYnJlYWsgdXAgcmVzb2x2ZV93aXRoX3RoaXMgaW50byBzaW5nbGUt
cmVzdWx0IAorICAgICAgICBvcGNvZGVzLiBUaGlzIHN0ZXAgYXZvaWRzIGhhdmluZyB0byBhZGQg
YSBuZXcga2luZCBvZiBjb252ZXJ0X3RoaXMgZm9yIAorICAgICAgICBjYWxsIHNpdGVzLgorCisg
ICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Fs
bGJhY2tGdW5jdGlvbjo6Y2FsbCk6IFBlcmZvcm0gJ3RoaXMnIHZhbHVlIGNvbnZlcnNpb24gZm9y
CisgICAgICAgIG91ciBjYWxsZWUsIHNpbmNlIGl0IG1heSBvYnNlcnZlICd0aGlzJy4KKworICAg
ICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6
Y2FsbCk6IERpdHRvLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAg
IChKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKTogVXNlIGEgcHJveHkgJ3RoaXMnIG9iamVj
dCBpbiBnbG9iYWwgc2NvcGUKKyAgICAgICAgZXZlbiB3aGVuIHdlJ3JlIG5vdCBpbiB0aGUgYnJv
d3Nlci4gVGhpcyBlbGltaW5hdGVzIHNvbWUgb2RkIGNhc2VzIHdoZXJlCisgICAgICAgIEFQSSBj
bGllbnRzIHVzZWQgdG8gYmUgYWJsZSB0byBnZXQgYSBkaXJlY3QgcmVmZXJlbmNlIHRvIGFuIGVu
dmlyb25tZW50CisgICAgICAgIHJlY29yZC4gTm93LCBhbnkgcmVmZXJlbmNlIHRvIGFuIGVudmly
b25tZW50IHJlY29yZCB1bmFtYmlndW91c2x5IG1lYW5zCisgICAgICAgIHRoYXQgdGhlIFZNIHJl
c29sdmVkIHRoYXQgcmVjb3JkIGluIHRoZSBzY29wZSBjaGFpbi4KKworICAgICAgICAoSlNDb250
ZXh0R2V0R2xvYmFsT2JqZWN0KTogUmVtb3ZlZCBhbiBpbmNvcnJlY3QgY29tbWVudC4gTm93IHRo
YXQgSlNDCisgICAgICAgIHBhcnRpY2lwYXRlcyBpbiB0aGUgcHJveHkgJ3RoaXMnIG9iamVjdCBz
Y2hlbWUsIHRoZSBiZWhhdmlvciBpcyBub3QKKyAgICAgICAgV2ViQ29yZS1vbmx5LgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUub3JkZXI6IE9yZGVyIQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWY6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUV4cG9ydEdlbmVy
YXRvci9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmLmluOgorICAgICAgICBXaGF0IGFyZSB0aGUg
Y2hhbmNlcyB0aGF0IHRoaXMgd2lsbCB3b3JrPworCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6IFJlbmFtZWQgY29udmVydF90aGlzIHRvIHRv
X3RoaXMsIHRvIG1hdGNoIG91cgorICAgICAgICBvdGhlciBjb252ZXJzaW9uIG9wY29kZXMuCisK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmg6CisgICAgICAgIChDb2RlT3JpZ2luKToK
KyAgICAgICAgKElubGluZUNhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmNv
ZGVPcmlnaW5Pd25lcik6IFVzZSB0aGUgbW9yZSBwcmVjaXNlIHR5cGUgZm9yIG91cgorICAgICAg
ICBleGVjdXRhYmxlLCBzbyBjb21waWxhdGlvbiBjYW4gZGlzY292ZXIgd2hlcmUgd2UncmUgaW4g
c3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6IFVwZGF0ZWQgZm9yIHJlbmFtZS4KKworICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6IEFsd2F5cyBlbWl0IHRvX3RoaXMgd2hlbgorICAg
ICAgICAndGhpcycgaXMgaW4gdXNlIC0tIHN0cmljdCBtb2RlIHN0aWxsIG5lZWRzIHRvIGNvbnZl
cnQgZW52aXJvbm1lbnQKKyAgICAgICAgcmVjb3JkcyB0byAndW5kZWZpbmVkJy4KKworICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dFN0YXRlOjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNv
bXBpbGVPcGNvZGUpOiBVcGRhdGVkIGZvciByZW5hbWVzLgorCisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
IFRpZ2h0ZW5lZCB1cCB0aGlzIGNvZGUgdG8gY29uc2lkZXIKKyAgICAgICAgc3RyaWN0IG1vZGUg
KGEgbmV3IHJlcXVpcmVtZW50KSBhbmQgdG8gY29uc2lkZXIgdGhlIGdsb2JhbCBvYmplY3QgKHdo
aWNoCisgICAgICAgIHdhcyBhbHdheXMgYSByZXF1aXJlbWVudCkuCisKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Z2xvYmFsVGhpc09iamVjdEZv
cik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmV4ZWN1dGFibGVGb3IpOgorICAgICAgICAq
IGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOiBEaXR0by4KKworICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDYWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOiBEb24ndCBBU1NF
UlQgYWJvdXQgJ3RoaXMnIC0tIGl0J3Mgb3VyIGpvYgorICAgICAgICB0byBmaXggaXQgdXAgaWYg
bmVlZGVkLgorCisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhp
cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyk6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190
aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b190aGlzKToKKyAgICAgICAg
KiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6
CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6IFJlbW92ZWQgc3BlY2lhbCBjYXNlIGNvZGUgZm9y
IHZhcmlvdXMga2luZHMgb2YKKyAgICAgICAgY29udmVyc2lvbnMuIFRoZSBiYXNlbGluZSBmYXN0
IHBhdGggaXMgbm93IG9ubHkgZmluYWwgb2JqZWN0cy4gSXQgaHVydAorICAgICAgICBteSBicmFp
biB0byB0aGluayB0aHJvdWdoIGhvdyB0byBrZWVwIHRoZSBvdGhlciBmYXN0IHBhdGhzIHdvcmtp
bmcsIGFuZAorICAgICAgICBvdXIgYmVuY2htYXJrcyBkbyBub3Qgb2JqZWN0LgorCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmFk
ZFBhcmVudEZvckNvbnNvbGVTdGFydCk6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OmNhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6Cisg
ICAgICAgIChNZXRob2RUYWJsZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9KU09O
KToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
QWN0aXZhdGlvbjo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgor
ICAgICAgICAoSlNBY3RpdmF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSk6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhpcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhp
cyk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp0b1RoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNOYW1lU2NvcGU6OnRvVGhpcyk6CisgICAgICAgICogcnVudGlt
ZS9KU05hbWVTY29wZS5oOgorICAgICAgICAoSlNOYW1lU2NvcGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTU2NvcGU6OnJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6ZnVuY3Rp
b25HZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6Cisg
ICAgICAgIChKU0M6OlNwYXJzZUFycmF5RW50cnk6OmdldCk6CisgICAgICAgIChKU0M6OlNwYXJz
ZUFycmF5RW50cnk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjp0b1RoaXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaDoKKyAgICAgICAgKFN0cmljdEV2
YWxBY3RpdmF0aW9uKTogRmlsbGVkIG91dCBydW50aW1lIHN1cHBvcnQgZm9yIGNvbnZlcnRpbmcg
J3RoaXMnCisgICAgICAgIHZhbHVlcyBhcyBuZWVkZWQsIGFjY29yZGluZyB0byB0aGUgc3RyaWN0
bmVzcyBvZiB0aGUgY2FsbGVyLgorCiAyMDEzLTA1LTAyICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IHBvdGVudGlhbCBidWcgaW4gbG9va3VwIGxvZ2ljCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCShyZXZpc2lv
biAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNyw3ICszMzcsNiBAQCBfSlNWYWx1ZVRvT2JqZWN0CiBfX1pO
M0pTQzEyQVBJRW50cnlTaGltQzFFUE5TXzlFeGVjU3RhdGVFYgogX19aTkszSlNDOEpTT2JqZWN0
OHRvT2JqZWN0RVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX0pTQ29udGV4
dEdldEdsb2JhbE9iamVjdAotX19aTkszSlNDOEpTT2JqZWN0MTJ0b1RoaXNPYmplY3RFUE5TXzlF
eGVjU3RhdGVFCiBfSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcKIF9KU09iamVjdEdldFBy
b3BlcnR5CiBfX1pOSzE0T3BhcXVlSlNTdHJpbmcxMGlkZW50aWZpZXJFUE4zSlNDMTJWTUUKQEAg
LTgxMiw5ICs4MTEsNyBAQCBfX1pOM0pTQzE2SlNDYWxsYmFja09iamVjdElOU18yNEpTT2JqZWN0
CiBfX1pOM1dURjlIYXNoVGFibGVJU3Q0cGFpcklOU182UmVmUHRySU5TXzEwU3RyaW5nSW1wbEVF
RWpFUzFfSVM1X1BOM0pTQzdKU1ZhbHVlRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTOV9FRU5T
Nl8yNFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTRIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlND
XzEwSGFzaFRyYWl0c0VOU18xMEhhc2hUcmFpdHNJUzhfRUVFRVNGX0U2cmVoYXNoRWkKIF9KU1Zh
bHVlTWFrZVN0cmluZwogX19aTjNKU0M4VGhpc05vZGUxMmVtaXRCeXRlY29kZUVSTlNfMTdCeXRl
Y29kZUdlbmVyYXRvckVQTlNfMTBSZWdpc3RlcklERQotX19aTjNKU0MzSklUMjBlbWl0X29wX2Nv
bnZlcnRfdGhpc0VQTlNfMTFJbnN0cnVjdGlvbkUKIF9fWk4zSlNDMjNNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjExYnJhbmNoVGVzdDhFTlMwXzE1UmVzdWx0Q29uZGl0aW9uRU5TXzIyQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcklOU18xMlg4NkFzc2VtYmxlckVFN0FkZHJlc3NFTlM0XzEyVHJ1c3RlZElt
bTMyRQotX19aTjNKU0MzSklUMjRlbWl0U2xvd19vcF9jb252ZXJ0X3RoaXNFUE5TXzExSW5zdHJ1
Y3Rpb25FUlBOU18xM1Nsb3dDYXNlRW50cnlFCiBfX1pOM0pTQzhKU09iamVjdDEzdmlzaXRDaGls
ZHJlbkVSTlNfOU1hcmtTdGFja0UKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzdmlzaXRDaGls
ZHJlbkVSTlNfOU1hcmtTdGFja0UKIF9fWk4zSlNDOU1hcmtTdGFjazE0TWFya1N0YWNrQXJyYXlJ
UE5TXzZKU0NlbGxFRTZhcHBlbmRFUktTM18KQEAgLTk4OSw3ICs5ODYsNiBAQCBfX1pUaG4xNl9O
M0pTQzhFdmFsTm9kZUQwRXYKIF9fWk4zSlNDOEV2YWxOb2RlRDBFdgogX19aTjNXVEY3SGFzaE1h
cElOU182UmVmUHRySU5TXzEwU3RyaW5nSW1wbEVFRU4zSlNDMTJXcml0ZUJhcnJpZXJJTlM0XzE0
RXZhbEV4ZWN1dGFibGVFRUVOU18xMFN0cmluZ0hhc2hFTlNfMTBIYXNoVHJhaXRzSVMzX0VFTlM5
X0lTN19FRUUzc2V0RVBTMl9SS1M3XwogX19aTjNXVEY5SGFzaFRhYmxlSU5TXzZSZWZQdHJJTlNf
MTBTdHJpbmdJbXBsRUVFU3Q0cGFpcklTM19OM0pTQzEyV3JpdGVCYXJyaWVySU5TNV8xNEV2YWxF
eGVjdXRhYmxlRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM5X0VFTlNfMTBTdHJpbmdIYXNo
RU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMzX0VFTlNFX0lTOF9FRUVFU0Zf
RTZleHBhbmRFdgotX19aTkszSlNDN0pTVmFsdWUyMHRvVGhpc09iamVjdFNsb3dDYXNlRVBOU185
RXhlY1N0YXRlRQogX19aTjNKU0MxMUludGVycHJldGVyN2V4ZWN1dGVFUE5TXzE0RXZhbEV4ZWN1
dGFibGVFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVpUE5TXzE0U2NvcGVDaGFpbk5vZGVF
CiBfY3RpX29wX3Jlc29sdmUKIF9KU1ZhbHVlTWFrZUJvb2xlYW4KQEAgLTE0MzYsNyArMTQzMiw2
IEBAIF9fWk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvcjExZW1pdFBvc3RJbmMKIF9fWk4zSlNDTDIz
Y3JlYXRlUHJvdG90eXBlUHJvcGVydHlFUk5TXzEyVk1FUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5T
XzEwSlNGdW5jdGlvbkUKIF9fWk5LM0pTQzhOdWxsTm9kZTZpc051bGxFdgogX19aTjNKU0MzSklU
MTdlbWl0X29wX2puZXFfbnVsbEVQTlNfMTFJbnN0cnVjdGlvbkUKLV9jdGlfb3BfY29udmVydF90
aGlzCiBfY3RpX3ZtX2xhenlMaW5rQ29uc3RydWN0CiBfX1pOM0pTQzE4RnVuY3Rpb25FeGVjdXRh
YmxlMjdjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWxFUE5TXzlFeGVjU3RhdGVFUE5TXzE0U2Nv
cGVDaGFpbk5vZGVFCiBfX1pOM0pTQzNKSVQxOGVtaXRfb3BfZ2V0X2NhbGxlZUVQTlNfMTFJbnN0
cnVjdGlvbkUKQEAgLTE1NTgsNyArMTU1Myw2IEBAIF9fWk5LM0pTQzEyUHJvcGVydHlTbG90MTRm
dW5jdGlvbkdldHRlckUKIF9fWk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvcjIwZW1pdEdldEFyZ3Vt
ZW50QnlWYWxFUE5TXzEwUmVnaXN0ZXJJREVTMl9TMl8KIF9fWk4zSlNDM0pJVDI3ZW1pdF9vcF9n
ZXRfYXJndW1lbnRfYnlfdmFsRVBOU18xMUluc3RydWN0aW9uRQogX19aTjNKU0MzSklUMzFlbWl0
U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsRVBOU18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93
Q2FzZUVudHJ5RQotX19aTkszSlNDOEpTU3RyaW5nMTJ0b1RoaXNPYmplY3RFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQ0wyMGFycmF5UHJvdG9GdW5jU3BsaWNlRVBOU185RXhlY1N0YXRlRQogX19a
TjNKU0M3SlNBcnJheTlzZXRMZW5ndGhFagogX19aTjNKU0NMMTFnZXRQcm9wZXJ0eUVQTlNfOUV4
ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RWoKQEAgLTIwMjMsNyArMjAxNyw2IEBAIF9fWk5LM0pTQzE0
RXhwcmVzc2lvbk5vZGUxN2lzRG90QWNjZXNzb3IKIF9fWk4zSlNDOUV4ZWNTdGF0ZTIyc3RyaW5n
Q29uc3RydWN0b3JUYWJsZUVQUzBfCiBfX1pOM0pTQ0wyNnN0cmluZ0Zyb21DaGFyQ29kZVNsb3dD
YXNlRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0NMMjVzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0
RVBOU185RXhlY1N0YXRlRQotX19aTkszSlNDMTJKU0FjdGl2YXRpb24xMnRvVGhpc09iamVjdEVQ
TlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QxOWdldE93blByb3BlcnR5TmFt
ZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlv
bk1vZGVFCiBfX1pOM0pTQzlFeGVjU3RhdGUxMXN0cmluZ1RhYmxlRVBTMF8KIF9fWk4zSlNDMTJT
dHJpbmdPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRQpAQCAtMjI3MCw4ICsyMjYzLDYgQEAgX19aTjNKU0MxMkpTQWN0aXZhdGlvbjE4Z2V0QXJn
dW1lbnRzR2V0dAogX19aTjNKU0MxMkpTQWN0aXZhdGlvbjE1YXJndW1lbnRzR2V0dGVyRVBOU185
RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0NMMjBhcnJh
eVByb3RvRnVuY1JlZHVjZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDTDI1YXJyYXlQcm90b0Z1
bmNSZWR1Y2VSaWdodEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDM0pJVDI3ZW1pdF9vcF9jb252
ZXJ0X3RoaXNfc3RyaWN0RVBOU18xMUluc3RydWN0aW9uRQotX19aTjNKU0MzSklUMzFlbWl0U2xv
d19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0RVBOU18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93Q2Fz
ZUVudHJ5RQogX19aTjNKU0M5QXJndW1lbnRzMzNjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNl
c3NhcnlFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzIzY3JlYXRlVHlwZUVycm9yRnVuY3Rpb25F
UE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zSlNDMThQcm9wZXJ0eURlc2NyaXB0
b3IyMXNldEFjY2Vzc29yRGVzY3JpcHRvckVOU183SlNWYWx1ZUVTMV9qCkBAIC0yMzQwLDcgKzIz
MzEsNiBAQCBfX1pOM0pTQ0wyNW9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWRFUE5TCiBfX1pOM0pT
Q0wyNW9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW5FUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQ0wy
OW9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M0
WWFycjI1Q2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcjlhZGRTb3J0ZWRFUk4zV1RGNlZlY3Rvckl0
TG0wRUVFdAotX19aTkszSlNDMTlKU1N0YXRpY1Njb3BlT2JqZWN0MTJ0b1RoaXNPYmplY3RFUE5T
XzlFeGVjU3RhdGVFCiBfX1pOM0pTQ0wyM3N0cmluZ1Byb3RvRnVuY1RyaW1MZWZ0RVBOU185RXhl
Y1N0YXRlRQogX19aTjNKU0NMMjRzdHJpbmdQcm90b0Z1bmNUcmltUmlnaHRFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM1dURjZWZWN0b3JJY0xtMEVFMTRleHBhbmRDYXBhY2l0eUVtCkBAIC0yMzUwLDcg
KzIzNDAsNiBAQCBfX1pOSzNXVEY4Q29sbGF0b3I3Y29sbGF0ZUVQS3RtUzJfbQogX19aTkszV1RG
OENvbGxhdG9yMTRjcmVhdGVDb2xsYXRvckV2CiBfX1pOM1dURjhDb2xsYXRvckQxRXYKIF9fWk4z
V1RGOENvbGxhdG9yMTVyZWxlYXNlQ29sbGF0b3JFdgotX19aTkszSlNDMjBTdHJpY3RFdmFsQWN0
aXZhdGlvbjEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNUlkZW50aWZp
ZXJBcmVuYTIxbWFrZU51bWVyaWNJZGVudGlmaWVyRVBOU18xMlZNRWQKIF9fWk4zSlNDNkpTQ2Vs
bDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVFUk5TXzE1
UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M2SlNDZWxsM3B1dEVQTlNfOUV4ZWNTdGF0ZUVqTlNf
N0pTVmFsdWVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5j
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKAogewogICAgIEpT
Q29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rp
b25SZWYgPSB0b1JlZihleGVjLT5jYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJl
ZiA9IHRvUmVmKGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhlYykpOworICAg
IEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT5o
b3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CiAKICAgICBzaXpl
X3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBWZWN0b3I8SlNW
YWx1ZVJlZiwgMTY+IGFyZ3VtZW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxNDk1MTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDkwLDcgKzQ5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50PjoKIHsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVm
KGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoZXhlYy0+Y2FsbGVl
KCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihleGVjLT5ob3N0VGhpc1Zh
bHVlKCkudG9UaGlzT2JqZWN0KGV4ZWMpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0g
dG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVj
LCBOb3RTdHJpY3RNb2RlKSkpOwogICAgIAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xh
c3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAg
ICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBq
c0NsYXNzLT5jYWxsQXNGdW5jdGlvbikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1
LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZQogCiAgICAgaWYg
KCFnbG9iYWxPYmplY3RDbGFzcykgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqdm0sIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnNldEdsb2Jh
bFRoaXMoKnZtLCBKU1Byb3h5OjpjcmVhdGUoKnZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUo
KnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCkpLCBnbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dFJldGFpbih0b0dsb2JhbFJlZihn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkpOwogICAgIH0KIApAQCAtMTgyLDggKzE4Myw3IEBA
IEpTT2JqZWN0UmVmIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChKU0MKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAot
ICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjYWxsIHRvVGhpc09iamVjdCB0byBnZXQgdGhlIHdy
YXBwZXIgb2JqZWN0IHdoZW4gdXNlZCB3aXRoIFdlYkNvcmUuCi0gICAgcmV0dXJuIHRvUmVmKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYykpOworICAgIHJldHVybiB0b1JlZihqc0Nh
c3Q8SlNPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1ldGhvZFRhYmxlKCkt
PnRvVGhpcyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMsIE5vdFN0cmljdE1vZGUp
KSk7CiB9CiAKIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJl
ZiBjdHgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlRXhwb3J0cy5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTUxNyw5ICs1MTcsNiBAQCBF
WFBPUlRTCiAgICAgP3RvU3RyaW5nRGVjaW1hbEBEZWNpbWFsTnVtYmVyQFdURkBAUUJFSVBBRUlA
WgogICAgID90b1N0cmluZ0V4cG9uZW50aWFsQERlY2ltYWxOdW1iZXJAV1RGQEBRQkVJUEFFSUBa
CiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VASlNWYWx1ZUBKU0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFW
RXhlY1N0YXRlQDJAQFoKLSAgICA/dG9UaGlzT2JqZWN0QEpTR2xvYmFsT2JqZWN0QEpTQ0BAS0FQ
QVZKU09iamVjdEAyQFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCi0gICAgP3RvVGhpc09i
amVjdEBKU09iamVjdEBKU0NAQFNBUEFWMTJAUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQFoK
LSAgICA/dG9UaGlzT2JqZWN0U2xvd0Nhc2VASlNWYWx1ZUBKU0NAQEFCRVBBVkpTT2JqZWN0QDJA
UEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9VSW50NjRAU3RyaW5nQFdURkBAUUJFX0tQQV9OQFoK
ICAgICA/dG9VSW50QFN0cmluZ0BXVEZAQFFCRUlQQV9OQFoKICAgICA/dG9VSW50U3RyaWN0QFN0
cmluZ0BXVEZAQFFCRUlQQV9OSEBaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUV4cG9ydEdlbmVyYXRvci9KYXZhU2NyaXB0
Q29yZUV4cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0R2VuZXJhdG9yL0phdmFT
Y3JpcHRDb3JlRXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0R2Vu
ZXJhdG9yL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTUx
Niw5ICs1MTYsNiBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nRGVjaW1hbEBEZWNpbWFsTnVtYmVy
QFdURkBAUUJFSVBBRUlAWgogICAgID90b1N0cmluZ0V4cG9uZW50aWFsQERlY2ltYWxOdW1iZXJA
V1RGQEBRQkVJUEFFSUBaCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VASlNWYWx1ZUBKU0NAQEFCRVBB
VkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKLSAgICA/dG9UaGlzT2JqZWN0QEpTR2xvYmFs
T2JqZWN0QEpTQ0BAS0FQQVZKU09iamVjdEAyQFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEBa
Ci0gICAgP3RvVGhpc09iamVjdEBKU09iamVjdEBKU0NAQFNBUEFWMTJAUEFWSlNDZWxsQDJAUEFW
RXhlY1N0YXRlQDJAQFoKLSAgICA/dG9UaGlzT2JqZWN0U2xvd0Nhc2VASlNWYWx1ZUBKU0NAQEFC
RVBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9VSW50NjRAU3RyaW5nQFdU
RkBAUUJFX0tQQV9OQFoKICAgICA/dG9VSW50QFN0cmluZ0BXVEZAQFFCRUlQQV9OQFoKICAgICA/
dG9VSW50U3RyaWN0QFN0cmluZ0BXVEZAQFFCRUlQQV9OSEBaCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc0MSw5ICs3NDEsOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50
U3RyZWFtCiAgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBjcmVhdGVfdGhpcyAlcywgJXMs
ICV1IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZXhlYywgcjEpLmRhdGEoKSwgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2NvbnZlcnRfdGhpczogeworICAg
ICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gY29udmVydF90aGlzXHQgJXMi
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiWyU0ZF0gdG9fdGhpc1x0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgICsraXQ7IC8vIFNraXAgdmFsdWUgcHJvZmls
ZS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNzkzLDcgKzE3OTMsNyBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmls
ZUluZGV4XTsKICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9jb252ZXJ0X3RoaXM6CisgICAgICAgIGNhc2Ugb3BfdG9fdGhpczoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OgogICAg
ICAgICBjYXNlIG9wX2dldF9jYWxsZWU6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIGNsYXNz
IEV4ZWNTdGF0ZTsKLWNsYXNzIEV4ZWN1dGFibGVCYXNlOworY2xhc3MgU2NyaXB0RXhlY3V0YWJs
ZTsKIGNsYXNzIEpTRnVuY3Rpb247CiAKIHN0cnVjdCBDb2RlT3JpZ2luIHsKQEAgLTgyLDcgKzgy
LDcgQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIC8vIElmIHRoZSBjb2RlIG9yaWdp
biBjb3JyZXNwb25kcyB0byBpbmxpbmVkIGNvZGUsIGdpdmVzIHlvdSB0aGUgaGVhcCBvYmplY3Qg
dGhhdAogICAgIC8vIHdvdWxkIGhhdmUgb3duZWQgdGhlIGNvZGUgaWYgaXQgaGFkIG5vdCBiZWVu
IGlubGluZWQuIE90aGVyd2lzZSByZXR1cm5zIDAuCi0gICAgRXhlY3V0YWJsZUJhc2UqIGNvZGVP
cmlnaW5Pd25lcigpIGNvbnN0OworICAgIFNjcmlwdEV4ZWN1dGFibGUqIGNvZGVPcmlnaW5Pd25l
cigpIGNvbnN0OwogICAgIAogICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0KCkgY29uc3Q7CiAgICAg
CkBAIC0xMDAsNyArMTAwLDcgQEAgc3RydWN0IENvZGVPcmlnaW4gewogCiBzdHJ1Y3QgSW5saW5l
Q2FsbEZyYW1lIHsKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOwotICAgIFdy
aXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gZXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8
U2NyaXB0RXhlY3V0YWJsZT4gZXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gY2FsbGVlOyAvLyBUaGlzIG1heSBiZSBudWxsLCBpbmRpY2F0aW5nIHRoYXQgdGhpcyBpcyBh
IGNsb3N1cmUgY2FsbCBhbmQgdGhhdCB0aGUgSlNGdW5jdGlvbiBhbmQgSlNTY29wZSBhcmUgYWxy
ZWFkeSBvbiB0aGUgc3RhY2suCiAgICAgQ29kZU9yaWdpbiBjYWxsZXI7CiAgICAgQml0VmVjdG9y
IGNhcHR1cmVkVmFyczsgLy8gSW5kZXhlZCBieSB0aGUgbWFjaGluZSBjYWxsIGZyYW1lJ3MgdmFy
aWFibGUgbnVtYmVyaW5nLgpAQCAtMTQ5LDcgKzE0OSw3IEBAIGlubGluZSB1bnNpZ25lZCBnZXRD
YWxsUmV0dXJuT2Zmc2V0Rm9yQ28KICAgICByZXR1cm4gZGF0YS0+Y2FsbFJldHVybk9mZnNldDsK
IH0KIAotaW5saW5lIEV4ZWN1dGFibGVCYXNlKiBDb2RlT3JpZ2luOjpjb2RlT3JpZ2luT3duZXIo
KSBjb25zdAoraW5saW5lIFNjcmlwdEV4ZWN1dGFibGUqIENvZGVPcmlnaW46OmNvZGVPcmlnaW5P
d25lcigpIGNvbnN0CiB7CiAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgIHJldHVy
biAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNp
b24gMTQ5NTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3Jv
KG9wX2NyZWF0ZV9hcmd1bWVudHMsIDIpIFwKICAgICBtYWNybyhvcF9jcmVhdGVfdGhpcywgNCkg
XAogICAgIG1hY3JvKG9wX2dldF9jYWxsZWUsIDMpIFwKLSAgICBtYWNybyhvcF9jb252ZXJ0X3Ro
aXMsIDMpIFwKKyAgICBtYWNybyhvcF90b190aGlzLCAzKSBcCiAgICAgXAogICAgIG1hY3JvKG9w
X25ld19vYmplY3QsIDQpIFwKICAgICBtYWNybyhvcF9uZXdfYXJyYXksIDUpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkz
LDggKzM5Myw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAog
ICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhp
c1JlZ2lzdGVyKTsKLSAgICB9IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpICYm
IChmdW5jdGlvbkJvZHktPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IG1f
c2hvdWxkRW1pdERlYnVnSG9va3MpKSB7Ci0gICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHBy
b2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY29udmVydF90aGlzKTsKKyAgICB9IGVsc2Ug
aWYgKGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwg
bV9zaG91bGRFbWl0RGVidWdIb29rcykgeworICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBw
cm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3RvX3RoaXMpOwogICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0
cyh1bnNpZwogICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICBjYXNlIENvbnZlcnRUaGlzOiB7CisgICAgY2FzZSBUb1RoaXM6
IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsK
ICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAwLDkg
KzIwMDAsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICAgICAgc2V0KGksIGNvbnN0YW50VW5kZWZpbmVkKCksIFNldE9uRW50cnkpOwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfZW50ZXIpOwogCi0gICAgICAgIGNhc2Ugb3BfY29udmVy
dF90aGlzOiB7CisgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAgTm9kZSog
b3AxID0gZ2V0VGhpcygpOwotICAgICAgICAgICAgaWYgKG9wMS0+b3AoKSAhPSBDb252ZXJ0VGhp
cykgeworICAgICAgICAgICAgaWYgKG9wMS0+b3AoKSAhPSBUb1RoaXMpIHsKICAgICAgICAgICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPQogICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KG1fY3VycmVudFByb2ZpbGluZ0luZGV4KTsKICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKQEAgLTIwMTUsNyArMjAxNSw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgfHwgIXBy
b2ZpbGUtPm1fc2luZ2xldG9uVmFsdWUKICAgICAgICAgICAgICAgICAgICAgfHwgIXByb2ZpbGUt
Pm1fc2luZ2xldG9uVmFsdWUuaXNDZWxsKCkKICAgICAgICAgICAgICAgICAgICAgfHwgcHJvZmls
ZS0+bV9zaW5nbGV0b25WYWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgIT0gJlN0cnVjdHVyZTo6
c19pbmZvKQotICAgICAgICAgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoQ29udmVydFRo
aXMsIG9wMSkpOworICAgICAgICAgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlz
LCBvcDEpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaCgKICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrU3RydWN0dXJlLApAQCAtMjAy
Myw3ICsyMDIzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgICAgICAgICAgICAgb3AxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb252ZXJ0X3RoaXMpOworICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfdG9fdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2NyZWF0ZV90aGlzOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2RlKAogewogICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2VudGVyOgotICAgIGNhc2Ugb3BfY29udmVydF90aGlz
OgorICAgIGNhc2Ugb3BfdG9fdGhpczoKICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOgogICAgIGNh
c2Ugb3BfZ2V0X2NhbGxlZToKICAgICBjYXNlIG9wX2JpdGFuZDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjM1LDggKzYzNSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIENvbnZlcnRUaGlzOiB7CisgICAgICAg
IGNhc2UgVG9UaGlzOiB7CisgICAgICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGgu
ZXhlY3V0YWJsZUZvcihub2RlLT5jb2RlT3JpZ2luKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RN
b2RlIDogTm90U3RyaWN0TW9kZTsKKwogICAgICAgICAgICAgaWYgKGlzT3RoZXJTcGVjdWxhdGlv
bihub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgICAgIGlmIChl
Y21hTW9kZSA9PSBTdHJpY3RNb2RlKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFVzZUtpbmRB
bmRVbmJveElmUHJvZml0YWJsZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIFBoYW50b20sIG5vZGUtPmNvZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVk
Z2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBPdGhlclVzZSkpOwpAQCAtNjQ1LDcgKzY1Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChpc09iamVjdFNwZWN1bGF0aW9uKG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICBpZiAoaXNGaW5hbE9iamVjdFNwZWN1bGF0
aW9uKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgc2V0
VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lv
biAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1NSwxMCArMzU1LDEwIEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogZ2xv
YmFsVGhpc09iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogb2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwotICAg
ICAgICByZXR1cm4gb2JqZWN0LT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3Qob2JqZWN0LCAw
KTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+dG9UaGlzKG9iamVjdCwgb2JqZWN0LT5nbG9iYWxFeGVjKCksIE5vdFN0cmljdE1vZGUpKTsK
ICAgICB9CiAgICAgCi0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGVGb3IoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCisgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJs
ZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKTsKQEAgLTM2Niw3ICszNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBpbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCk7CiAgICAgfQogICAgIAotICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4p
CisgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGVGb3IoY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSWRlbnRpdHksIE5vZGVSZXN1
bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgaGFuZGxpbmcgZnVuY3Rpb25zIChib3Ro
IGFzIGNhbGwgYW5kIGFzIGNvbnN0cnVjdCkuICovXAotICAgIG1hY3JvKENvbnZlcnRUaGlzLCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhUb1RoaXMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1h
Y3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRKUykgLyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2Vu
ZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5nIGl0IGFueXdheS4gKi8gXAogICAgIG1hY3JvKEdl
dENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0Q2FsbGVlLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSwxMiArMzQxLDEyIEBAIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgREZHX09QRVJBVElPTiAKIAogZXh0ZXJuICJDIiB7CiAKLUVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydFRoaXMoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCitFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzT2JqZWN0KGV4ZWMpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3Ry
aWN0TW9kZSkpOwogfQogCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhp
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgaW50MzJfdCBpbmxpbmVD
YXBhY2l0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIEpTQ2VsbCogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm8KIC8vIFRoZXNlIHJvdXRpbmVzIGFyZSBwcm92aWRl
IGNhbGxiYWNrcyBvdXQgdG8gQysrIGltcGxlbWVudGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBj
b21wbGV4IHRvIEpJVC4KIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3Qo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9y
LCBpbnQzMl90IGlubGluZUNhcGFjaXR5KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnRUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uVG9UaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkp
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNDk1
MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ29udmVydFRoaXM6
IHsKKyAgICAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgaWYg
KHByZWRpY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIH5TcGVjT2Jq
ZWN0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2ODIsNyArMzY4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENvbnZlcnRUaGlz
OiB7CisgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKIAogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzY5Myw3ICszNjkzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgR1BSUmVz
dWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgIEdQUlJlc3VsdCByZXN1bHRQYXlsb2FkKHRo
aXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRUaGlzLCByZXN1bHRU
YWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIHRoaXNWYWx1ZVRhZ0dQUiwgdGhpc1ZhbHVl
UGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9UaGlzLCByZXN1
bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIHRoaXNWYWx1ZVRhZ0dQUiwgdGhpc1Zh
bHVlUGF5bG9hZEdQUik7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdFBheWxv
YWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTQ5NTE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzU5Miw3ICszNTkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAg
IGNhc2UgQ29udmVydFRoaXM6IHsKKyAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJSZWcg
dGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwpAQCAtMzYwMCw3ICszNjAwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICAKICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0VGhpcywgcmVzdWx0LmdwcigpLCB0aGlz
VmFsdWVHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvVGhpcywgcmVzdWx0
LmdwcigpLCB0aGlzVmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTQ5NTE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKICAgICB9CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxlckZyYW1l
LT50aGlzVmFsdWUoKTsKLSAgICBBU1NFUlQoaXNWYWxpZFRoaXNPYmplY3QodGhpc1ZhbHVlLCBj
YWxsRnJhbWUpKTsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjYWxsRnJhbWUtPnZt
KCkuaW50ZXJwcmV0ZXI7CiAgICAgcmV0dXJuIGludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNh
bGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29wZUNoYWluKTsKIH0KQEAgLTgyMiw3ICs4MjEs
NiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAgICAgSlNTY29w
ZSogc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgp
OwogCi0gICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNPYmosIGNhbGxGcmFtZSkpOwog
ICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eSgpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCkBAIC05ODgsNyArOTg2LDYgQEAg
ZmFpbGVkSlNPTlA6CiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3Qg
Q2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJn
cykKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Ci0gICAgQVNTRVJUKGlzVmFsaWRU
aGlzT2JqZWN0KHRoaXNWYWx1ZSwgY2FsbEZyYW1lKSk7CiAgICAgQVNTRVJUKCFjYWxsRnJhbWUt
PmhhZEV4Y2VwdGlvbigpKTsKICAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAg
ICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCkBAIC0xMjQ4LDcgKzEyNDUsNiBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAgICAgU2FtcGxpbmdTY29wZSBzYW1w
bGluZ1Njb3BlKHRoaXMpOwogICAgIAogICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZy
YW1lLT52bSgpKTsKLSAgICBBU1NFUlQoaXNWYWxpZFRoaXNPYmplY3QodGhpc1ZhbHVlLCBjYWxs
RnJhbWUpKTsKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCF2bS5pc0Nv
bGxlY3RvckJ1c3koKSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlz
aW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsMTIgKzI3MCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAgICAgfTsKIAotICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgYW4gb2Jq
ZWN0IHRoYXQgd291bGQgcmVxdWlyZSB0aGlzIGNvbnZlcnNpb24gKFdlYkNvcmUncyBnbG9iYWwg
b2JqZWN0KS4KLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkVGhpc09iamVjdChKU1ZhbHVlIHRoaXNW
YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgcmV0dXJuICF0aGlzVmFsdWUu
aXNPYmplY3QoKSB8fCB0aGlzVmFsdWUudG9UaGlzT2JqZWN0KGV4ZWMpID09IHRoaXNWYWx1ZTsK
LSAgICB9Ci0KICAgICBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKik7CiAgICAgQ2FsbEZyYW1lKiBs
b2FkVmFyYXJncyhDYWxsRnJhbWUqLCBKU1N0YWNrKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUgYXJndW1lbnRzLCBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1
Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfY2FsbGVlKQogICAgICAgICBERUZJTkVfT1Ao
b3BfY3JlYXRlX3RoaXMpCi0gICAgICAgIERFRklORV9PUChvcF9jb252ZXJ0X3RoaXMpCisgICAg
ICAgIERFRklORV9PUChvcF90b190aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5pdF9sYXp5
X3JlZykKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hcmd1bWVudHMpCiAgICAgICAgIERF
RklORV9PUChvcF9kZWJ1ZykKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY2FsbF9ldmFs
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY2FsbF92YXJhcmdzKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0KQotICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfY29udmVydF90aGlzKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdG9fdGhp
cykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfZGl2KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
ZXEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE0OTUxNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY1Myw3ICs2
NTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVi
dWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVj
dGlvbiopOwpAQCAtNzU2LDcgKzc1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2NhbGxfZXZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyhJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NyZWF0ZV90aGlzKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE4MCw0NiArMTE4MCwyOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3Ro
aXMoSW5zdHJ1CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGVtaXRMb2FkKHRoaXNSZWdpc3Rl
ciwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwogICAgIGlmIChz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwogICAgICAgICBtb3ZlKHJlZ1QzLCBy
ZWdUMSk7CiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICB9Ci0gICAgYWRk
U2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgU3RydWN0
dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUp
KSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAg
dm9pZCogZ2xvYmFsVGhpcyA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsVGhp
cygpOwogICAgIHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgaWYgKHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpLCByZWdUMSk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0g
ICAgfQotICAgIEp1bXAgaXNOb3RVbmRlZmluZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKLSAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbFRoaXMpLCByZWdUMCk7
Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsKLSAgICBl
bWl0U3RvcmUodGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwotICAgIGVtaXRKdW1wU2xvd1Rv
SG90KGp1bXAoKSwgT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpKTsKLQogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7Ci0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpLCByZWdUMCk7Ci0g
ICAgfQotICAgIGlzTm90VW5kZWZpbmVkLmxpbmsodGhpcyk7Ci0gICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZSgpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0
X3RoaXMpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF90b190aGlzKTsK
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMywgcmVnVDIpOwogICAgIHN0dWJDYWxsLmNh
bGwodGhpc1JlZ2lzdGVyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg3LDE2ICs4ODcsMTYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5pdF9sYXp5X3JlZyhJbnN0cnVjdAogICAgIHN0b3JlNjQoVHJ1c3Rl
ZEltbTY0KChpbnQ2NF90KTApLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVn
aXN0ZXIpICogZHN0KSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDEpOwogCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKLSAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmco
KSkKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwotICAgIH0KLSAgICBhZGRTbG93
Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVy
ZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC05NTIsMjUgKzk1MiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9m
aWxlX2RpZF9jYWxsKEluc3RyCiAKIC8vIFNsb3cgY2FzZXMKIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3Rv
X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB2b2lkKiBnbG9iYWxUaGlzID0gbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7Ci0KICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7Ci0gICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tNjQoKEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpLCByZWdUMCk7Ci0gICAgSnVt
cCBpc05vdFVuZGVmaW5lZCA9IGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOwotICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShz
dGF0aWNfY2FzdDxKU0NlbGwqPihnbG9iYWxUaGlzKSkpKSwgcmVnVDApOwotICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwot
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3Ro
aXMpKTsKLQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZygpKQotICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUobV92bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSksIHJlZ1QwKTsKLSAgICBpc05vdFVuZGVmaW5lZC5saW5r
KHRoaXMpOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKLSAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90aGlzKTsKKyAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfdG9fdGhpcyk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVn
VDEpOwogICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24g
MTQ5NTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOTksMTYgKzEzOTksMTQgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wXwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2NvbnZlcnRfdGhpcykK
K0RFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF90b190aGlzKQogewogICAg
IFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAgIEpTVmFsdWUgdjEgPSBz
dGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
c3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7Ci0K
LSAgICBKU09iamVjdCogcmVzdWx0ID0gdjEudG9UaGlzT2JqZWN0KGNhbGxGcmFtZSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB2MS50b1RoaXMoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKTsKICAgICBD
SEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlz
aW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMwLDcgKzMzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF9jYWxsX2V2YWwKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3Rf
Tm90SlNDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY2hlY2tfaGFzX2luc3RhbmNlKFNUVUJfQVJHU19E
RUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29w
X2NyZWF0ZV90aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NvbnZlcnRfdGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF90b190aGlz
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X1NUVUIgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZGVsX2J5X2lkKFNUVUJf
QVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIg
Y3RpX29wX2RlbF9ieV92YWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24g
MTQ5NTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRp
b25zKFZNJiB2bSkKICNlbmRpZgogICAgIEFTU0VSVChTdHJpbmdUeXBlID09IDUpOwogICAgIEFT
U0VSVChPYmplY3RUeXBlID09IDE3KTsKKyAgICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDE4
KTsKICAgICBBU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAxKTsKICAgICBBU1NFUlQo
SW1wbGVtZW50c0hhc0luc3RhbmNlID09IDIpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlID09IDgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTEs
MTYgKzQ5MSwxNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX3RoCiAg
ICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOwog
fQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29udmVydF90aGlzKQorTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
ICAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwotICAgIEFTU0VSVCh2MS5p
c1ByaW1pdGl2ZSgpKTsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcGNbT1BDT0RF
X0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPQor
ICAgIHBjW09QQ09ERV9MRU5HVEgob3BfdG9fdGhpcykgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0
c1swXSA9CiAgICAgICAgIEpTVmFsdWU6OmVuY29kZSh2MS5zdHJ1Y3R1cmVPclVuZGVmaW5lZCgp
KTsKICNlbmRpZgotICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworICAg
IExMSU5UX1JFVFVSTih2MS50b1RoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsKIH0KIAogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw3ICsxMTgsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Nv
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9u
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50
cyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsK
LUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29udmVydF90aGlzKTsKK0xM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fdGhpcyk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzk2LDE5ICszOTYs
MTkgQEAgX2xsaW50X29wX2dldF9jYWxsZWU6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxpbnRf
b3BfY29udmVydF90aGlzOgorX2xsaW50X29wX3RvX3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
Q2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBi
YmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5
cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKICAg
ICBsb2FkaSA4W1BDXSwgdDEKICAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywgdDAsIHQxKQogICAg
IGRpc3BhdGNoKDMpCiAKLS5vcENvbnZlcnRUaGlzU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9jb252ZXJ0X3RoaXMpCisub3BUb1RoaXNTbG93OgorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgZGlzcGF0Y2goMykKIAogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI3OSwxOSAr
Mjc5LDE5IEBAIF9sbGludF9vcF9nZXRfY2FsbGVlOgogICAgIGRpc3BhdGNoKDMpCiAKIAotX2xs
aW50X29wX2NvbnZlcnRfdGhpczoKK19sbGludF9vcF90b190aGlzOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAgbG9hZHEgW2Nmciwg
dDAsIDhdLCB0MAotICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAg
ICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgYmJuZXEg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0
VHlwZSwgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQxKQogICAg
IHZhbHVlUHJvZmlsZSh0MCwgdDEpCiAgICAgZGlzcGF0Y2goMykKIAotLm9wQ29udmVydFRoaXNT
bG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NvbnZlcnRfdGhpcykKKy5v
cFRvVGhpc1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fdGhpcykK
ICAgICBkaXNwYXRjaCgzKQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE0OTUxNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNvbnN0IFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSA9IDMwCiAjIFR5cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDUKIGNvbnN0IE9i
amVjdFR5cGUgPSAxNworY29uc3QgRmluYWxPYmplY3RUeXBlID0gMTgKIAogIyBUeXBlIGZsYWdz
IGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3Bw
CShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBQ
cm9maWxlR2VuZXJhdG9yOjphZGRQYXJlbnRGb3JDb25zbwogICAgIEpTVmFsdWUgZnVuY3Rpb247
CiAKICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoZXhlYywgbGlu
ZU51bWJlciwgc291cmNlSUQsIHNvdXJjZVVSTCwgZnVuY3Rpb24pOwotICAgIG1fY3VycmVudE5v
ZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKGV4ZWMsIExlZ2FjeVByb2ZpbGVyOjpjcmVhdGVDYWxs
SWRlbnRpZmllcihleGVjLCBmdW5jdGlvbiA/IGZ1bmN0aW9uLnRvVGhpc09iamVjdChleGVjKSA6
IDAsIHNvdXJjZVVSTCwgbGluZU51bWJlciksIG1faGVhZC5nZXQoKSwgbV9oZWFkLmdldCgpKTsK
KyAgICBtX2N1cnJlbnROb2RlID0gUHJvZmlsZU5vZGU6OmNyZWF0ZShleGVjLCBMZWdhY3lQcm9m
aWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb24sIHNvdXJjZVVSTCwgbGlu
ZU51bWJlciksIG1faGVhZC5nZXQoKSwgbV9oZWFkLmdldCgpKTsKICAgICBtX2hlYWQtPmluc2Vy
dE5vZGUobV9jdXJyZW50Tm9kZS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0
YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewog
ICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTIHx8IGNhbGxUeXBlID09IENhbGxUeXBl
SG9zdCk7Ci0gICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgZXhlYykpOwog
ICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlQ2FsbChleGVjLCBhc09iamVj
dChmdW5jdGlvbk9iamVjdCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJl
dmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw4IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7
CiAgICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0aW9uUHRy
KShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXg7CiAKLSAgICB0eXBlZGVmIEpTT2JqZWN0KiAoKlRvVGhpc09iamVjdEZ1bmN0aW9uUHRyKShK
U0NlbGwqLCBFeGVjU3RhdGUqKTsKLSAgICBUb1RoaXNPYmplY3RGdW5jdGlvblB0ciB0b1RoaXNP
YmplY3Q7CisgICAgdHlwZWRlZiBKU1ZhbHVlICgqVG9UaGlzRnVuY3Rpb25QdHIpKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKKyAgICBUb1RoaXNGdW5jdGlvblB0ciB0b1RoaXM7CiAK
ICAgICB0eXBlZGVmIEpTVmFsdWUgKCpEZWZhdWx0VmFsdWVGdW5jdGlvblB0cikoY29uc3QgSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBEZWZhdWx0
VmFsdWVGdW5jdGlvblB0ciBkZWZhdWx0VmFsdWU7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3RydWN0
IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdCwgXAogICAgICAgICAm
Q2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCi0gICAgICAgICZDbGFzc05h
bWU6OnRvVGhpc09iamVjdCwgXAorICAgICAgICAmQ2xhc3NOYW1lOjp0b1RoaXMsIFwKICAgICAg
ICAgJkNsYXNzTmFtZTo6ZGVmYXVsdFZhbHVlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93
blByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgSlNW
YWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IAogCiAgICAgaWYgKCF0aGlzVmFs
dWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHRoaXNWYWx1ZSA9
IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRo
aXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBqc0Nh
c3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUocHJvZ3JhbSwg
ZXhlYywgdGhpc09iaik7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKLSAgICBKU09iamVjdCogb2JqZWN0
ID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
anNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI4LDggKzIyOCwxMCBAQCBib29sIEpTQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKLUpTT2JqZWN0KiBKU0FjdGl2YXRpb246OnRvVGhpc09iamVjdChKU0NlbGwqLCBF
eGVjU3RhdGUqIGV4ZWMpCitKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6dG9UaGlzKEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CisgICAgaWYgKGVjbWFNb2RlID09
IFN0cmljdE1vZGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBl
eGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKIAotICAgICAgICBzdGF0aWMgSlNP
YmplY3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKKyAgICAgICAgc3RhdGlj
IEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAogICAgICAg
ICB2b2lkIHRlYXJPZmYoVk0mKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgwLDEwICs4MCwxMyBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVj
CiAgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotSlNPYmplY3Qq
IEpTVmFsdWU6OnRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0pT
VmFsdWUgSlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9kZSBl
Y21hTW9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKIAorICAgIGlmIChlY21h
TW9kZSA9PSBTdHJpY3RNb2RlKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKICAgICBpZiAoaXNJ
bnQzMigpIHx8IGlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1Ry
dWUoKSB8fCBpc0ZhbHNlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgc3Ry
dWN0IE1ldGhvZFRhYmxlOwogdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFdyaXRlQmFycmllckJh
c2U7CiAKIGVudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB7IE5vUHJlZmVyZW5jZSwgUHJlZmVy
TnVtYmVyLCBQcmVmZXJTdHJpbmcgfTsKLQorZW51bSBFQ01BTW9kZSB7IFN0cmljdE1vZGUsIE5v
dFN0cmljdE1vZGUgfTsKIAogdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOwogICAgIApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dFRvUHJpbWl0aXZlQnlJbmRl
eChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIHZvaWQgcHV0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgSlNPYmplY3QqIHRvVGhp
c09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvVGhpcyhFeGVjU3RhdGUq
LCBFQ01BTW9kZSkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChFeGVjU3RhdGUqLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHBy
aXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nU2xvd0Nhc2Uo
RXhlY1N0YXRlKikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcgdG9X
VEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCop
IGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93
Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRv
VGhpc1Nsb3dDYXNlKEV4ZWNTdGF0ZSosIEVDTUFNb2RlKSBjb25zdDsKIAogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAgICAgLyoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjE0LDkgKzYxNCw5IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0IENs
YXMKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmluaGVyaXRzKGNsYXNzSW5mbyk7
CiB9CiAKLWlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpcyhFeGVjU3RhdGUqIGV4
ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKSBjb25zdAogewotICAgIHJldHVybiBpc0NlbGwoKSA/IGFz
Q2VsbCgpLT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoYXNDZWxsKCksIGV4ZWMpIDogdG9U
aGlzT2JqZWN0U2xvd0Nhc2UoZXhlYyk7CisgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCkt
Pm1ldGhvZFRhYmxlKCktPnRvVGhpcyhhc0NlbGwoKSwgZXhlYywgZWNtYU1vZGUpIDogdG9UaGlz
U2xvd0Nhc2UoZXhlYywgZWNtYU1vZGUpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpn
ZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxNDk1
MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzMsOCArMTMzLDEwIEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWwKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIpOwogfQogCi1KU09i
amVjdCogSlNDZWxsOjp0b1RoaXNPYmplY3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMp
CitKU1ZhbHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKKyAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAg
ICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgc3RhdGlj
IEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKik7CisgICAgc3RhdGlj
IEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAogICAgIHZv
aWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9CiAg
ICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3QqIGNvbnN0Kj4odGhpcyk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTI5LDkgKzUyOSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlv
blN0cnVjdHVyZSk7CiB9CiAKLUpTT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6dG9UaGlzT2JqZWN0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKikKK0pTVmFsdWUgSlNHbG9iYWxPYmplY3Q6OnRvVGhp
cyhKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIHJl
dHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKS0+Z2xvYmFsVGhpcygpOworICAgIGlm
IChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiB9CiAKIEV4ZWNTdGF0ZSogSlNH
bG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zODQsNiArMzg0LDcgQEAgcHVibGljOgogCiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4g
KkhlYXA6OmhlYXAodGhpcyktPnZtKCk7IH0KICAgICBKU09iamVjdCogZ2xvYmFsVGhpcygpIGNv
bnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0R2xvYmFsVGhpcyhWTSYsIEpTT2Jq
ZWN0KiBnbG9iYWxUaGlzKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQzMiw5ICs0MzMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgfTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0ds
b2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKIAotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSopOwotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRHbG9iYWxU
aGlzKFZNJiwgSlNPYmplY3QqIGdsb2JhbFRoaXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0M6OkpTVmFsdWUgdG9UaGlzKEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBF
Q01BTW9kZSk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29w
ZS5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTmFtZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsMTAgQEAgdm9pZCBK
U05hbWVTY29wZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3JlZ2lzdGVyU3RvcmUpOwogfQogCi1KU09iamVjdCogSlNOYW1lU2NvcGU6
OnRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMpCitKU1ZhbHVlIEpTTmFtZVNj
b3BlOjp0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9kZSBlY21hTW9kZSkK
IHsKKyAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgJKHJldmlzaW9u
IDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIGJvb2wgaXNEeW5h
bWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKLSAgICBzdGF0aWMg
SlNPYmplY3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMg
SlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNDk1
MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5Niw4ICszOTYsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhCiAgICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
ICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAKLSAgICAgICAgICAgICAgICAv
LyBJZiB0aGlzIGlzIFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBzdWJz
dGl0dXRlIHRoZSBzaGVsbC4KLSAgICAgICAgICAgICAgICBjYWxsKGV4ZWMsIHNldHRlckZ1bmMs
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2Jq
ZWN0KHRoaXNPYmplY3QsIGV4ZWMpLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBjYWxsKGV4ZWMs
IHNldHRlckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgYXJncyk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
QVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CkBAIC0xNTYwLDcgKzE1NTksNyBAQCBK
U1N0cmluZyogSlNPYmplY3Q6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIHByaW1p
dGl2ZS50b1N0cmluZyhleGVjKTsKIH0KIAotSlNPYmplY3QqIEpTT2JqZWN0Ojp0b1RoaXNPYmpl
Y3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqKQorSlNWYWx1ZSBKU09iamVjdDo6dG9UaGlzKEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxK
U09iamVjdCo+KGNlbGwpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNyArNDg4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gTk9URTogSlNPYmplY3QgYW5kIGl0cyBzdWJjbGFzc2VzIG11c3QgYmUgYWJs
ZSB0byBncmFjZWZ1bGx5IGhhbmRsZSBFeGVjU3RhdGUqID0gMCwKICAgICAvLyBiZWNhdXNlIHRo
aXMgY2FsbCBtYXkgY29tZSBmcm9tIGluc2lkZSB0aGUgY29tcGlsZXIuCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRl
Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAogICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1Zh
bHVlKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNGdW5jdGlvbikg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIEpTVmFsdWUgSlNTY29w
ZTo6cmVzb2x2ZVdpdGhUaGlzKENhbGxGcmEKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+dm0oKS5l
eGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICBBU1NFUlQo
dmFsdWUpOwotICAgICAgICAqYmFzZSA9IHByb3BlcnR5QmFzZS0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkuaXNFbnZpcm9ubWVudFJlY29yZCgpID8ganNVbmRlZmluZWQoKSA6IEpTVmFsdWUocHJv
cGVydHlCYXNlKTsKKyAgICAgICAgKmJhc2UgPSBKU1ZhbHVlKHByb3BlcnR5QmFzZSk7CiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAgICAgQVNTRVJUKG9wZXJhdGlvbnMtPnNpemUoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZp
c2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw4ICsyNzEsMTAgQEAgSlNPYmplY3QqIEpTU3RyaW5n
Ojp0b09iamVjdChFeGVjU3RhdGUqIAogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShl
eGVjLCBnbG9iYWxPYmplY3QsIGNvbnN0X2Nhc3Q8SlNTdHJpbmcqPih0aGlzKSk7CiB9CiAKLUpT
T2JqZWN0KiBKU1N0cmluZzo6dG9UaGlzT2JqZWN0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjKQorSlNWYWx1ZSBKU1N0cmluZzo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKKyAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9k
ZSkKKyAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNDYXN0PEpTU3RyaW5nKj4oY2Vs
bCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAot
ICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOwor
ICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7
CiAKICAgICAvLyBBY3R1YWxseSBnZXRQcm9wZXJ0eVNsb3QsIG5vdCBnZXRPd25Qcm9wZXJ0eVNs
b3QgKHNlZSBKU0NlbGwpLgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lv
biAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIEpTVmFsdWUgUHJvcGVydHlTbG90
OjpmdW5jdGlvbkdldHRlcihFeGUKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gbV9kYXRhLmdldHRlckZ1bmMtPm1ldGhvZFRhYmxlKCktPmdldENhbGxE
YXRhKG1fZGF0YS5nZXR0ZXJGdW5jLCBjYWxsRGF0YSk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywg
bV9kYXRhLmdldHRlckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV90aGlzVmFsdWUuaXNPYmpl
Y3QoKSA/IG1fdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKSA6IG1fdGhpc1ZhbHVlLCBleGVj
LT5lbXB0eUxpc3QoKSk7CisgICAgcmV0dXJuIGNhbGwoZXhlYywgbV9kYXRhLmdldHRlckZ1bmMs
IGNhbGxUeXBlLCBjYWxsRGF0YSwgbV90aGlzVmFsdWUsIGV4ZWMtPmVtcHR5TGlzdCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAkocmV2aXNpb24gMTQ5NTE2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlIFNwYXJzZUFycmF5RW50
cnk6OmdldChFeGVjU3RhdGUqCiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZ2V0dGVyLCBj
YWxsRGF0YSk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGFycmF5LT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoYXJyYXksIGV4ZWMpLCBleGVj
LT5lbXB0eUxpc3QoKSk7CisgICAgcmV0dXJuIGNhbGwoZXhlYywgZ2V0dGVyLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGFycmF5LCBleGVjLT5lbXB0eUxpc3QoKSk7CiB9CiAKIHZvaWQgU3BhcnNlQXJy
YXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFy
cmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTE5
MCw4ICsxOTAsNiBAQCB2b2lkIFNwYXJzZUFycmF5RW50cnk6OnB1dChFeGVjU3RhdGUqIGV4CiAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRh
KHNldHRlciwgY2FsbERhdGEpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAg
YXJncy5hcHBlbmQodmFsdWUpOwotICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgdGhpc1ZhbHVlID0gYXNPYmplY3QodGhpc1ZhbHVlKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlz
T2JqZWN0KGFzT2JqZWN0KHRoaXNWYWx1ZSksIGV4ZWMpOwogICAgIGNhbGwoZXhlYywgc2V0dGVy
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5jcHAJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksMTAg
QEAgYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotSlNPYmplY3QqIFN0cmljdEV2YWxBY3RpdmF0aW9uOjp0b1RoaXNPYmplY3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjKQorSlNWYWx1ZSBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6
dG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Cisg
ICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlv
bi5oCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2Jq
ZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDk1MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAxMy0wNS0wMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJhdGlvbmFsaXplZCAndGhpcycgdmFsdWUgY29udmVyc2lvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0byBtYXRjaCBKU0MgcmVxdWly
ZW1lbnQgdGhhdCB0aGUgY2FsbGVlIHBlcmZvcm1zICd0aGlzJyB2YWx1ZQorICAgICAgICBjb252
ZXJzaW9uLgorCisgICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0Vycm9ySGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Vycm9ySGFuZGxlcjo6
aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRl
cm5hbENvbnN0cnVjdG9yTmFtZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNh
bGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fSW52b2tlKToKKwogMjAxMy0wNS0wMiAgUm9nZXIgRm9u
ZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvd2luZyByMTQ5NDYzLCBz
ZXQgUGF0aCBmb3IgV2ViQ29yZSBtYWtlZmlsZSBhcyB3ZWxsLgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3
b3JraW5nIGNvcHkpCkBAIC0yODAxLDcgKzI4MDEsNiBAQCBfX1pOSzdXZWJDb3JlMTJUZXh0RW5j
b2Rpbmc3ZG9tTmFtZUV2CiBfX1pOSzdXZWJDb3JlMTNTY3JpcHRFbGVtZW50MTNzY3JpcHRDb250
ZW50RXYKIF9fWk43V2ViQ29yZTEzU2NyaXB0RWxlbWVudDEzZXhlY3V0ZVNjcmlwdEVSS05TXzE2
U2NyaXB0U291cmNlQ29kZUUKIF9fWk5LN1dlYkNvcmUyMUNvbnRlbnRTZWN1cml0eVBvbGljeTE3
YWxsb3dJbmxpbmVTY3JpcHRFdgotX19aTks3V2ViQ29yZTE1SlNET01XaW5kb3dCYXNlMTJ0b1Ro
aXNPYmplY3RFUE4zSlNDOUV4ZWNTdGF0ZUUKIF9fWk43V2ViQ29yZTE2SlNET01XaW5kb3dTaGVs
bDE4Z2V0T3duUHJvcGVydHlTbG90RVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVy
RVJOUzFfMTJQcm9wZXJ0eVNsb3RFCiBfX1pON1dlYkNvcmUxNkpTRE9NV2luZG93U2hlbGwxN3B1
dFdpdGhBdHRyaWJ1dGVzRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83
SlNWYWx1ZUVqCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxOHdpbmRvd1NjcmlwdE9i
amVjdEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Vycm9ySGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDExICs5Miw5IEBAIHZvaWQg
SlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEUKICAgICAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFs
T2JqZWN0U2NvcGUodm0sIHZtLmR5bmFtaWNHbG9iYWxPYmplY3QgPyB2bS5keW5hbWljR2xvYmFs
T2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKIAotICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGds
b2JhbE9iamVjdC0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KGdsb2JhbE9iamVjdCwgZXhl
Yyk7Ci0KICAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKQotICAgICAgICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNh
bGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3Mp
Ci0gICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9i
amVjdCwgYXJncykKKyAgICAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzKTsKIAogICAgICAgICBnbG9iYWxP
YmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcAkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEy
LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDbwogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9UaGlzT2Jq
ZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4o
ZXhlYy0+YXJndW1lbnQoMCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAgICBTdHJp
bmcgcmVzdWx0ID0gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmpl
Y3QpOwogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCByZXN1bHQpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgJKHJldmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw5ICs1MCw2IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSwgY29u
c3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEpTQzo6QXJnTGlzdCYgYXJncykKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZSBjdXJyZW50U3RhdGUoZXhlYyk7Ci0gICAgICAgIC8vIEVuc3VyZSBET00gZ2xvYmFsIG9iamVj
dCBpcyB1bndyYXBwZWQgdG8gdGhlIHNoZWxsLgotICAgICAgICBpZiAodGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpCi0gICAgICAgICAgICB0aGlzVmFsdWUgPSB0aGlzVmFsdWUudG9UaGlzT2JqZWN0KGV4
ZWMpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxs
VHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAgICAgfTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDE0OTUxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ5LDExICsyNDQ5LDExIEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIp
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFt
ZSogY2FzdGVkVGhpcyA9IHRvSlNET01XaW5kb3coZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhp
c09iamVjdChleGVjKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvSlNET01XaW5kb3coZXhlYy0+aG9z
dFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzKVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0
ZWRUaGlzID0gdG8ke2NsYXNzTmFtZX0oZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVj
dChleGVjKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcylcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCShyZXZpc2lvbiAxNDk1MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzQsNyArMjM0LDcgQEAgYm9vbCBfTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCogbywgTgog
ICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiBvYmplY3QuCiAgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywg
YXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwotICAgICAgICBKU1ZhbHVlIHJl
c3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2Jq
LT5pbXAtPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChvYmotPmltcCwgZXhlYyksIGFyZ0xp
c3QpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqLT5pbXAsIGFyZ0xpc3QpOwogCiAgICAgICAgIC8vIENv
bnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAg
ICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMTQ5NTE2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDUtMDIgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSYXRpb25hbGl6ZWQgJ3RoaXMnIHZhbHVl
IGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTU0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZWQgdG8gbWF0Y2ggSlNDIHJlcXVpcmVtZW50IHRoYXQgdGhlIGNhbGxlZSBwZXJm
b3JtcyAndGhpcycgdmFsdWUKKyAgICAgICAgY29udmVyc2lvbi4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TlBKU09iamVjdDo6aW52b2tlKToKKwogMjAxMy0wNS0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoMTQ5Mzg5KSBNYWluIHJlc291cmNl
cyBjb252ZXJ0ZWQgdG8gZG93bmxvYWRzIGFyZSBpbW1lZGlhdGVseSBjYW5jZWxsZWQuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNDk1MTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5Myw3ICsyOTMsNyBAQCBib29sIE5QSlNPYmplY3Q6Omludm9rZShFeGVjU3RhdGUqIGV4
ZWMsCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKICAg
ICAgICAgYXJndW1lbnRMaXN0LmFwcGVuZChtX29iamVjdE1hcC0+Y29udmVydE5QVmFyaWFudFRv
SlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3VtZW50c1tpXSkpOwogCi0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBt
X2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QobV9qc09iamVjdC5nZXQoKSwg
ZXhlYyksIGFyZ3VtZW50TGlzdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChleGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2pzT2JqZWN0LmdldCgpLCBhcmd1bWVu
dExpc3QpOwogCiAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1
bmN0aW9uIGNhbGwuCiAgICAgbV9vYmplY3RNYXAtPmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQo
ZXhlYywgdmFsdWUsICpyZXN1bHQpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5
NTE2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTMtMDUtMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KKworICAgICAgICBSYXRpb25hbGl6ZWQgJ3RoaXMnIHZhbHVlIGNvbnZlcnNpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdG8gbWF0
Y2ggSlNDIHJlcXVpcmVtZW50IHRoYXQgdGhlIGNhbGxlZSBwZXJmb3JtcyAndGhpcycgdmFsdWUK
KyAgICAgICAgY29udmVyc2lvbi4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjppbnZva2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgorCiAyMDExLTA1LTAxICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtNYWNdIFdlYktpdCBkb2Vzbid0IGVuYWJs
ZSBvciBkaXNhYmxlIGF1dG9jb3JyZWN0aW9ucyB3aGVuIHN5c3RlbSBwcmVmZXJlbmNlcyBhcmUg
Y2hhbmdlZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMTQ5
NTE2KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTIsNyArOTEyLDcgQEAgYm9vbCBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZQogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ0xpc3Q7CiAgICAgZGVtYXJzaGFsVmFsdWVzKGV4ZWMsIGFyZ3VtZW50c0RhdGEsIGFy
Z3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbChleGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnRv
VGhpc09iamVjdChvYmplY3QsIGV4ZWMpLCBhcmdMaXN0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0g
Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xpc3Qp
OwogICAgICAgICAKICAgICBtYXJzaGFsVmFsdWUoZXhlYywgdmFsdWUsIHJlc3VsdERhdGEsIHJl
c3VsdExlbmd0aCk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTk0NCw3ICs5NDQs
NyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlCiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBkZW1hcnNoYWxWYWx1ZXMoZXhlYywgYXJndW1l
bnRzRGF0YSwgYXJndW1lbnRzTGVuZ3RoLCBhcmdMaXN0KTsKIAotICAgIEpTVmFsdWUgdmFsdWUg
PSBjYWxsKGV4ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QtPm1ldGhvZFRh
YmxlKCktPnRvVGhpc09iamVjdChvYmplY3QsIGV4ZWMpLCBhcmdMaXN0KTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gY2FsbChleGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBh
cmdMaXN0KTsKICAgICAKICAgICBtYXJzaGFsVmFsdWUoZXhlYywgdmFsdWUsIHJlc3VsdERhdGEs
IHJlc3VsdExlbmd0aCk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0OTUxNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDEzLTA1LTAyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmF0aW9uYWxpemVkICd0aGlzJyB2YWx1ZSBjb252ZXJzaW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBwYXNzIHRo
ZXNlIHRlc3RzIG5vdzoKKworICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTFfRXhwcmVz
c2lvbnMvMTEuMV9QcmltYXJ5X0V4cHJlc3Npb25zLzExLjEuMV9UaGVfdGhpc19LZXl3b3JkL1Mx
MS4xLjFfQTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJvdG90
eXBlLm1hdGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC4xMV9TdHJpbmcucHJvdG90eXBlLnJlcGxhY2UvUzE1LjUuNC4xMV9BMV9UMy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41
X1N0cmluZy8xNS41LjQvMTUuNS40LjEyX1N0cmluZy5wcm90b3R5cGUuc2VhcmNoL1MxNS41LjQu
MTJfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xM19TdHJpbmcucHJvdG90
eXBlLnNsaWNlL1MxNS41LjQuMTNfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC4xNF9TdHJpbmcucHJvdG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9T
dHJpbmcvMTUuNS40LzE1LjUuNC4xNV9TdHJpbmcucHJvdG90eXBlLnN1YnN0cmluZy9TMTUuNS40
LjE1X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNl9TdHJpbmcucHJvdG90
eXBlLmNvbmNhdC9TMTUuNS40LjZfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC43X1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZi9TMTUuNS40LjdfQTFfVDMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9T
dHJpbmcvMTUuNS40LzE1LjUuNC44X1N0cmluZy5wcm90b3R5cGUubGFzdEluZGV4T2YvUzE1LjUu
NC44X0ExX1QzLWV4cGVjdGVkLnR4dDoKKwogMjAxMy0wNS0wMiAgSm9vbmUgSHVyICA8am9vbmUu
aHVyQGludGVsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBnYXJkZW5pbmcuCkluZGV4
OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjFfUHJp
bWFyeV9FeHByZXNzaW9ucy8xMS4xLjFfVGhlX3RoaXNfS2V5d29yZC9TMTEuMS4xX0EyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzEx
X0V4cHJlc3Npb25zLzExLjFfUHJpbWFyeV9FeHByZXNzaW9ucy8xMS4xLjFfVGhlX3RoaXNfS2V5
d29yZC9TMTEuMS4xX0EyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ5NTE2KQorKysgTGF5b3V0
VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS4xX1ByaW1hcnlfRXhw
cmVzc2lvbnMvMTEuMS4xX1RoZV90aGlzX0tleXdvcmQvUzExLjEuMV9BMi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTEuMS4xX0EyCiAKLUZBSUwgU3B1dG5p
a0Vycm9yOiAjMTogdGhpcy50b1N0cmluZygpID09PSB0b1N0cmluZygpLiBBY3R1YWw6IFtvYmpl
Y3QgV2luZG93XQorUEFTUyAKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9z
cHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8x
NS41LjQuNl9TdHJpbmcucHJvdG90eXBlLmNvbmNhdC9TMTUuNS40LjZfQTFfVDMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0
aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC42X1N0cmluZy5wcm90b3R5cGUu
Y29uY2F0L1MxNS41LjQuNl9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0OTUxNikKKysr
IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9T
dHJpbmcvMTUuNS40LzE1LjUuNC42X1N0cmluZy5wcm90b3R5cGUuY29uY2F0L1MxNS41LjQuNl9B
MV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40
LjZfQTFfVDMKIAotRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgCiAKIFRFU1QgQ09N
UExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjdfU3RyaW5nLnByb3RvdHlwZS5pbmRl
eE9mL1MxNS41LjQuN19BMV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41
LjQvMTUuNS40LjdfU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mL1MxNS41LjQuN19BMV9UMy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE0OTUxNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9y
bWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC43X1N0cmlu
Zy5wcm90b3R5cGUuaW5kZXhPZi9TMTUuNS40LjdfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC43X0ExX1QzCiAKLUZBSUwgVHlwZUVycm9y
OiBUeXBlIGVycm9yCitQQVNTIAogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3Rz
L3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40
LzE1LjUuNC44X1N0cmluZy5wcm90b3R5cGUubGFzdEluZGV4T2YvUzE1LjUuNC44X0ExX1QzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNl
LzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuOF9TdHJpbmcucHJv
dG90eXBlLmxhc3RJbmRleE9mL1MxNS41LjQuOF9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE0OTUxNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09i
amVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC44X1N0cmluZy5wcm90b3R5cGUubGFzdElu
ZGV4T2YvUzE1LjUuNC44X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIFMxNS41LjQuOF9BMV9UMwogCi1GQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgor
UEFTUyAKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTBfU3Ry
aW5nLnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3Rz
LzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC9TMTUu
NS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ5NTE2KQorKysgTGF5b3V0VGVz
dHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41
LjQvMTUuNS40LjEwX1N0cmluZy5wcm90b3R5cGUubWF0Y2gvUzE1LjUuNC4xMF9BMV9UMy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjEwX0ExX1Qz
CiAKLUZBSUwgVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIAogCiBURVNUIENPTVBMRVRFCiAK
SW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMV9TdHJpbmcucHJvdG90eXBlLnJlcGxhY2UvUzE1
LjUuNC4xMV9BMV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1
dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUu
NS40LjExX1N0cmluZy5wcm90b3R5cGUucmVwbGFjZS9TMTUuNS40LjExX0ExX1QzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTQ5NTE2KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5j
ZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjExX1N0cmluZy5w
cm90b3R5cGUucmVwbGFjZS9TMTUuNS40LjExX0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuMTFfQTFfVDMKIAotRkFJTCBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKK1BBU1MgCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMv
c3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQv
MTUuNS40LjEyX1N0cmluZy5wcm90b3R5cGUuc2VhcmNoL1MxNS41LjQuMTJfQTFfVDMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMl9TdHJpbmcucHJvdG90
eXBlLnNlYXJjaC9TMTUuNS40LjEyX0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ5NTE2
KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8x
NS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEyX1N0cmluZy5wcm90b3R5cGUuc2VhcmNoL1MxNS41
LjQuMTJfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
UzE1LjUuNC4xMl9BMV9UMwogCi1GQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUyAKIAog
VEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTNfU3RyaW5nLnByb3Rv
dHlwZS5zbGljZS9TMTUuNS40LjEzX0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3Ry
aW5nLzE1LjUuNC8xNS41LjQuMTNfU3RyaW5nLnByb3RvdHlwZS5zbGljZS9TMTUuNS40LjEzX0Ex
X1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ5NTE2KQorKysgTGF5b3V0VGVzdHMvc3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40
LjEzX1N0cmluZy5wcm90b3R5cGUuc2xpY2UvUzE1LjUuNC4xM19BMV9UMy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjEzX0ExX1QzCiAKLUZBSUwg
VHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIAogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExh
eW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJp
bmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJvdG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFf
VDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9y
bWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJp
bmcucHJvdG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNDk1MTYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxp
dC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIFMxNS41LjQuMTRfQTFfVDMKIAotRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BB
U1MgCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3Jt
YW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE1X1N0cmlu
Zy5wcm90b3R5cGUuc3Vic3RyaW5nL1MxNS41LjQuMTVfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVj
dHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNV9TdHJpbmcucHJvdG90eXBlLnN1YnN0cmlu
Zy9TMTUuNS40LjE1X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ5NTE2KQorKysgTGF5
b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmlu
Zy8xNS41LjQvMTUuNS40LjE1X1N0cmluZy5wcm90b3R5cGUuc3Vic3RyaW5nL1MxNS41LjQuMTVf
QTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUu
NC4xNV9BMV9UMwogCi1GQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUyAKIAogVEVTVCBD
T01QTEVURQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200551</attachid>
            <date>2013-05-04 17:16:05 -0700</date>
            <delta_ts>2013-09-05 10:21:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115542-20130504171514.patch</filename>
            <type>text/plain</type>
            <size>107504</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxNCBA
QAorMjAxMy0wNS0wNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJhdGlvbmFsaXplZCAndGhpcycgdmFsdWUgY29udmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBmaXhlcyBhIGJ1bmNoIG9mIFNw
dXRuaWsgYW5kIGdldHRlci1zZXR0ZXIgdGVzdHMuCisKKyAgICAgICAgVGhlIG5ldyBtb2RlbCBp
cyB0aGF0IHRoZSBjYWxsZWUgYWx3YXlzIHBlcmZvcm1zICd0aGlzJyB2YWx1ZSBjb252ZXJzaW9u
LAorICAgICAgICBhbmQgaW4gdGhlIGNhc2Ugb2YgZ2V0dGVycyBhbmQgc2V0dGVycywgdGhlIGNh
bGxlciBhbHNvIGRvZXMgaXQuCisKKyAgICAgICAgTXkgdWx0aW1hdGUgZ29hbCBpcyB0byBicmVh
ayB1cCByZXNvbHZlX3dpdGhfdGhpcyBpbnRvIHNpbmdsZS1yZXN1bHQgCisgICAgICAgIG9wY29k
ZXMuIFRoaXMgc3RlcCBhdm9pZHMgaGF2aW5nIHRvIGFkZCBhIHNwZWNpYWwgZm9ybSBvZiBjb252
ZXJ0X3RoaXMKKyAgICAgICAgdGhhdCBkaXN0aW5ndWlzaGVzIGNhbGxlcnMgdnMgY2FsbGVlcy4K
KworICAgICAgICBPbmx5IHRoZSBjYWxsZWUga25vd3Mgd2hldGhlciBpdCB1c2VzICd0aGlzJyBh
bmQvb3Igd2hldGhlciAndGhpcycKKyAgICAgICAgY29udmVyc2lvbiBzaG91bGQgdXNlIFN0cmlj
dE1vZGUsIHNvIGl0J3MgbW9zdCBuYXR1cmFsIHRvIHBlcmZvcm0KKyAgICAgICAgY29udmVydF90
aGlzIGluIHRoZSBjYWxsZWUuIAorCisgICAgICAgIEdldHRlcnMgYW5kIHNldHRlcnMgYXJlIGFu
IGV4Y2VwdGlvbiBiZWNhdXNlIHRoZSBFQ01BIHNwZWMgbWFuZGF0ZXMKKyAgICAgICAgdGhhdCB0
aGUgY2FsbGVyIHBlcmZvcm0gbm9uLXN0cmljdCAndGhpcycgdmFsdWUgY29udmVyc2lvbiwgZXZl
biB3aGVuCisgICAgICAgIHRoZSBjYWxsZWUgaXMgaW4gU3RyaWN0TW9kZS4KKworICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVu
Y3Rpb246OmNhbGwpOiBQZXJmb3JtICd0aGlzJyB2YWx1ZSBjb252ZXJzaW9uIGZvcgorICAgICAg
ICBvdXIgY2FsbGVlLCBzaW5jZSBpdCBtYXkgb2JzZXJ2ZSAndGhpcycuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjo6OmNhbGwpOiBE
aXR0by4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNHbG9i
YWxDb250ZXh0Q3JlYXRlSW5Hcm91cCk6IFVzZSBhIHByb3h5ICd0aGlzJyBvYmplY3QgaW4gZ2xv
YmFsIHNjb3BlCisgICAgICAgIGV2ZW4gd2hlbiB3ZSdyZSBub3QgaW4gdGhlIGJyb3dzZXIuIFRo
aXMgZWxpbWluYXRlcyBzb21lIG9kZCBjYXNlcyB3aGVyZQorICAgICAgICBBUEkgY2xpZW50cyB1
c2VkIHRvIGJlIGFibGUgdG8gZ2V0IGEgZGlyZWN0IHJlZmVyZW5jZSB0byBhbiBlbnZpcm9ubWVu
dAorICAgICAgICByZWNvcmQuIE5vdywgYW55IHJlZmVyZW5jZSB0byBhbiBlbnZpcm9ubWVudCBy
ZWNvcmQgdW5hbWJpZ3VvdXNseSBtZWFucworICAgICAgICB0aGF0IHRoZSBWTSByZXNvbHZlZCB0
aGF0IHJlY29yZCBpbiB0aGUgc2NvcGUgY2hhaW4uCisKKyAgICAgICAgKEpTQ29udGV4dEdldEds
b2JhbE9iamVjdCk6IFJlbW92ZWQgYW4gaW5jb3JyZWN0IGNvbW1lbnQuIE5vdyB0aGF0IEpTQwor
ICAgICAgICBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHByb3h5ICd0aGlzJyBvYmplY3Qgc2NoZW1lLCB0
aGUgYmVoYXZpb3IgaXMgbm90CisgICAgICAgIFdlYkNvcmUtb25seS4KKworICAgICAgICAqIEFQ
SS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdFNldFByb3RvdHlwZSk6CisgICAg
ICAgIChKU09iamVjdENhbGxBc0Z1bmN0aW9uKTogRG9uJ3QgcGVyZm9ybSAndGhpcycgdmFsdWUg
Y29udmVyc2lvbiBpbiB0aGUKKyAgICAgICAgY2FsbGVyOyB0aGUgY2FsbGVlIHdpbGwgZG8gaXQg
aWYgbmVlZGVkLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUub3JkZXI6IE9yZGVyIQorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlRXhwb3J0cy5kZWY6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZUV4cG9ydEdlbmVyYXRvci9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmLmluOgorICAg
ICAgICBXaGF0IGFyZSB0aGUgY2hhbmNlcyB0aGF0IHRoaXMgd2lsbCB3b3JrPworCisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6IFJlbmFtZWQg
Y29udmVydF90aGlzIHRvIHRvX3RoaXMsIHRvIG1hdGNoIG91cgorICAgICAgICBvdGhlciBjb252
ZXJzaW9uIG9wY29kZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmg6CisgICAg
ICAgIChDb2RlT3JpZ2luKToKKyAgICAgICAgKElubGluZUNhbGxGcmFtZSk6CisgICAgICAgIChK
U0M6OkNvZGVPcmlnaW46OmNvZGVPcmlnaW5Pd25lcik6IFVzZSB0aGUgbW9yZSBwcmVjaXNlIHR5
cGUgZm9yIG91cgorICAgICAgICBleGVjdXRhYmxlLCBzbyBjb21waWxhdGlvbiBjYW4gZGlzY292
ZXIgd2hlcmUgd2UncmUgaW4gc3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNv
ZGUuaDoKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6IFVwZGF0ZWQgZm9yIHJlbmFtZS4K
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6IEFsd2F5cyBlbWl0
IHRvX3RoaXMgd2hlbgorICAgICAgICAndGhpcycgaXMgaW4gdXNlIC0tIHN0cmljdCBtb2RlIHN0
aWxsIG5lZWRzIHRvIGNvbnZlcnQgZW52aXJvbm1lbnQKKyAgICAgICAgcmVjb3JkcyB0byAndW5k
ZWZpbmVkJy4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOiBVcGRhdGVkIGZvciByZW5hbWVzLgorCisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwTm9kZSk6IFRpZ2h0ZW5lZCB1cCB0aGlzIGNvZGUgdG8gY29uc2lkZXIKKyAg
ICAgICAgc3RyaWN0IG1vZGUgKGEgbmV3IHJlcXVpcmVtZW50KSBhbmQgdG8gY29uc2lkZXIgdGhl
IGdsb2JhbCBvYmplY3QgKHdoaWNoCisgICAgICAgIHdhcyBhbHdheXMgYSByZXF1aXJlbWVudCku
CisKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
Z2xvYmFsVGhpc09iamVjdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmV4ZWN1dGFi
bGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOiBEaXR0by4KKwor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZh
bCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOiBEb24ndCBBU1NFUlQgYWJvdXQgJ3RoaXMnIC0tIGl0J3Mgb3VyIGpvYgorICAgICAg
ICB0byBmaXggaXQgdXAgaWYgbmVlZGVkLgorCisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfdG9fdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9f
dGhpcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90
b190aGlzKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJ
TkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6IFJlbW92ZWQgc3Bl
Y2lhbCBjYXNlIGNvZGUgZm9yIHZhcmlvdXMga2luZHMgb2YKKyAgICAgICAgY29udmVyc2lvbnMu
IFRoZSBiYXNlbGluZSBmYXN0IHBhdGggaXMgbm93IG9ubHkgZmluYWwgb2JqZWN0cy4gSXQgaHVy
dAorICAgICAgICBteSBicmFpbiB0byB0aGluayB0aHJvdWdoIGhvdyB0byBrZWVwIHRoZSBvdGhl
ciBmYXN0IHBhdGhzIHdvcmtpbmcsIGFuZAorICAgICAgICBvdXIgYmVuY2htYXJrcyBkbyBub3Qg
b2JqZWN0LgorCisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206IFVwZGF0ZWQgZm9yIHJlbmFtZXMuIFJlbW92ZWQgc29tZQorICAgICAg
ICBzcGVjaWFsIGNhc2UgY29kZSwgYXMgaW4gdGhlIEpJVCBhYm92ZS4KKworICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJh
dG9yOjphZGRQYXJlbnRGb3JDb25zb2xlU3RhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FsbERh
dGEuY3BwOgorICAgICAgICAoSlNDOjpjYWxsKToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5m
by5oOgorICAgICAgICAoTWV0aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlv
bi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9KU09OKTogVGhlIGNh
bGxlZSBwZXJmb3JtcyAndGhpcycgY29udmVyc2lvbiwgbm90IHRoZSBjYWxsZXIuCisKKyAgICAg
ICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxHZXR0ZXIp
OgorICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNl
dHRlci5oOiBCdWcgZml4LiBBZGRlZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBpbnZva2luZyBnZXR0
ZXJzCisgICAgICAgIGFuZCBzZXR0ZXJzIGZyb20gQysrIGNvZGUuIFRoZSBoZWxwZXJzIGtub3cg
dG8gcGVyZm9ybSAndGhpcycgY29udmVyc2lvbgorICAgICAgICBiZWZvcmUgdGhlIGNhbGwuCisK
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0
aXZhdGlvbjo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNBY3RpdmF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoK
KyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9UaGlzKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5oOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRvVGhpcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNO
YW1lU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU05hbWVTY29wZTo6dG9UaGlzKToKKyAgICAg
ICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmg6CisgICAgICAgIChKU05hbWVTY29wZSk6IEZpbGxl
ZCBvdXQgcnVudGltZSBzdXBwb3J0IGZvciBjb252ZXJ0aW5nICd0aGlzJworICAgICAgICB2YWx1
ZXMgYXMgbmVlZGVkLCBhY2NvcmRpbmcgdG8gdGhlIHN0cmljdG5lc3Mgb2YgdGhlIGNhbGxlciwg
dXNpbmcKKyAgICAgICAgaGVscGVyIGZ1bmN0aW9ucyB3aGVyZSBjb2RlIHdhcyBkdXBsaWNhdGVk
LgorCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xl
Q2hlY2spOiBCdWcgZml4LiBEb24ndCBwZWZvcm0KKyAgICAgICAgJ3RoaXMnIHZhbHVlIGNvbnZl
cnNpb24gaW4gdGhlIF9fcHJvdG9fXyBnZXR0ZXIuIFRoZSBjYWxsZXIgZG9lcyB0aGlzCisgICAg
ICAgIGZvciB1cywgYW5kIHdlIGNhbiBBU1NFUlQgc28uIEFsc28sIHRoZSBwcmV2aW91cyBjb2Rl
IHVzZWQKKyAgICAgICAgImdsb2JhbEV4ZWMoKS0+dGhpc1ZhbHVlKCkiLCB3aGljaCBpcyBhIHJl
YWQgcGFzdCB0aGUgYmVnaW5uaW5nIG9mIGEKKyAgICAgICAgYnVmZmVyISBJIGRvbid0IHRoaW5r
IHRoaXMgZXZlciB3b3JrZWQgb24gcHVycG9zZS4KKworICAgICAgICAoSlNDOjpKU09iamVjdDo6
dG9UaGlzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmlubGluZUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6cmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90
OjpmdW5jdGlvbkdldHRlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0R2V0dGVyU2xvdCk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0Q2FjaGVhYmxlR2V0dGVyU2xvdCk6Cisg
ICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
U3BhcnNlQXJyYXlFbnRyeTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6
cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRpb246OnRvVGhpcyk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAgICAgICAoU3RyaWN0RXZhbEFjdGl2YXRpb24p
OiBEaXR0by4KKwogMjAxMy0wNS0wMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGVyZSBzaG91bGQgYmUgYSBydW50aW1lIG9wdGlvbiB0byBjb25zdHJh
aW4gd2hhdCBmdW5jdGlvbnMgZ2V0IERGRyBjb21waWxlZApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzcsNyArMzM3LDYgQEAgX0pTVmFsdWVUb09iamVjdAogX19aTjNKU0MxMkFQSUVudHJ5U2hpbUMx
RVBOU185RXhlY1N0YXRlRWIKIF9fWk5LM0pTQzhKU09iamVjdDh0b09iamVjdEVQTlNfOUV4ZWNT
dGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9KU0NvbnRleHRHZXRHbG9iYWxPYmplY3QKLV9f
Wk5LM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX0pTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nCiBfSlNPYmplY3RHZXRQcm9wZXJ0eQogX19aTksxNE9wYXF1
ZUpTU3RyaW5nMTBpZGVudGlmaWVyRVBOM0pTQzEyVk1FCkBAIC04MTIsOSArODExLDcgQEAgX19a
TjNKU0MxNkpTQ2FsbGJhY2tPYmplY3RJTlNfMjRKU09iamVjdAogX19aTjNXVEY5SGFzaFRhYmxl
SVN0NHBhaXJJTlNfNlJlZlB0cklOU18xMFN0cmluZ0ltcGxFRUVqRVMxX0lTNV9QTjNKU0M3SlNW
YWx1ZUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzlfRUVOUzZfMjRTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU0SGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TQ18xMEhhc2hUcmFpdHNFTlNfMTBI
YXNoVHJhaXRzSVM4X0VFRUVTRl9FNnJlaGFzaEVpCiBfSlNWYWx1ZU1ha2VTdHJpbmcKIF9fWk4z
SlNDOFRoaXNOb2RlMTJlbWl0Qnl0ZWNvZGVFUk5TXzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TXzEw
UmVnaXN0ZXJJREUKLV9fWk4zSlNDM0pJVDIwZW1pdF9vcF9jb252ZXJ0X3RoaXNFUE5TXzExSW5z
dHJ1Y3Rpb25FCiBfX1pOM0pTQzIzTWFjcm9Bc3NlbWJsZXJYODZDb21tb24xMWJyYW5jaFRlc3Q4
RU5TMF8xNVJlc3VsdENvbmRpdGlvbkVOU18yMkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJJTlNfMTJY
ODZBc3NlbWJsZXJFRTdBZGRyZXNzRU5TNF8xMlRydXN0ZWRJbW0zMkUKLV9fWk4zSlNDM0pJVDI0
ZW1pdFNsb3dfb3BfY29udmVydF90aGlzRVBOU18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93Q2Fz
ZUVudHJ5RQogX19aTjNKU0M4SlNPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5TXzlNYXJrU3RhY2tF
CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5TXzlNYXJrU3RhY2tF
CiBfX1pOM0pTQzlNYXJrU3RhY2sxNE1hcmtTdGFja0FycmF5SVBOU182SlNDZWxsRUU2YXBwZW5k
RVJLUzNfCkBAIC05ODksNyArOTg2LDYgQEAgX19aVGhuMTZfTjNKU0M4RXZhbE5vZGVEMEV2CiBf
X1pOM0pTQzhFdmFsTm9kZUQwRXYKIF9fWk4zV1RGN0hhc2hNYXBJTlNfNlJlZlB0cklOU18xMFN0
cmluZ0ltcGxFRUVOM0pTQzEyV3JpdGVCYXJyaWVySU5TNF8xNEV2YWxFeGVjdXRhYmxlRUVFTlNf
MTBTdHJpbmdIYXNoRU5TXzEwSGFzaFRyYWl0c0lTM19FRU5TOV9JUzdfRUVFM3NldEVQUzJfUktT
N18KIF9fWk4zV1RGOUhhc2hUYWJsZUlOU182UmVmUHRySU5TXzEwU3RyaW5nSW1wbEVFRVN0NHBh
aXJJUzNfTjNKU0MxMldyaXRlQmFycmllcklOUzVfMTRFdmFsRXhlY3V0YWJsZUVFRUVOU18xOFBh
aXJGaXJzdEV4dHJhY3RvcklTOV9FRU5TXzEwU3RyaW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRz
SU5TXzEwSGFzaFRyYWl0c0lTM19FRU5TRV9JUzhfRUVFRVNGX0U2ZXhwYW5kRXYKLV9fWk5LM0pT
QzdKU1ZhbHVlMjB0b1RoaXNPYmplY3RTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlND
MTFJbnRlcnByZXRlcjdleGVjdXRlRVBOU18xNEV2YWxFeGVjdXRhYmxlRVBOU185RXhlY1N0YXRl
RVBOU184SlNPYmplY3RFaVBOU18xNFNjb3BlQ2hhaW5Ob2RlRQogX2N0aV9vcF9yZXNvbHZlCiBf
SlNWYWx1ZU1ha2VCb29sZWFuCkBAIC0xNDM2LDcgKzE0MzIsNiBAQCBfX1pOM0pTQzE3Qnl0ZWNv
ZGVHZW5lcmF0b3IxMWVtaXRQb3N0SW5jCiBfX1pOM0pTQ0wyM2NyZWF0ZVByb3RvdHlwZVByb3Bl
cnR5RVJOU18xMlZNRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU18xMEpTRnVuY3Rpb25FCiBfX1pO
SzNKU0M4TnVsbE5vZGU2aXNOdWxsRXYKIF9fWk4zSlNDM0pJVDE3ZW1pdF9vcF9qbmVxX251bGxF
UE5TXzExSW5zdHJ1Y3Rpb25FCi1fY3RpX29wX2NvbnZlcnRfdGhpcwogX2N0aV92bV9sYXp5TGlu
a0NvbnN0cnVjdAogX19aTjNKU0MxOEZ1bmN0aW9uRXhlY3V0YWJsZTI3Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsRVBOU185RXhlY1N0YXRlRVBOU18xNFNjb3BlQ2hhaW5Ob2RlRQogX19aTjNK
U0MzSklUMThlbWl0X29wX2dldF9jYWxsZWVFUE5TXzExSW5zdHJ1Y3Rpb25FCkBAIC0xNTU4LDcg
KzE1NTMsNiBAQCBfX1pOSzNKU0MxMlByb3BlcnR5U2xvdDE0ZnVuY3Rpb25HZXR0ZXJFCiBfX1pO
M0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IyMGVtaXRHZXRBcmd1bWVudEJ5VmFsRVBOU18xMFJlZ2lz
dGVySURFUzJfUzJfCiBfX1pOM0pTQzNKSVQyN2VtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbEVQ
TlNfMTFJbnN0cnVjdGlvbkUKIF9fWk4zSlNDM0pJVDMxZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbEVQTlNfMTFJbnN0cnVjdGlvbkVSUE5TXzEzU2xvd0Nhc2VFbnRyeUUKLV9fWk5LM0pT
QzhKU1N0cmluZzEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0NMMjBhcnJh
eVByb3RvRnVuY1NwbGljZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDN0pTQXJyYXk5c2V0TGVu
Z3RoRWoKIF9fWk4zSlNDTDExZ2V0UHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVj
dEVqCkBAIC0yMDIzLDcgKzIwMTcsNiBAQCBfX1pOSzNKU0MxNEV4cHJlc3Npb25Ob2RlMTdpc0Rv
dEFjY2Vzc29yCiBfX1pOM0pTQzlFeGVjU3RhdGUyMnN0cmluZ0NvbnN0cnVjdG9yVGFibGVFUFMw
XwogX19aTjNKU0NMMjZzdHJpbmdGcm9tQ2hhckNvZGVTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUUK
IF9fWk4zSlNDTDI1c3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdEVQTlNfOUV4ZWNTdGF0ZUUKLV9f
Wk5LM0pTQzEySlNBY3RpdmF0aW9uMTJ0b1RoaXNPYmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJO
U18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQogX19aTjNKU0M5RXhl
Y1N0YXRlMTFzdHJpbmdUYWJsZUVQUzBfCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MTRkZWxldGVQ
cm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKQEAgLTIyNzAsOCArMjI2
Myw2IEBAIF9fWk4zSlNDMTJKU0FjdGl2YXRpb24xOGdldEFyZ3VtZW50c0dldHQKIF9fWk4zSlND
MTJKU0FjdGl2YXRpb24xNWFyZ3VtZW50c0dldHRlckVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1
ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDTDIwYXJyYXlQcm90b0Z1bmNSZWR1Y2VFUE5T
XzlFeGVjU3RhdGVFCiBfX1pOM0pTQ0wyNWFycmF5UHJvdG9GdW5jUmVkdWNlUmlnaHRFUE5TXzlF
eGVjU3RhdGVFCi1fX1pOM0pTQzNKSVQyN2VtaXRfb3BfY29udmVydF90aGlzX3N0cmljdEVQTlNf
MTFJbnN0cnVjdGlvbkUKLV9fWk4zSlNDM0pJVDMxZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0
cmljdEVQTlNfMTFJbnN0cnVjdGlvbkVSUE5TXzEzU2xvd0Nhc2VFbnRyeUUKIF9fWk4zSlNDOUFy
Z3VtZW50czMzY3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5RVBOU185RXhlY1N0YXRl
RQogX19aTjNKU0MyM2NyZWF0ZVR5cGVFcnJvckZ1bmN0aW9uRVBOU185RXhlY1N0YXRlRVJLTlNf
N1VTdHJpbmdFCiBfX1pOM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMjFzZXRBY2Nlc3NvckRlc2Ny
aXB0b3JFTlNfN0pTVmFsdWVFUzFfagpAQCAtMjM0MCw3ICsyMzMxLDYgQEAgX19aTjNKU0NMMjVv
YmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkRVBOUwogX19aTjNKU0NMMjVvYmplY3RDb25zdHJ1Y3Rv
cklzRnJvemVuRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0NMMjlvYmplY3RDb25zdHJ1Y3Rvcklz
RXh0ZW5zaWJsZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDNFlhcnIyNUNoYXJhY3RlckNsYXNz
Q29uc3RydWN0b3I5YWRkU29ydGVkRVJOM1dURjZWZWN0b3JJdExtMEVFRXQKLV9fWk5LM0pTQzE5
SlNTdGF0aWNTY29wZU9iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTjNK
U0NMMjNzdHJpbmdQcm90b0Z1bmNUcmltTGVmdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDTDI0
c3RyaW5nUHJvdG9GdW5jVHJpbVJpZ2h0RVBOU185RXhlY1N0YXRlRQogX19aTjNXVEY2VmVjdG9y
SWNMbTBFRTE0ZXhwYW5kQ2FwYWNpdHlFbQpAQCAtMjM1MCw3ICsyMzQwLDYgQEAgX19aTkszV1RG
OENvbGxhdG9yN2NvbGxhdGVFUEt0bVMyX20KIF9fWk5LM1dURjhDb2xsYXRvcjE0Y3JlYXRlQ29s
bGF0b3JFdgogX19aTjNXVEY4Q29sbGF0b3JEMUV2CiBfX1pOM1dURjhDb2xsYXRvcjE1cmVsZWFz
ZUNvbGxhdG9yRXYKLV9fWk5LM0pTQzIwU3RyaWN0RXZhbEFjdGl2YXRpb24xMnRvVGhpc09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTVJZGVudGlmaWVyQXJlbmEyMW1ha2VOdW1lcmlj
SWRlbnRpZmllckVQTlNfMTJWTUVkCiBfX1pOM0pTQzZKU0NlbGwzcHV0RVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9f
Wk4zSlNDNkpTQ2VsbDNwdXRFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAkocmV2
aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbCgKIHsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoZXhlYy0+
Y2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihleGVjLT5ob3N0
VGhpc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGV4ZWMpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2Jq
UmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhp
cyhleGVjLCBOb3RTdHJpY3RNb2RlKSkpOwogCiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBl
eGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVu
dHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5MCw3ICs0OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
CiB7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBKU09iamVj
dFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBKU09iamVjdFJl
ZiB0aGlzT2JqUmVmID0gdG9SZWYoZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChl
eGVjKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVj
dCo+KGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpKTsK
ICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpz
Q2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RDYWxs
QXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0ganNDbGFzcy0+Y2FsbEFzRnVuY3Rp
b24pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJ
KHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSw3IEBAIEpTR2xvYmFsQ29udGV4
dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUKIAogICAgIGlmICghZ2xvYmFsT2JqZWN0Q2xhc3Mp
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTR2xvYmFsT2JqZWN0
OjpjcmVhdGUoKnZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCp2bSwganNOdWxs
KCkpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRHbG9iYWxUaGlzKCp2bSwgSlNQcm94eTo6
Y3JlYXRlKCp2bSwgSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKCp2bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPnByb3RvdHlwZSgpKSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIHJldHVy
biBKU0dsb2JhbENvbnRleHRSZXRhaW4odG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCkpKTsKICAgICB9CiAKQEAgLTE4Miw4ICsxODMsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRl
eHRHZXRHbG9iYWxPYmplY3QoSlNDCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwog
ICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKLSAgICAvLyBJdCBpcyBuZWNlc3Nh
cnkgdG8gY2FsbCB0b1RoaXNPYmplY3QgdG8gZ2V0IHRoZSB3cmFwcGVyIG9iamVjdCB3aGVuIHVz
ZWQgd2l0aCBXZWJDb3JlLgotICAgIHJldHVybiB0b1JlZihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMpKTsKKyAgICByZXR1cm4gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tZXRob2RUYWJsZSgpLT50b1RoaXMoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBleGVjLCBOb3RTdHJpY3RNb2RlKSkpOwogfQogCiBKU0NvbnRleHRH
cm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBKU09iamVjdFNldFByb3RvdHlwZShKU0NvbnRleHRS
ZWYgYwogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1ZhbHVl
IGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKIAotICAgIGpzT2JqZWN0LT5zZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCBqc1ZhbHVlLmlzT2JqZWN0KCkgPyBqc1ZhbHVl
IDoganNOdWxsKCkpOworICAgIGpzT2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhl
eGVjLCBqc1ZhbHVlLmlzT2JqZWN0KCkgPyBqc1ZhbHVlIDoganNOdWxsKCkpOwogfQogCiBib29s
IEpTT2JqZWN0SGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCkBAIC00NjQsOCArNDY0LDYgQEAgSlNWYWx1ZVJl
ZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udAogICAgIGlmICghanNUaGlzT2JqZWN0KQog
ICAgICAgICBqc1RoaXNPYmplY3QgPSBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIAotICAgIGpz
VGhpc09iamVjdCA9IGpzVGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KGpz
VGhpc09iamVjdCwgZXhlYyk7Ci0gICAgCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlz
dDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKICAgICAg
ICAgYXJnTGlzdC5hcHBlbmQodG9KUyhleGVjLCBhcmd1bWVudHNbaV0pKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmVFeHBvcnRzLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlRXhw
b3J0cy5kZWYJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVFeHBvcnRzLmRl
Zgkod29ya2luZyBjb3B5KQpAQCAtNTE3LDkgKzUxNyw2IEBAIEVYUE9SVFMKICAgICA/dG9TdHJp
bmdEZWNpbWFsQERlY2ltYWxOdW1iZXJAV1RGQEBRQkVJUEFFSUBaCiAgICAgP3RvU3RyaW5nRXhw
b25lbnRpYWxARGVjaW1hbE51bWJlckBXVEZAQFFCRUlQQUVJQFoKICAgICA/dG9TdHJpbmdTbG93
Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAg
ID90b1RoaXNPYmplY3RASlNHbG9iYWxPYmplY3RASlNDQEBLQVBBVkpTT2JqZWN0QDJAUEFWSlND
ZWxsQDJAUEFWRXhlY1N0YXRlQDJAQFoKLSAgICA/dG9UaGlzT2JqZWN0QEpTT2JqZWN0QEpTQ0BA
U0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAgID90b1RoaXNPYmplY3RT
bG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgog
ICAgID90b1VJbnQ2NEBTdHJpbmdAV1RGQEBRQkVfS1BBX05AWgogICAgID90b1VJbnRAU3RyaW5n
QFdURkBAUUJFSVBBX05AWgogICAgID90b1VJbnRTdHJpY3RAU3RyaW5nQFdURkBAUUJFSVBBX05I
QFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlRXhwb3J0R2VuZXJhdG9yL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmVFeHBvcnRHZW5lcmF0b3IvSmF2YVNjcmlwdENvcmVFeHBvcnRzLmRl
Zi5pbgkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVFeHBvcnRHZW5lcmF0b3IvSmF2YVNjcmlwdENv
cmVFeHBvcnRzLmRlZi5pbgkod29ya2luZyBjb3B5KQpAQCAtNTE2LDkgKzUxNiw2IEBAIEVYUE9S
VFMKICAgICA/dG9TdHJpbmdEZWNpbWFsQERlY2ltYWxOdW1iZXJAV1RGQEBRQkVJUEFFSUBaCiAg
ICAgP3RvU3RyaW5nRXhwb25lbnRpYWxARGVjaW1hbE51bWJlckBXVEZAQFFCRUlQQUVJQFoKICAg
ICA/dG9TdHJpbmdTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNTdHJpbmdAMkBQQVZFeGVj
U3RhdGVAMkBAWgotICAgID90b1RoaXNPYmplY3RASlNHbG9iYWxPYmplY3RASlNDQEBLQVBBVkpT
T2JqZWN0QDJAUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQFoKLSAgICA/dG9UaGlzT2JqZWN0
QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAg
ID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmplY3RAMkBQQVZF
eGVjU3RhdGVAMkBAWgogICAgID90b1VJbnQ2NEBTdHJpbmdAV1RGQEBRQkVfS1BBX05AWgogICAg
ID90b1VJbnRAU3RyaW5nQFdURkBAUUJFSVBBX05AWgogICAgID90b1VJbnRTdHJpY3RAU3RyaW5n
QFdURkBAUUJFSVBBX05IQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQxLDkgKzc0MSw5
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIGNyZWF0ZV90aGlzICVzLCAlcywgJXUiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgp
LCBpbmZlcnJlZElubGluZUNhcGFjaXR5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfY29udmVydF90aGlzOiB7CisgICAgICAgIGNhc2Ugb3BfdG9fdGhp
czogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXNcdCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSB0
b190aGlzXHQgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwog
ICAgICAgICAgICAgKytpdDsgLy8gU2tpcCB2YWx1ZSBwcm9maWxlLgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTE3OTMsNyArMTc5Myw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2Nr
KFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5n
dGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdOwogICAgICAgICAg
ICAgLy8gZmFsbHRocm91Z2gKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2NvbnZlcnRfdGhp
czoKKyAgICAgICAgY2FzZSBvcF90b190aGlzOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoK
ICAgICAgICAgY2FzZSBvcF9jYWxsX3B1dF9yZXN1bHQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Nh
bGxlZTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogY2xhc3MgRXhlY1N0YXRlOwotY2xhc3Mg
RXhlY3V0YWJsZUJhc2U7CitjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgSlNGdW5jdGlv
bjsKIAogc3RydWN0IENvZGVPcmlnaW4gewpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgQ29kZU9y
aWdpbiB7CiAgICAgCiAgICAgLy8gSWYgdGhlIGNvZGUgb3JpZ2luIGNvcnJlc3BvbmRzIHRvIGlu
bGluZWQgY29kZSwgZ2l2ZXMgeW91IHRoZSBoZWFwIG9iamVjdCB0aGF0CiAgICAgLy8gd291bGQg
aGF2ZSBvd25lZCB0aGUgY29kZSBpZiBpdCBoYWQgbm90IGJlZW4gaW5saW5lZC4gT3RoZXJ3aXNl
IHJldHVybnMgMC4KLSAgICBFeGVjdXRhYmxlQmFzZSogY29kZU9yaWdpbk93bmVyKCkgY29uc3Q7
CisgICAgU2NyaXB0RXhlY3V0YWJsZSogY29kZU9yaWdpbk93bmVyKCkgY29uc3Q7CiAgICAgCiAg
ICAgdW5zaWduZWQgc3RhY2tPZmZzZXQoKSBjb25zdDsKICAgICAKQEAgLTEwMCw3ICsxMDAsNyBA
QCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIFZl
Y3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmd1bWVudHM7Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFi
bGVCYXNlPiBleGVjdXRhYmxlOworICAgIFdyaXRlQmFycmllcjxTY3JpcHRFeGVjdXRhYmxlPiBl
eGVjdXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7IC8vIFRoaXMg
bWF5IGJlIG51bGwsIGluZGljYXRpbmcgdGhhdCB0aGlzIGlzIGEgY2xvc3VyZSBjYWxsIGFuZCB0
aGF0IHRoZSBKU0Z1bmN0aW9uIGFuZCBKU1Njb3BlIGFyZSBhbHJlYWR5IG9uIHRoZSBzdGFjay4K
ICAgICBDb2RlT3JpZ2luIGNhbGxlcjsKICAgICBCaXRWZWN0b3IgY2FwdHVyZWRWYXJzOyAvLyBJ
bmRleGVkIGJ5IHRoZSBtYWNoaW5lIGNhbGwgZnJhbWUncyB2YXJpYWJsZSBudW1iZXJpbmcuCkBA
IC0xNDksNyArMTQ5LDcgQEAgaW5saW5lIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXRGb3JD
bwogICAgIHJldHVybiBkYXRhLT5jYWxsUmV0dXJuT2Zmc2V0OwogfQogCi1pbmxpbmUgRXhlY3V0
YWJsZUJhc2UqIENvZGVPcmlnaW46OmNvZGVPcmlnaW5Pd25lcigpIGNvbnN0CitpbmxpbmUgU2Ny
aXB0RXhlY3V0YWJsZSogQ29kZU9yaWdpbjo6Y29kZU9yaWdpbk93bmVyKCkgY29uc3QKIHsKICAg
ICBpZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ob3BfY3JlYXRlX2FyZ3VtZW50
cywgMikgXAogICAgIG1hY3JvKG9wX2NyZWF0ZV90aGlzLCA0KSBcCiAgICAgbWFjcm8ob3BfZ2V0
X2NhbGxlZSwgMykgXAotICAgIG1hY3JvKG9wX2NvbnZlcnRfdGhpcywgMykgXAorICAgIG1hY3Jv
KG9wX3RvX3RoaXMsIDMpIFwKICAgICBcCiAgICAgbWFjcm8ob3BfbmV3X29iamVjdCwgNCkgXAog
ICAgIG1hY3JvKG9wX25ld19hcnJheSwgNSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsOCArMzkzLDggQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogCiAgICAgaWYgKGlzQ29uc3RydWN0
b3IoKSkgewogICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOwotICAgIH0g
ZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgJiYgKGZ1bmN0aW9uQm9keS0+dXNl
c1RoaXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zaG91bGRFbWl0RGVidWdIb29r
cykpIHsKLSAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxl
ZE9wY29kZShvcF9jb252ZXJ0X3RoaXMpOworICAgIH0gZWxzZSBpZiAoZnVuY3Rpb25Cb2R5LT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hv
b2tzKSB7CisgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmls
ZWRPcGNvZGUob3BfdG9fdGhpcyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxs
KCZtX3RoaXNSZWdpc3RlcikpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmls
ZSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM4LDcgKzExMzgs
NyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgIG1f
aGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAg
IGNhc2UgQ29udmVydFRoaXM6IHsKKyAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFj
dFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JOb2RlKG5vZGUpOwogICAgICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMDAsOSArMjAwMCw5IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBzZXQoaSwg
Y29uc3RhbnRVbmRlZmluZWQoKSwgU2V0T25FbnRyeSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9lbnRlcik7CiAKLSAgICAgICAgY2FzZSBvcF9jb252ZXJ0X3RoaXM6IHsKKyAgICAgICAg
Y2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXRUaGlzKCk7Ci0g
ICAgICAgICAgICBpZiAob3AxLT5vcCgpICE9IENvbnZlcnRUaGlzKSB7CisgICAgICAgICAgICBp
ZiAob3AxLT5vcCgpICE9IFRvVGhpcykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50UHJvZmlsaW5n
SW5kZXgpOwogICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOwpAQCAtMjAxNSw3ICsyMDE1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICB8fCAhcHJvZmlsZS0+bV9zaW5nbGV0b25W
YWx1ZQogICAgICAgICAgICAgICAgICAgICB8fCAhcHJvZmlsZS0+bV9zaW5nbGV0b25WYWx1ZS5p
c0NlbGwoKQogICAgICAgICAgICAgICAgICAgICB8fCBwcm9maWxlLT5tX3NpbmdsZXRvblZhbHVl
LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSAhPSAmU3RydWN0dXJlOjpzX2luZm8pCi0gICAgICAgICAg
ICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChDb252ZXJ0VGhpcywgb3AxKSk7CisgICAgICAg
ICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIG9wMSkpOwogICAgICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAg
ICAgICAgICAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsCkBAIC0yMDIzLDcgKzIwMjMsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAg
ICAgICBvcDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NvbnZlcnRfdGhpcyk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF90b190aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6IHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2
aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGVPcGNvZGUoCiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNh
c2Ugb3BfZW50ZXI6Ci0gICAgY2FzZSBvcF9jb252ZXJ0X3RoaXM6CisgICAgY2FzZSBvcF90b190
aGlzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6CiAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOgog
ICAgIGNhc2Ugb3BfYml0YW5kOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzUsOCArNjM1LDE2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgQ29udmVydFRoaXM6IHsKKyAgICAgICAgY2FzZSBUb1RoaXM6IHsKKyAg
ICAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUt
PmNvZGVPcmlnaW4pLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2Rl
OworCiAgICAgICAgICAgICBpZiAoaXNPdGhlclNwZWN1bGF0aW9uKG5vZGUtPmNoaWxkMSgpLT5w
cmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1v
ZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxl
PE90aGVyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0lkZW50aXR5KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhhbnRvbSwgbm9k
ZS0+Y29kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5u
b2RlKCksIE90aGVyVXNlKSk7CkBAIC02NDUsNyArNjUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAg
aWYgKGlzT2JqZWN0U3BlY3VsYXRpb24obm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkpIHsK
KyAgICAgICAgICAgIGlmIChpc0ZpbmFsT2JqZWN0U3BlY3VsYXRpb24obm9kZS0+Y2hpbGQxKCkt
PnByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlBy
b2ZpdGFibGU8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDEw
ICszNTUsMTAgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENv
ZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmpl
Y3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVybiBvYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChvYmplY3QsIDApOworICAgICAgICByZXR1cm4g
anNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZSgpLT50b1RoaXMob2JqZWN0LCBv
YmplY3QtPmdsb2JhbEV4ZWMoKSwgTm90U3RyaWN0TW9kZSkpOwogICAgIH0KICAgICAKLSAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSkKKyAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUp
CiAgICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwpAQCAt
MzY2LDcgKzM2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+
ZXhlY3V0YWJsZS5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICBTY3JpcHRFeGVjdXRh
YmxlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgewog
ICAgICAgICByZXR1cm4gZXhlY3V0YWJsZUZvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2
aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhJZGVudGl0eSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAg
IC8qIE5vZGVzIGZvciBoYW5kbGluZyBmdW5jdGlvbnMgKGJvdGggYXMgY2FsbCBhbmQgYXMgY29u
c3RydWN0KS4gKi9cCi0gICAgbWFjcm8oQ29udmVydFRoaXMsIE5vZGVSZXN1bHRKUykgXAorICAg
IG1hY3JvKFRvVGhpcywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9k
ZVJlc3VsdEpTKSAvKiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSBy
ZXR1cm5pbmcgaXQgYW55d2F5LiAqLyBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhTZXRDYWxsZWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTQ5
NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQxLDEyICszNDEsMTIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBERkdfT1BFUkFUSU9OIAogCiBleHRlcm4gIkMiIHsKIAotRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25Db252ZXJ0VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcCkKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVG9U
aGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wKS50b1RoaXNPYmplY3QoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKSk7CiB9CiAKIEpT
Q2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGNvbnN0cnVjdG9yLCBpbnQzMl90IGlubGluZUNhcGFjaXR5KQpAQCAtNTY0LDE4
ICs1NjQsMTIgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZnVuY3Rpb24oZXhlYywgYXNPYmplY3QoYmFzZSksICpp
ZGVudCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEpTQ2VsbCogdmFsdWUpCitFbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIGJhc2UsIEpTQ2VsbCogZ2V0dGVyU2V0dGVyKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwotICAgIAotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIo
dmFsdWUpOwotICAgIEpTT2JqZWN0KiBnZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPmdldHRlcigpOwot
ICAgIGlmICghZ2V0dGVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgZ2V0dGVyLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGFzT2JqZWN0KGJhc2UpLCBBcmdMaXN0KCkpKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FsbEdldHRlcihleGVjLCBiYXNlLCBnZXR0ZXJTZXR0ZXIpKTsKIH0KIAogdm9p
ZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyAr
MTMxLDcgQEAgSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0ZybwogLy8gVGhl
c2Ugcm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRp
b25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUq
LCBKU09iamVjdCogY29uc3RydWN0b3IsIGludDMyX3QgaW5saW5lQ2FwYWNpdHkpIFdURl9JTlRF
Uk5BTDsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydFRoaXMo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXMoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlWYWwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODEs
NyArMzgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAg
ICAgICAgY2FzZSBDb252ZXJ0VGhpczogeworICAgICAgICBjYXNlIFRvVGhpczogewogICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCk7CiAgICAgICAgICAgICBpZiAocHJlZGljdGlvbikgewogICAgICAgICAgICAgICAgIGlm
IChwcmVkaWN0aW9uICYgflNwZWNPYmplY3QpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTQ5
NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4Miw3ICszNjgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IAotICAgIGNhc2UgQ29udmVydFRoaXM6IHsKKyAgICBjYXNlIFRvVGhpczogewogICAgICAgICBB
U1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogCiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zNjkz
LDcgKzM2OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIAogICAgICAgICBHUFJSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAgICAgR1BS
UmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQ29udmVydFRoaXMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgdGhp
c1ZhbHVlVGFnR1BSLCB0aGlzVmFsdWVQYXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Ub1RoaXMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwg
dGhpc1ZhbHVlVGFnR1BSLCB0aGlzVmFsdWVQYXlsb2FkR1BSKTsKICAgICAgICAgCiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTkyLDcgKzM1OTIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBDb252ZXJ0VGhpczogeworICAgIGNhc2UgVG9U
aGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CkBA
IC0zNjAwLDcgKzM2MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIAogICAgICAgICBHUFJSZXN1
bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRU
aGlzLCByZXN1bHQuZ3ByKCksIHRoaXNWYWx1ZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVG9UaGlzLCByZXN1bHQuZ3ByKCksIHRoaXNWYWx1ZUdQUik7CiAgICAgICAgIAog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDYgQEAg
SlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIH0KIAogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbGVyRnJhbWUtPnRoaXNWYWx1ZSgpOwotICAgIEFTU0VSVChpc1ZhbGlk
VGhpc09iamVjdCh0aGlzVmFsdWUsIGNhbGxGcmFtZSkpOwogICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNhbGxGcmFtZS0+dm0oKS5pbnRlcnByZXRlcjsKICAgICByZXR1cm4gaW50ZXJw
cmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hh
aW4pOwogfQpAQCAtODIyLDcgKzgyMSw2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
UHJvZ3JhbUV4ZWMKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoKTsKICAg
ICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAKLSAgICBBU1NFUlQoaXNWYWxpZFRoaXNPYmplY3Qo
dGhpc09iaiwgY2FsbEZyYW1lKSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24pOwogICAgIEFT
U0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3ko
KSkKQEAgLTk4OCw3ICs5ODYsNiBAQCBmYWlsZWRKU09OUDoKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENh
bGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0o
KTsKLSAgICBBU1NFUlQoaXNWYWxpZFRoaXNPYmplY3QodGhpc1ZhbHVlLCBjYWxsRnJhbWUpKTsK
ICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0u
aXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKQEAgLTEy
NDgsNyArMTI0NSw2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEK
ICAgICBTYW1wbGluZ1Njb3BlIHNhbXBsaW5nU2NvcGUodGhpcyk7CiAgICAgCiAgICAgQVNTRVJU
KHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwotICAgIEFTU0VSVChpc1ZhbGlkVGhp
c09iamVjdCh0aGlzVmFsdWUsIGNhbGxGcmFtZSkpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9u
KTsKICAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBpZiAodm0uaXNDb2xs
ZWN0b3JCdXN5KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MCwxMiAr
MjcwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgLy8gVGhpcyB2
YWx1ZSBtdXN0IG5vdCBiZSBhbiBvYmplY3QgdGhhdCB3b3VsZCByZXF1aXJlIHRoaXMgY29udmVy
c2lvbiAoV2ViQ29yZSdzIGdsb2JhbCBvYmplY3QpLgotICAgIGlubGluZSBib29sIGlzVmFsaWRU
aGlzT2JqZWN0KEpTVmFsdWUgdGhpc1ZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAg
ICAgICByZXR1cm4gIXRoaXNWYWx1ZS5pc09iamVjdCgpIHx8IHRoaXNWYWx1ZS50b1RoaXNPYmpl
Y3QoZXhlYykgPT0gdGhpc1ZhbHVlOwotICAgIH0KLQogICAgIEpTVmFsdWUgZXZhbChDYWxsRnJh
bWUqKTsKICAgICBDYWxsRnJhbWUqIGxvYWRWYXJhcmdzKENhbGxGcmFtZSosIEpTU3RhY2sqLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVudHMsIGludCBmaXJzdEZyZWVSZWdpc3Rl
cik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE0OTU2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMyLDcgKzIzMiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9jYWxs
ZWUpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKLSAgICAgICAgREVGSU5FX09Q
KG9wX2NvbnZlcnRfdGhpcykKKyAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCiAgICAgICAg
IERFRklORV9PUChvcF9pbml0X2xhenlfcmVnKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRl
X2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQpAQCAtNDM1LDcgKzQzNSw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9jYWxsX2V2YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9j
YWxsX3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25zdHJ1Y3QpCi0g
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb252ZXJ0X3RoaXMpCisgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF90b190aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Y3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kaXYpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjUzLDcgKzY1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVf
dGhpcyhJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfY29udmVydF90aGlzKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CkBAIC03NTYsNyArNzU2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF9ldmFsKEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NhbGxfdmFyYXJncyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2VxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAko
cmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgwLDQ2ICsxMTgwLDI4IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnUKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jb252
ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICB1bnNp
Z25lZCB0aGlzUmVnaXN0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAg
ICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMywgcmVnVDIpOwogCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMCk7CiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7
CiAgICAgICAgIG1vdmUocmVnVDMsIHJlZ1QxKTsKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZSgpOwogICAgIH0KLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3Mo
cmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Nv
bnZlcnRfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKLSAgICB2b2lkKiBnbG9iYWxUaGlzID0gbV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7CiAgICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QxKTsKLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICB9Ci0gICAgSnVtcCBpc05vdFVuZGVmaW5lZCA9IGJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRh
ZykpOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoZ2xvYmFsVGhpcyksIHJlZ1QwKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSwgcmVnVDEpOwotICAgIGVtaXRTdG9yZSh0aGlzUmVnaXN0ZXIsIHJlZ1QxLCByZWdU
MCk7Ci0gICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBPUENPREVfTEVOR1RIKG9wX2NvbnZl
cnRfdGhpcykpOwotCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGlmIChzaG91bGRFbWl0
UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZyksIHJlZ1QxKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSksIHJlZ1QwKTsKLSAgICB9Ci0gICAgaXNOb3RVbmRlZmluZWQubGluayh0aGlz
KTsKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX2NvbnZlcnRfdGhpcyk7CisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3RpX29wX3RvX3RoaXMpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QzLCBy
ZWdUMik7CiAgICAgc3R1YkNhbGwuY2FsbCh0aGlzUmVnaXN0ZXIpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04ODcsMTYgKzg4NywxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbml0X2xhenlfcmVnKEluc3Ry
dWN0CiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoKGludDY0X3QpMCksIEFkZHJlc3MoY2FsbEZy
YW1lUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBkc3QpKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwot
ICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKKyAgICBp
ZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KCk7Ci0gICAgfQotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdU
MSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOworCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9jYWxs
ZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTk1MiwyNSArOTUyLDExIEBA
IHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfZGlkX2NhbGwoSW5zdHIKIAogLy8gU2xvdyBjYXNl
cwogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHZvaWQq
IGdsb2JhbFRoaXMgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMoKTsK
LQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygp
KQotICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCgoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpKSksIHJlZ1QwKTsKLSAgICBKdW1wIGlzTm90VW5kZWZpbmVkID0gYnJhbmNoNjQoTm90RXF1
YWwsIHJlZ1QxLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7
Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwotICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGdsb2JhbFRoaXMpKSkp
LCByZWdUMCk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCByZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBPUENP
REVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpcykpOwotCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwot
ICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwgcmVnVDApOwot
ICAgIGlzTm90VW5kZWZpbmVkLmxpbmsodGhpcyk7Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZSgpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0X3RoaXMp
OworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF90b190aGlzKTsKICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5OSwxNiArMTM5OSwxNCBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfY29udmVydF90aGlzKQorREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFs
dWUsIG9wX3RvX3RoaXMpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwogCiAgICAgSlNWYWx1ZSB2MSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIEFTU0VS
VCh2MS5pc1ByaW1pdGl2ZSgpKTsKLQotICAgIEpTT2JqZWN0KiByZXN1bHQgPSB2MS50b1RoaXNP
YmplY3QoY2FsbEZyYW1lKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHYxLnRvVGhpcyhjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6
IE5vdFN0cmljdE1vZGUpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTcyMCwxMyArMTcxOCw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KIHsKICAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFz
R2V0dGVyU2V0dGVyKHN0YWNrRnJhbWUuYXJnc1swXS5qc09iamVjdCgpKTsKLSAgICBpZiAoIWdl
dHRlclNldHRlci0+Z2V0dGVyKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgSlNPYmplY3QqIGdldHRlciA9IGFzT2JqZWN0KGdldHRlclNldHRl
ci0+Z2V0dGVyKCkpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRh
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoY2FsbEZyYW1lLCBnZXR0ZXIsIGNhbGxUeXBl
LCBjYWxsRGF0YSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpzT2JqZWN0KCksIEFyZ0xpc3QoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsR2V0dGVyKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdz
WzFdLmpzT2JqZWN0KCksIHN0YWNrRnJhbWUuYXJnc1swXS5qc09iamVjdCgpKTsKICAgICBpZiAo
Y2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuVG9UaHJvd1RyYW1wb2xp
bmUoJmNhbGxGcmFtZS0+dm0oKSwgc3RhY2tGcmFtZS5hcmdzWzJdLnJldHVybkFkZHJlc3MoKSwg
U1RVQl9SRVRVUk5fQUREUkVTUyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDcgKzMzMCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9TVFVCIGN0aV9vcF9jYWxsX2V2YWwKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9v
cF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY2hlY2tfaGFzX2luc3RhbmNl
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X1NUVUIgY3RpX29wX2NyZWF0ZV90aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NvbnZlcnRfdGhpcyhTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF90b190aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZGVs
X2J5X2lkKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX2RlbF9ieV92YWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsNyBAQCB2b2lkIERhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICNlbmRpZgogICAgIEFTU0VSVChTdHJpbmdUeXBlID09
IDUpOwogICAgIEFTU0VSVChPYmplY3RUeXBlID09IDE3KTsKKyAgICBBU1NFUlQoRmluYWxPYmpl
Y3RUeXBlID09IDE4KTsKICAgICBBU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAxKTsK
ICAgICBBU1NFUlQoSW1wbGVtZW50c0hhc0luc3RhbmNlID09IDIpOwogICAgIEFTU0VSVChJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTEsMTYgKzQ5MSwxNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y3JlYXRlX3RoCiAgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0
cnVjdHVyZSkpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29udmVydF90
aGlzKQorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKICAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwotICAg
IEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0g
ICAgcGNbT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpIC0gMV0udS5wcm9maWxlLT5tX2J1
Y2tldHNbMF0gPQorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfdG9fdGhpcykgLSAxXS51LnByb2Zp
bGUtPm1fYnVja2V0c1swXSA9CiAgICAgICAgIEpTVmFsdWU6OmVuY29kZSh2MS5zdHJ1Y3R1cmVP
clVuZGVmaW5lZCgpKTsKICNlbmRpZgotICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3Qo
ZXhlYykpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsKIH0KIAog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTQ5NTY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NvCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0
ZV9hY3RpdmF0aW9uKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3Jl
YXRlX2FyZ3VtZW50cyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV90aGlzKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29udmVy
dF90aGlzKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fdGhpcyk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
Mzk2LDE5ICszOTYsMTkgQEAgX2xsaW50X29wX2dldF9jYWxsZWU6CiAgICAgZGlzcGF0Y2goMykK
IAogCi1fbGxpbnRfb3BfY29udmVydF90aGlzOgorX2xsaW50X29wX3RvX3RoaXM6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93CisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93CiAgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDAKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGJibmVxIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRv
VGhpc1Nsb3cKICAgICBsb2FkaSA4W1BDXSwgdDEKICAgICB2YWx1ZVByb2ZpbGUoQ2VsbFRhZywg
dDAsIHQxKQogICAgIGRpc3BhdGNoKDMpCiAKLS5vcENvbnZlcnRUaGlzU2xvdzoKLSAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jb252ZXJ0X3RoaXMpCisub3BUb1RoaXNTbG93Ogor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgZGlzcGF0Y2go
MykKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTI3OSwxOSArMjc5LDE5IEBAIF9sbGludF9vcF9nZXRfY2FsbGVlOgogICAgIGRpc3BhdGNo
KDMpCiAKIAotX2xsaW50X29wX2NvbnZlcnRfdGhpczoKK19sbGludF9vcF90b190aGlzOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MAotICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BDb252ZXJ0
VGhpc1Nsb3cKKyAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93
CisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0s
IEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRwRnJvbUluc3RydWN0aW9u
KDIsIHQxKQogICAgIHZhbHVlUHJvZmlsZSh0MCwgdDEpCiAgICAgZGlzcGF0Y2goMykKIAotLm9w
Q29udmVydFRoaXNTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NvbnZl
cnRfdGhpcykKKy5vcFRvVGhpc1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfdG9fdGhpcykKICAgICBkaXNwYXRjaCgzKQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE0
OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNvbnN0IFNsb3dQdXRBcnJh
eVN0b3JhZ2VTaGFwZSA9IDMwCiAjIFR5cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9
IDUKIGNvbnN0IE9iamVjdFR5cGUgPSAxNworY29uc3QgRmluYWxPYmplY3RUeXBlID0gMTgKIAog
IyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAx
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVH
ZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0
LDcgQEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjphZGRQYXJlbnRGb3JDb25zbwogICAgIEpTVmFs
dWUgZnVuY3Rpb247CiAKICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxs
ZXIoZXhlYywgbGluZU51bWJlciwgc291cmNlSUQsIHNvdXJjZVVSTCwgZnVuY3Rpb24pOwotICAg
IG1fY3VycmVudE5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKGV4ZWMsIExlZ2FjeVByb2ZpbGVy
OjpjcmVhdGVDYWxsSWRlbnRpZmllcihleGVjLCBmdW5jdGlvbiA/IGZ1bmN0aW9uLnRvVGhpc09i
amVjdChleGVjKSA6IDAsIHNvdXJjZVVSTCwgbGluZU51bWJlciksIG1faGVhZC5nZXQoKSwgbV9o
ZWFkLmdldCgpKTsKKyAgICBtX2N1cnJlbnROb2RlID0gUHJvZmlsZU5vZGU6OmNyZWF0ZShleGVj
LCBMZWdhY3lQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb24sIHNv
dXJjZVVSTCwgbGluZU51bWJlciksIG1faGVhZC5nZXQoKSwgbV9oZWFkLmdldCgpKTsKICAgICBt
X2hlYWQtPmluc2VydE5vZGUobV9jdXJyZW50Tm9kZS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAJKHJldmlzaW9uIDE0OTU2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIEpTVmFsdWUgY2FsbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBj
b25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQogewogICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTIHx8IGNhbGxUeXBl
ID09IENhbGxUeXBlSG9zdCk7Ci0gICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1
ZSwgZXhlYykpOwogICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlQ2FsbChl
eGVjLCBhc09iamVjdChmdW5jdGlvbk9iamVjdCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1Zh
bHVlLCBhcmdzKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw4IEBAIHN0cnVjdCBN
ZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBib29sICgqR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEZ1bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90
Jik7CiAgICAgR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0aW9uUHRyIGdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXg7CiAKLSAgICB0eXBlZGVmIEpTT2JqZWN0KiAoKlRvVGhpc09iamVjdEZ1
bmN0aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqKTsKLSAgICBUb1RoaXNPYmplY3RGdW5jdGlv
blB0ciB0b1RoaXNPYmplY3Q7CisgICAgdHlwZWRlZiBKU1ZhbHVlICgqVG9UaGlzRnVuY3Rpb25Q
dHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKKyAgICBUb1RoaXNGdW5jdGlvblB0
ciB0b1RoaXM7CiAKICAgICB0eXBlZGVmIEpTVmFsdWUgKCpEZWZhdWx0VmFsdWVGdW5jdGlvblB0
cikoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
ICAgICBEZWZhdWx0VmFsdWVGdW5jdGlvblB0ciBkZWZhdWx0VmFsdWU7CkBAIC0xMjgsNyArMTI4
LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdCwg
XAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCi0gICAg
ICAgICZDbGFzc05hbWU6OnRvVGhpc09iamVjdCwgXAorICAgICAgICAmQ2xhc3NOYW1lOjp0b1Ro
aXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVmYXVsdFZhbHVlLCBcCiAgICAgICAgICZDbGFz
c05hbWU6OmdldE93blByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcg
Kzc5LDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IAogCiAgICAg
aWYgKCF0aGlzVmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHRoaXNWYWx1ZSA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKLSAgICBKU09iamVjdCog
dGhpc09iaiA9IHRoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5vdFN0cmlj
dE1vZGUpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1
dGUocHJvZ3JhbSwgZXhlYywgdGhpc09iaik7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNyw3ICsxMTA3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKLSAgICBKU09i
amVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKTsKKyAgICBKU09iamVj
dCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhleGVjLCBOb3RT
dHJpY3RNb2RlKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkocmV2aXNpb24gMTQ5NTY5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogCisjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgpAQCAtNDQsNCArNDUsNDUgQEAgdm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKgogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NldHRlcik7CiB9CiAKK0pT
VmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBn
ZXR0ZXJTZXR0ZXIpCit7CisgICAgLy8gRklYTUU6IFNvbWUgY2FsbGVycyBtYXkgaW52b2tlIGdl
dCgpIHdpdGhvdXQgY2hlY2tpbmcgZm9yIGFuIGV4Y2VwdGlvbiBmaXJzdC4KKyAgICAvLyBXZSB3
b3JrIGFyb3VuZCB0aGF0IGJ5IGNoZWNraW5nIGhlcmUuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CisKKyAgICBKU09iamVj
dCogZ2V0dGVyID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlciktPmdldHRlcigp
OworICAgIGlmICghZ2V0dGVyKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAg
IC8vIFVubGlrZSBvdGhlciBmdW5jdGlvbiBjYWxscywgZ2V0dGVyIGNhbGxzIGFyZSBzcGVjaWZp
ZWQgdG8gVG9PYmplY3QgdGhlaXIgYmFzZQorICAgIC8vIGF0IHRoZSBjYWxsIHNpdGUuCisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBiYXNlLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKTsKKwor
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5t
ZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKKyAgICByZXR1cm4g
Y2FsbChleGVjLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBBcmdMaXN0
KCkpOworfQorCit2b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9kZSkK
K3sKKyAgICBKU09iamVjdCogc2V0dGVyID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNl
dHRlciktPnNldHRlcigpOworICAgIGlmICghc2V0dGVyKSB7CisgICAgICAgIGlmIChlY21hTW9k
ZSA9PSBTdHJpY3RNb2RlKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIFVubGlrZSBvdGhlciBmdW5jdGlvbiBjYWxscywgc2V0dGVyIGNhbGxzIGFyZSBz
cGVjaWZpZWQgdG8gVG9PYmplY3QgdGhlaXIgYmFzZQorICAgIC8vIGF0IHRoZSBjYWxsIHNpdGUu
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBiYXNlLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2Rl
KTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQodmFs
dWUpOworCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBz
ZXR0ZXItPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOworICAg
IGNhbGwoZXhlYywgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2
ICs3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2V0
dGVyU2V0dGVyKj4odmFsdWUuYXNDZWxsKCkpOwogICAgIH0KIAorICAgIEpTVmFsdWUgY2FsbEdl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyKTsKKyAg
ICB2b2lkIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRl
clNldHRlciwgSlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsOCArMjI4LDEwIEBAIGJvb2wg
SlNBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwKICAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAotSlNPYmplY3QqIEpT
QWN0aXZhdGlvbjo6dG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYykKK0pTVmFs
dWUgSlNBY3RpdmF0aW9uOjp0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9k
ZSBlY21hTW9kZSkKIHsKKyAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uaAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwogCi0gICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSopOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwogCiAgICAgICAgIHZvaWQgdGVhck9mZihWTSYpOwog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTAgKzgwLDEzIEBAIEpTT2Jq
ZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWMKICAgICByZXR1cm4gSlNOb3RBbk9i
amVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi1KU09iamVjdCogSlNWYWx1ZTo6dG9UaGlzT2JqZWN0
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNT
bG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKSBjb25zdAogewogICAg
IEFTU0VSVCghaXNDZWxsKCkpOwogCisgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisg
ICAgICAgIHJldHVybiAqdGhpczsKKwogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKQEAg
LTE0NywyMCArMTUwLDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUq
IAogCiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAg
ICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgSlNP
YmplY3QqIHNldHRlckZ1bmMgPSBhc0dldHRlclNldHRlcihncyktPnNldHRlcigpOyAgICAgICAg
Ci0gICAgICAgICAgICAgICAgaWYgKCFzZXR0ZXJGdW5jKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJzZXR0aW5nIGEg
cHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBzZXR0ZXJGdW5jLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShzZXR0ZXJGdW5jLCBj
YWxsRGF0YSk7Ci0gICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICAgICAgICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGlzIGlzIFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBzdWJzdGl0
dXRlIHRoZSBzaGVsbC4KLSAgICAgICAgICAgICAgICBjYWxsKGV4ZWMsIHNldHRlckZ1bmMsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgKnRoaXMsIGFyZ3MpOworICAgICAgICAgICAgICAgIGNhbGxTZXR0
ZXIoZXhlYywgdmFsdWUsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1v
ZGUgOiBOb3RTdHJpY3RNb2RlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJ
KHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgTWV0aG9kVGFi
bGU7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsKIAogZW51bSBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZl
clN0cmluZyB9OwotCitlbnVtIEVDTUFNb2RlIHsgU3RyaWN0TW9kZSwgTm90U3RyaWN0TW9kZSB9
OwogCiB0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCkBAIC0yNDYsNyArMjQ2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAg
dm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNT
dGF0ZSopIGNvbnN0OworICAgIEpTVmFsdWUgdG9UaGlzKEV4ZWNTdGF0ZSosIEVDTUFNb2RlKSBj
b25zdDsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyogdG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBj
b25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZyB0b1dURlN0cmluZ1Nsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0
b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0
ZSopIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9UaGlzU2xvd0Nhc2Uo
RXhlY1N0YXRlKiwgRUNNQU1vZGUpIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAvKgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTQsOSArNjE0
LDkgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aW5oZXJpdHMoY29uc3QgQ2xhcwogICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aW5oZXJpdHMoY2xhc3NJbmZvKTsKIH0KIAotaW5saW5l
IEpTT2JqZWN0KiBKU1ZhbHVlOjp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
aW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzKEV4ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUg
ZWNtYU1vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1ldGhv
ZFRhYmxlKCktPnRvVGhpc09iamVjdChhc0NlbGwoKSwgZXhlYykgOiB0b1RoaXNPYmplY3RTbG93
Q2FzZShleGVjKTsKKyAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUo
KS0+dG9UaGlzKGFzQ2VsbCgpLCBleGVjLCBlY21hTW9kZSkgOiB0b1RoaXNTbG93Q2FzZShleGVj
LCBlY21hTW9kZSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Myw4ICsxMzMsMTAgQEAgYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbAog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7CiB9CiAKLUpTT2JqZWN0KiBKU0NlbGw6
OnRvVGhpc09iamVjdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYykKK0pTVmFsdWUgSlND
ZWxsOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFN
b2RlKQogeworICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgICAgICByZXR1cm4g
Y2VsbDsKICAgICByZXR1cm4gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKLSAgICBzdGF0aWMgSlNPYmplY3QqIHRv
VGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSB0b1Ro
aXMoSlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwogCiAgICAgdm9pZCB6YXAoKSB7ICpy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KICAgICBib29sIGlzWmFw
cGVkKCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCogY29uc3Qq
Pih0aGlzKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksOSAr
NTI5LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsK
IH0KIAotSlNPYmplY3QqIEpTR2xvYmFsT2JqZWN0Ojp0b1RoaXNPYmplY3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqKQorSlNWYWx1ZSBKU0dsb2JhbE9iamVjdDo6dG9UaGlzKEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7Ci0gICAgcmV0dXJuIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGNlbGwpLT5nbG9iYWxUaGlzKCk7CisgICAgaWYgKGVjbWFNb2RlID09
IFN0cmljdE1vZGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBl
eGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKIH0KIAogRXhlY1N0YXRlKiBKU0dsb2JhbE9iamVjdDo6
Z2xvYmFsRXhlYygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw2ICszODQs
NyBAQCBwdWJsaWM6CiAKICAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiAqSGVhcDo6aGVhcCh0
aGlzKS0+dm0oKTsgfQogICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzKCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRHbG9iYWxUaGlzKFZNJiwgSlNPYmplY3QqIGdsb2JhbFRo
aXMpOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDMyLDkgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAg
ICB9OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQ
cm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIHRvVGhpc09iamVjdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
Kik7Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEdsb2JhbFRoaXMoVk0mLCBKU09i
amVjdCogZ2xvYmFsVGhpcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQzo6SlNW
YWx1ZSB0b1RoaXMoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MzYsNyArNzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
UAogICAgIGlmICghdGhpc09iamVjdC0+aXNFeHRlbnNpYmxlKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOwogCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5zZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCB2YWx1ZSkpCisgICAgaWYgKCF0aGlzT2JqZWN0
LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLCB2YWx1ZSkpCiAgICAgICAgIHRocm93
RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5jcHAJKHJldmlzaW9u
IDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsMTAgQEAgdm9pZCBKU05hbWVTY29wZTo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jl
Z2lzdGVyU3RvcmUpOwogfQogCi1KU09iamVjdCogSlNOYW1lU2NvcGU6OnRvVGhpc09iamVjdChK
U0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMpCitKU1ZhbHVlIEpTTmFtZVNjb3BlOjp0b1RoaXMoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKKyAgICBpZiAoZWNt
YU1vZGUgPT0gU3RyaWN0TW9kZSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
cmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYg
cmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKLSAgICBzdGF0aWMgSlNPYmplY3QqIHRvVGhp
c09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
MiwyMiArMzgyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQog
CiAgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKICAgICAg
ICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KGF0dHJpYnV0ZXMgJiBBY2Nlc3Nvcik7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpc09iamVjdCk7Ci0gICAgICAgICAgICAg
ICAgSlNPYmplY3QqIHNldHRlckZ1bmMgPSBhc0dldHRlclNldHRlcihncyktPnNldHRlcigpOyAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFzZXR0ZXJGdW5jKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJzZXR0
aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBzZXR0ZXJGdW5jLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShzZXR0ZXJG
dW5jLCBjYWxsRGF0YSk7Ci0gICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKLSAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBJZiB0aGlzIGlzIFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBz
dWJzdGl0dXRlIHRoZSBzaGVsbC4KLSAgICAgICAgICAgICAgICBjYWxsKGV4ZWMsIHNldHRlckZ1
bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+dG9UaGlz
T2JqZWN0KHRoaXNPYmplY3QsIGV4ZWMpLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBjYWxsU2V0
dGVyKGV4ZWMsIGNlbGwsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1v
ZGUgOiBOb3RTdHJpY3RNb2RlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBBU1NFUlQoIShhdHRyaWJ1dGVzICYgQWNjZXNzb3Ip
KTsKQEAgLTExNzIsMTkgKzExNTcsMTYgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZN
JiB2bSwgSlNWYQogICAgIHN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmFnZSh2bSk7CiB9CiAKLWJv
b2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwgSlNWYWx1ZSBw
cm90b3R5cGUpCitib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIEpTVmFsdWUgY2hlY2tGb3Ig
PSB0aGlzOwotICAgIGlmICh0aGlzLT5pc0dsb2JhbE9iamVjdCgpKQotICAgICAgICBjaGVja0Zv
ciA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHRoaXMpLT5nbG9iYWxFeGVjKCktPnRoaXNWYWx1
ZSgpOwotCisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKCktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RT
dHJpY3RNb2RlKSA9PSB0aGlzKTsKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBwcm90b3R5
cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IGNoZWNrRm9yKQorICAgICAgICBpZiAo
bmV4dFByb3RvdHlwZSA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSktPnByb3RvdHlwZSgpOwog
ICAgIH0KLSAgICBzZXRQcm90b3R5cGUodm0sIHByb3RvdHlwZSk7CisgICAgc2V0UHJvdG90eXBl
KGV4ZWMtPnZtKCksIHByb3RvdHlwZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1NjAs
NyArMTU0Miw3IEBAIEpTU3RyaW5nKiBKU09iamVjdDo6dG9TdHJpbmcoRXhlY1N0YXRlKiAKICAg
ICByZXR1cm4gcHJpbWl0aXZlLnRvU3RyaW5nKGV4ZWMpOwogfQogCi1KU09iamVjdCogSlNPYmpl
Y3Q6OnRvVGhpc09iamVjdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSopCitKU1ZhbHVlIEpTT2Jq
ZWN0Ojp0b1RoaXMoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSkKIHsKICAgICBy
ZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiB9CkBAIC0xNjQwLDE1ICsxNjIyLDE0IEBA
IGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChWTSYgdm0sIFByb3AKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNs
b3QoUHJvcGVydHlTbG90JiBzbG90LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCitORVZFUl9JTkxJ
TkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7Ci0gICAg
aWYgKEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiA9IGFzR2V0dGVyU2V0dGVyKGdldERpcmVjdChv
ZmZzZXQpKS0+Z2V0dGVyKCkpIHsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCi0gICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZUdldHRlclNsb3QodGhpcywgZ2V0
dGVyRnVuY3Rpb24sIG9mZnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0
R2V0dGVyU2xvdChnZXR0ZXJGdW5jdGlvbik7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNsb3Quc2V0
VW5kZWZpbmVkKCk7CisgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBzbG90LnNldEdldHRlclNsb3QoanNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRl
cikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2xvdC5zZXRDYWNoZWFibGVHZXR0
ZXJTbG90KHRoaXMsIGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpLCBvZmZzZXQp
OwogfQogCiB2b2lkIEpTT2JqZWN0OjpwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYXAsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgUHJvcGVydHlEZXNjcmlwdG9yJiBvbGREZXNjcmlwdG9yKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNDk1NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25z
dDsKICAgICB2b2lkIHNldFByb3RvdHlwZShWTSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICBi
b29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiwgSlNWYWx1ZSBwcm90b3R5cGUpOwor
ICAgIGJvb2wgc2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soRXhlY1N0YXRlKiwgSlNWYWx1ZSBw
cm90b3R5cGUpOwogICAgICAgICAKICAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cygpCiAgICAgewpAQCAtNDg4LDcgKzQ4OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE5PVEU6IEpT
T2JqZWN0IGFuZCBpdHMgc3ViY2xhc3NlcyBtdXN0IGJlIGFibGUgdG8gZ3JhY2VmdWxseSBoYW5k
bGUgRXhlY1N0YXRlKiA9IDAsCiAgICAgLy8gYmVjYXVzZSB0aGlzIGNhbGwgbWF5IGNvbWUgZnJv
bSBpbnNpZGUgdGhlIGNvbXBpbGVyLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU09i
amVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9k
ZSk7CiAKICAgICBib29sIGdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0OwogCkBAIC05MjUsNyAr
OTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwq
KTsKIAogICAgIGJvb2wgaW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxs
R2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIFByb3BlcnR5T2Zmc2V0KTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90
JiwgSlNWYWx1ZSwgUHJvcGVydHlPZmZzZXQpOwogCiAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5k
UHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAg
ICAgCkBAIC0xMTYwLDcgKzExNjAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omlu
bGluZUdldE93CiAgICAgaWYgKExJS0VMWShpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpKSB7CiAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBnZXREaXJlY3Qob2Zmc2V0KTsKICAgICAgICAgaWYgKHN0cnVj
dHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgdmFsdWUuaXNHZXR0ZXJTZXR0
ZXIoKSkKLSAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgdmFsdWUsIG9mZnNldCk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgdmFsdWUsIG9m
ZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMy
LDcgQEAgSlNWYWx1ZSBKU1Njb3BlOjpyZXNvbHZlV2l0aFRoaXMoQ2FsbEZyYQogICAgICAgICBp
ZiAoY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbikKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgICAgICpiYXNlID0gcHJvcGVydHlCYXNl
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pc0Vudmlyb25tZW50UmVjb3JkKCkgPyBqc1VuZGVm
aW5lZCgpIDogSlNWYWx1ZShwcm9wZXJ0eUJhc2UpOworICAgICAgICAqYmFzZSA9IEpTVmFsdWUo
cHJvcGVydHlCYXNlKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KICAgICBBU1NFUlQo
b3BlcmF0aW9ucy0+c2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDggKzI3MSwxMCBA
QCBKU09iamVjdCogSlNTdHJpbmc6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIFN0
cmluZ09iamVjdDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgY29uc3RfY2FzdDxKU1N0cmlu
Zyo+KHRoaXMpKTsKIH0KIAotSlNPYmplY3QqIEpTU3RyaW5nOjp0b1RoaXNPYmplY3QoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMpCitKU1ZhbHVlIEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKQogeworICAgIGlmIChl
Y21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgICAgICByZXR1cm4gY2VsbDsKICAgICByZXR1cm4g
U3RyaW5nT2JqZWN0OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBq
c0Nhc3Q8SlNTdHJpbmcqPihjZWxsKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICAgICAgCi0gICAgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlND
ZWxsKiwgRXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAogICAgIC8vIEFjdHVhbGx5IGdldFByb3BlcnR5U2xvdCwg
bm90IGdldE93blByb3BlcnR5U2xvdCAoc2VlIEpTQ2VsbCkuCiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDIxICsyMSwxNCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogCi0jaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBKU1ZhbHVlIFByb3BlcnR5
U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIC8vIFBy
ZXZlbnQgZ2V0dGVyIGZ1bmN0aW9ucyBmcm9tIG9ic2VydmluZyBleGVjdXRpb24gaWYgYW4gZXhj
ZXB0aW9uIGlzIHBlbmRpbmcuCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7Ci0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IG1fZGF0YS5nZXR0ZXJGdW5jLT5tZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YShtX2RhdGEuZ2V0dGVyRnVuYywgY2FsbERhdGEpOwotICAgIHJldHVybiBjYWxs
KGV4ZWMsIG1fZGF0YS5nZXR0ZXJGdW5jLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fdGhpc1ZhbHVl
LmlzT2JqZWN0KCkgPyBtX3RoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYykgOiBtX3RoaXNWYWx1
ZSwgZXhlYy0+ZW1wdHlMaXN0KCkpOworICAgIHJldHVybiBjYWxsR2V0dGVyKGV4ZWMsIG1fdGhp
c1ZhbHVlLCBtX2RhdGEuZ2V0dGVyU2V0dGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2
aXNpb24gMTQ5NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIEdl
dHRlclNldHRlcjsKIAogI2RlZmluZSBKU0NfVkFMVUVfTUFSS0VSIDAKICNkZWZpbmUgSU5ERVhf
R0VUVEVSX01BUktFUiByZWludGVycHJldF9jYXN0PEdldFZhbHVlRnVuYz4oMikKQEAgLTE1Mywy
MSArMTUzLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9kYXRhLmluZGV4ID0g
aW5kZXg7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldEdldHRlclNsb3QoSlNPYmplY3Qq
IGdldHRlckZ1bmMpCisgICAgICAgIHZvaWQgc2V0R2V0dGVyU2xvdChHZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlcikKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldHRlckZ1bmMpOwor
ICAgICAgICAgICAgQVNTRVJUKGdldHRlclNldHRlcik7CiAgICAgICAgICAgICBtX3RoaXNWYWx1
ZSA9IG1fc2xvdEJhc2U7CiAgICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9O
X01BUktFUjsKLSAgICAgICAgICAgIG1fZGF0YS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsKKyAg
ICAgICAgICAgIG1fZGF0YS5nZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXI7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90QmFzZSwg
SlNPYmplY3QqIGdldHRlckZ1bmMsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICAgICAgdm9p
ZCBzZXRDYWNoZWFibGVHZXR0ZXJTbG90KEpTVmFsdWUgc2xvdEJhc2UsIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVChnZXR0ZXJGdW5jKTsKKyAgICAgICAgICAgIEFTU0VSVChnZXR0ZXJTZXR0ZXIp
OwogICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEdFVFRFUl9GVU5DVElPTl9NQVJLRVI7CiAgICAg
ICAgICAgICBtX3RoaXNWYWx1ZSA9IG1fc2xvdEJhc2U7CiAgICAgICAgICAgICBtX3Nsb3RCYXNl
ID0gc2xvdEJhc2U7Ci0gICAgICAgICAgICBtX2RhdGEuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7
CisgICAgICAgICAgICBtX2RhdGEuZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyOwogICAgICAg
ICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlw
ZSA9IEdldHRlcjsKICAgICAgICAgfQpAQCAtMjI2LDcgKzIyNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBtX3Nsb3RCYXNlOwogICAgICAgICB1bmlvbiB7
Ci0gICAgICAgICAgICBKU09iamVjdCogZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIEdldHRlclNl
dHRlciogZ2V0dGVyU2V0dGVyOwogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXg7CiAgICAgICAg
IH0gbV9kYXRhOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VB
cnJheVZhbHVlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiwxMyArMTMyLDcgQEAgdm9pZCBTcGFyc2VBcnJheUVudHJ5OjpnZXQoUHJv
cGVydHlTbG90JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSlNPYmplY3QqIGdldHRl
ciA9IGFzR2V0dGVyU2V0dGVyKHZhbHVlKS0+Z2V0dGVyKCk7Ci0gICAgaWYgKCFnZXR0ZXIpIHsK
LSAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHNsb3Quc2V0R2V0dGVyU2xvdChnZXR0ZXIpOworICAgIHNsb3Quc2V0R2V0dGVyU2xvdChq
c0Nhc3Q8R2V0dGVyU2V0dGVyKj4odmFsdWUpKTsKIH0KIAogdm9pZCBTcGFyc2VBcnJheUVudHJ5
OjpnZXQoUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdApAQCAtMTQ4LDE5ICsx
NDIsMTMgQEAgdm9pZCBTcGFyc2VBcnJheUVudHJ5OjpnZXQoUHJvcGVydHlEZXNjcgogCiBKU1Zh
bHVlIFNwYXJzZUFycmF5RW50cnk6OmdldChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJh
eSkgY29uc3QKIHsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEJhc2U6OmdldCgpOwotICAgIEFTU0VS
VChyZXN1bHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBCYXNlOjpnZXQoKTsKKyAgICBBU1NFUlQo
dmFsdWUpOwogCi0gICAgaWYgKExJS0VMWSghcmVzdWx0LmlzR2V0dGVyU2V0dGVyKCkpKQotICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIGlmIChMSUtFTFkoIXZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkpKQorICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBKU09iamVjdCogZ2V0dGVyID0gYXNH
ZXR0ZXJTZXR0ZXIocmVzdWx0KS0+Z2V0dGVyKCk7Ci0gICAgaWYgKCFnZXR0ZXIpCi0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXItPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGdldHRl
ciwgY2FsbERhdGEpOwotICAgIHJldHVybiBjYWxsKGV4ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBhcnJheS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KGFycmF5LCBleGVjKSwg
ZXhlYy0+ZW1wdHlMaXN0KCkpOworICAgIHJldHVybiBjYWxsR2V0dGVyKGV4ZWMsIGFycmF5LCBq
c0Nhc3Q8R2V0dGVyU2V0dGVyKj4odmFsdWUpKTsKIH0KIAogdm9pZCBTcGFyc2VBcnJheUVudHJ5
OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1
ZU1hcCogbWFwLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQpAQCAtMTc2LDIzICsx
NjQsNyBAQCB2b2lkIFNwYXJzZUFycmF5RW50cnk6OnB1dChFeGVjU3RhdGUqIGV4CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlIGFjY2Vzc29yID0gQmFzZTo6Z2V0KCk7Ci0g
ICAgQVNTRVJUKGFjY2Vzc29yLmlzR2V0dGVyU2V0dGVyKCkpOwotICAgIEpTT2JqZWN0KiBzZXR0
ZXIgPSBhc0dldHRlclNldHRlcihhY2Nlc3NvciktPnNldHRlcigpOwotICAgIAotICAgIGlmICgh
c2V0dGVyKSB7Ci0gICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBj
YWxsRGF0YSk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVu
ZCh2YWx1ZSk7Ci0gICAgaWYgKHRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICB0aGlzVmFs
dWUgPSBhc09iamVjdCh0aGlzVmFsdWUpLT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoYXNP
YmplY3QodGhpc1ZhbHVlKSwgZXhlYyk7Ci0gICAgY2FsbChleGVjLCBzZXR0ZXIsIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICBjYWxsU2V0dGVyKGV4ZWMsIHRoaXNW
YWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/IFN0cmljdE1vZGUgOiBOb3RT
dHJpY3RNb2RlKTsKIH0KIAogSlNWYWx1ZSBTcGFyc2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VN
b2RlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksOCArNDksMTAgQEAgYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVs
ZXRlUHJvcGVydAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSlNPYmplY3QqIFN0cmljdEV2YWxB
Y3RpdmF0aW9uOjp0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjKQorSlNWYWx1
ZSBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6dG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CisgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlz
VmFsdWUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0
RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwotICAgIHN0
YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNTdGF0ZSopOworICAgIHN0
YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wNS0wMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2Fy
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJhdGlvbmFsaXplZCAndGhpcycgdmFsdWUgY29udmVy
c2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1
NTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlZCB0byBtYXRjaCBKU0MgcmVxdWlyZW1lbnQgdGhhdCB0aGUgY2FsbGVlIHBlcmZvcm1zICd0
aGlzJyB2YWx1ZQorICAgICAgICBjb252ZXJzaW9uLgorCisgICAgICAgICogV2ViQ29yZS5vcmRl
cjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fSW52b2tlKToK
KwogMjAxMy0wNS0wNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVwZGF0ZSBjb2RlIGdlbmVyYXRvcnMgdG8gaGFuZGxlIGEgbmV3IEphdmFTY3JpcHQgZmls
ZSBmb3Igc25hcHNob3R0ZWQgcGx1Zy1pbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNp
b24gMTQ5NTY5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5
KQpAQCAtMjgwMSw3ICsyODAxLDYgQEAgX19aTks3V2ViQ29yZTEyVGV4dEVuY29kaW5nN2RvbU5h
bWVFdgogX19aTks3V2ViQ29yZTEzU2NyaXB0RWxlbWVudDEzc2NyaXB0Q29udGVudEV2CiBfX1pO
N1dlYkNvcmUxM1NjcmlwdEVsZW1lbnQxM2V4ZWN1dGVTY3JpcHRFUktOU18xNlNjcmlwdFNvdXJj
ZUNvZGVFCiBfX1pOSzdXZWJDb3JlMjFDb250ZW50U2VjdXJpdHlQb2xpY3kxN2FsbG93SW5saW5l
U2NyaXB0RXYKLV9fWk5LN1dlYkNvcmUxNUpTRE9NV2luZG93QmFzZTEydG9UaGlzT2JqZWN0RVBO
M0pTQzlFeGVjU3RhdGVFCiBfX1pON1dlYkNvcmUxNkpTRE9NV2luZG93U2hlbGwxOGdldE93blBy
b3BlcnR5U2xvdEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVSTlMxXzEyUHJv
cGVydHlTbG90RQogX19aTjdXZWJDb3JlMTZKU0RPTVdpbmRvd1NoZWxsMTdwdXRXaXRoQXR0cmli
dXRlc0VQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVFagog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTh3aW5kb3dTY3JpcHRPYmplY3RFdgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkocmV2
aXNpb24gMTQ5NTY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsOSBAQCB2b2lkIEpTRXJyb3JIYW5k
bGVyOjpoYW5kbGVFdmVudChTY3JpcHRFCiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3Bl
KHZtLCB2bS5keW5hbWljR2xvYmFsT2JqZWN0ID8gdm0uZHluYW1pY0dsb2JhbE9iamVjdCA6IGds
b2JhbE9iamVjdCk7CiAKLSAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBnbG9iYWxPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChnbG9iYWxPYmplY3QsIGV4ZWMpOwotCiAgICAg
ICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3Vt
ZW50KCkKLSAgICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpz
RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKQotICAgICAgICAg
ICAgOiBKU0M6OmNhbGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MpOworICAgICAgICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwo
ZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ3Mp
CisgICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGdsb2JhbE9iamVjdCwgYXJncyk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRD
dXJyZW50RXZlbnQoc2F2ZWRFdmVudCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAJKHJldmlz
aW9uIDE0OTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIEpTVmFs
dWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ28KICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVGhpc09iamVjdChleGVjKTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KTsKICAgICBy
ZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCShyZXZp
c2lvbiAxNDk1NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBjYWxsKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFs
dWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2Fs
bERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xp
c3QmIGFyZ3MpCiAgICAgewogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0
YXRlKGV4ZWMpOwotICAgICAgICAvLyBFbnN1cmUgRE9NIGdsb2JhbCBvYmplY3QgaXMgdW53cmFw
cGVkIHRvIHRoZSBzaGVsbC4KLSAgICAgICAgaWYgKHRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICAgICAgdGhpc1ZhbHVlID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKTsKICAgICAg
ICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNDk1
NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkod29ya2luZyBjb3B5KQpAQCAtMjQ0OSwxMSArMjQ0OSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRo
aXMgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhl
YykpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRj
bGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcylcbiIpOwogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRv
JHtjbGFzc05hbWV9KGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhlYykpO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05h
bWUqIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9U
aGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMpXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL05QX2pzb2JqZWN0LmNwcAkocmV2aXNpb24gMTQ5NTY5KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3
IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG8sIE4KICAgICAgICAgLy8g
Q2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZhcmlhbnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0Nv
dW50LCByb290T2JqZWN0LCBhcmdMaXN0KTsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlND
OjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iai0+aW1wLT5tZXRo
b2RUYWJsZSgpLT50b1RoaXNPYmplY3Qob2JqLT5pbXAsIGV4ZWMpLCBhcmdMaXN0KTsKKyAgICAg
ICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIG9iai0+aW1wLCBhcmdMaXN0KTsKIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCBy
ZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KICAgICAgICAgY29udmVydFZh
bHVlVG9OUFZhcmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA1LTAyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmF0aW9uYWxpemVkICd0aGlzJyB2YWx1ZSBjb252ZXJzaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1NDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVk
IHRvIG1hdGNoIEpTQyByZXF1aXJlbWVudCB0aGF0IHRoZSBjYWxsZWUgcGVyZm9ybXMgJ3RoaXMn
IHZhbHVlCisgICAgICAgIGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6
Omludm9rZSk6CisKIDIwMTMtMDUtMDQgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1NzQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBKU09iamVjdC5jcHAJKHJldmlzaW9uIDE0OTU2OSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIGJvb2wgTlBKU09iamVjdDo6aW52b2tlKEV4ZWNTdGF0
ZSogZXhlYywKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytp
KQogICAgICAgICBhcmd1bWVudExpc3QuYXBwZW5kKG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJp
YW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJndW1lbnRzW2ldKSk7CiAKLSAgICBK
U1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChtX2pzT2JqZWN0Lmdl
dCgpLCBleGVjKSwgYXJndW1lbnRMaXN0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjYWxs
KGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fanNPYmplY3QuZ2V0KCksIGFy
Z3VtZW50TGlzdCk7CiAKICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0
aGUgZnVuY3Rpb24gY2FsbC4KICAgICBtX29iamVjdE1hcC0+Y29udmVydEpTVmFsdWVUb05QVmFy
aWFudChleGVjLCB2YWx1ZSwgKnJlc3VsdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNDk1NjkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxMy0wNS0wMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFJhdGlvbmFsaXplZCAndGhpcycgdmFsdWUgY29udmVyc2lvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0
byBtYXRjaCBKU0MgcmVxdWlyZW1lbnQgdGhhdCB0aGUgY2FsbGVlIHBlcmZvcm1zICd0aGlzJyB2
YWx1ZQorICAgICAgICBjb252ZXJzaW9uLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6Omludm9rZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlRGVmYXVsdCk6CisKIDIwMTMtMDUtMDQgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIC1bTlNN
dXRhYmxlRGljdGlvbmFyeSBfd2Via2l0X3NldE9iamVjdDpmb3JVbmNvcGllZEtleTpdCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiAxNDk1NjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkxMiw3ICs5MTIsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6aW52b2tlCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsK
ICAgICBkZW1hcnNoYWxWYWx1ZXMoZXhlYywgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3Ro
LCBhcmdMaXN0KTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KG9i
amVjdCwgZXhlYyksIGFyZ0xpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAgIAog
ICAgIG1hcnNoYWxWYWx1ZShleGVjLCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0TGVuZ3RoKTsK
ICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpAQCAtOTQ0LDcgKzk0NCw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdMaXN0OwogICAgIGRlbWFyc2hhbFZhbHVlcyhleGVjLCBhcmd1bWVudHNEYXRhLCBhcmd1
bWVudHNMZW5ndGgsIGFyZ0xpc3QpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGwoZXhlYywg
b2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+dG9UaGlz
T2JqZWN0KG9iamVjdCwgZXhlYyksIGFyZ0xpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxs
KGV4ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ0xpc3QpOwogICAg
IAogICAgIG1hcnNoYWxWYWx1ZShleGVjLCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0TGVuZ3Ro
KTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5NTY5
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTMtMDUtMDQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBSYXRpb25hbGl6ZWQgJ3RoaXMnIHZhbHVlIGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU0MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9PYmplY3QtZGVmaW5l
UHJvcGVydHktZXhwZWN0ZWQudHh0OiBVcGRhdGVkIGZvciB1c2Ugb2YgY29tbW9uIGVycm9yIG1l
c3NhZ2UuCisKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9wcmltaXRpdmUtcHJvcGVy
dHktYWNjZXNzLWVkZ2UtY2FzZXMuanM6IFVwZGF0ZWQgdGVzdCByZXN1bHRzIHRvIG1hdGNoIHRo
ZSBFQ01BIHNwZWMsCisgICAgICAgIGFuZCBGaXJlZm94LgorCisgICAgICAgIFdlIHBhc3MgdGhl
c2UgdGVzdHMgbm93OgorCisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNz
aW9ucy8xMS4xX1ByaW1hcnlfRXhwcmVzc2lvbnMvMTEuMS4xX1RoZV90aGlzX0tleXdvcmQvUzEx
LjEuMV9BMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9O
YXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEwX1N0cmluZy5wcm90b3R5
cGUubWF0Y2gvUzE1LjUuNC4xMF9BMV9UMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40
LjExX1N0cmluZy5wcm90b3R5cGUucmVwbGFjZS9TMTUuNS40LjExX0ExX1QzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVf
U3RyaW5nLzE1LjUuNC8xNS41LjQuMTJfU3RyaW5nLnByb3RvdHlwZS5zZWFyY2gvUzE1LjUuNC4x
Ml9BMV9UMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9O
YXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEzX1N0cmluZy5wcm90b3R5
cGUuc2xpY2UvUzE1LjUuNC4xM19BMV9UMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40
LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0
cmluZy8xNS41LjQvMTUuNS40LjE1X1N0cmluZy5wcm90b3R5cGUuc3Vic3RyaW5nL1MxNS41LjQu
MTVfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC42X1N0cmluZy5wcm90b3R5
cGUuY29uY2F0L1MxNS41LjQuNl9BMV9UMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40
LjdfU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mL1MxNS41LjQuN19BMV9UMy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0
cmluZy8xNS41LjQvMTUuNS40LjhfU3RyaW5nLnByb3RvdHlwZS5sYXN0SW5kZXhPZi9TMTUuNS40
LjhfQTFfVDMtZXhwZWN0ZWQudHh0OgorCiAyMDEzLTA0LTMwICBSb2JlcnQgSG9nYW4gIDxyb2Jl
cnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDA5MDcpOiBJbmNvcnJlY3Qg
YmFzZWxpbmUgb24gY2VsbHMgYWZ0ZXIgdXBkYXRpbmcgdmVydGljYWwtYWxpZ24KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvT2JqZWN0LWRlZmluZVByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL09iamVjdC1kZWZpbmVQcm9wZXJ0eS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE0OTU2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvT2JqZWN0
LWRlZmluZVByb3BlcnR5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTksMTEgKzk5
LDExIEBAIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IE9iamVjdC5kZWZpbmUKIFBBU1MgJ3Vz
ZSBzdHJpY3QnOyB2YXIgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2ZvbycsIHtzZXQ6
ZnVuY3Rpb24oeCl7dGhpcy5yZXN1bHQgPSB4O319KTsgby5mb28gaXMgdW5kZWZpbmVkCiBQQVNT
ICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdmb28nLCB7
c2V0OmZ1bmN0aW9uKHgpe3RoaXMucmVzdWx0ID0geDt9fSk7IG8uZm9vID0gNDI7IG8ucmVzdWx0
OyBpcyA0MgogUEFTUyAndXNlIHN0cmljdCc7IHZhciBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5
KHt9LCAnZm9vJywge2dldDpmdW5jdGlvbigpe3JldHVybiA0Mjt9LCBzZXQ6dW5kZWZpbmVkfSk7
IG8uZm9vIGlzIDQyCi1QQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBPYmplY3QuZGVmaW5lUHJv
cGVydHkoe30sICdmb28nLCB7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDQyO30sIHNldDp1bmRlZmlu
ZWR9KTsgby5mb28gPSA0Mjsgby5yZXN1bHQ7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHNl
dHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyLgorUEFTUyAndXNlIHN0cmlj
dCc7IHZhciBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnZm9vJywge2dldDpmdW5jdGlv
bigpe3JldHVybiA0Mjt9LCBzZXQ6dW5kZWZpbmVkfSk7IG8uZm9vID0gNDI7IG8ucmVzdWx0OyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5
IHByb3BlcnR5Li4KIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh7fSwgJ2ZvbycsIHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNDI7fX0pOyBvLmZvbyBpcyA0
MgotUEFTUyAndXNlIHN0cmljdCc7IHZhciBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAn
Zm9vJywge2dldDpmdW5jdGlvbigpe3JldHVybiA0Mjt9fSk7IG8uZm9vID0gNDI7IG8ucmVzdWx0
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBzZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMg
b25seSBhIGdldHRlci4KK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh7fSwgJ2ZvbycsIHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNDI7fX0pOyBvLmZvbyA9
IDQyOyBvLnJlc3VsdDsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFz
c2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4uCiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBP
YmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdmb28nLCB7Z2V0OnVuZGVmaW5lZCwgc2V0OnVuZGVm
aW5lZH0pOyBvLmZvbyBpcyB1bmRlZmluZWQKLVBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2ZvbycsIHtnZXQ6dW5kZWZpbmVkLCBzZXQ6dW5kZWZp
bmVkfSk7IG8uZm9vID0gNDI7IG8ucmVzdWx0OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBz
ZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlci4KK1BBU1MgJ3VzZSBzdHJp
Y3QnOyB2YXIgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2ZvbycsIHtnZXQ6dW5kZWZp
bmVkLCBzZXQ6dW5kZWZpbmVkfSk7IG8uZm9vID0gNDI7IG8ucmVzdWx0OyB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5Li4K
IFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoe2ZvbzoxfSwgJ2ZvbycsIHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNDI7
fSwgc2V0OmZ1bmN0aW9uKHgpe3RoaXMucmVzdWx0ID0geDt9fSksICdmb28nLCB7Z2V0OmZ1bmN0
aW9uKCl7cmV0dXJuIDEzO319KTsgby5mb28gaXMgMTMKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIg
byA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZGVmaW5lUHJvcGVydHkoe2ZvbzoxfSwg
J2ZvbycsIHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNDI7fSwgc2V0OmZ1bmN0aW9uKHgpe3RoaXMu
cmVzdWx0ID0geDt9fSksICdmb28nLCB7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDEzO319KTsgby5m
b28gPSA0Mjsgby5yZXN1bHQ7IGlzIDQyCiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtmb286MX0sICdmb28nLCB7
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDQyO30sIHNldDpmdW5jdGlvbih4KXt0aGlzLnJlc3VsdCA9
IHg7fX0pLCAnZm9vJywge2dldDp1bmRlZmluZWR9KTsgby5mb28gaXMgdW5kZWZpbmVkCkBAIC0x
MTEsNyArMTExLDcgQEAgUEFTUyAndXNlIHN0cmljdCc7IHZhciBvID0gT2JqZWN0LmRlZmluZQog
UEFTUyAndXNlIHN0cmljdCc7IHZhciBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh7Zm9vOjF9LCAnZm9vJywge2dldDpmdW5jdGlvbigpe3JldHVybiA0Mjt9
LCBzZXQ6ZnVuY3Rpb24oeCl7dGhpcy5yZXN1bHQgPSB4O319KSwgJ2ZvbycsIHtzZXQ6ZnVuY3Rp
b24oKXt0aGlzLnJlc3VsdCA9IDEzO319KTsgby5mb28gaXMgNDIKIFBBU1MgJ3VzZSBzdHJpY3Qn
OyB2YXIgbyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZGVmaW5lUHJvcGVydHkoe2Zv
bzoxfSwgJ2ZvbycsIHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNDI7fSwgc2V0OmZ1bmN0aW9uKHgp
e3RoaXMucmVzdWx0ID0geDt9fSksICdmb28nLCB7c2V0OmZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQg
PSAxMzt9fSk7IG8uZm9vID0gNDI7IG8ucmVzdWx0OyBpcyAxMwogUEFTUyAndXNlIHN0cmljdCc7
IHZhciBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7Zm9v
OjF9LCAnZm9vJywge2dldDpmdW5jdGlvbigpe3JldHVybiA0Mjt9LCBzZXQ6ZnVuY3Rpb24oeCl7
dGhpcy5yZXN1bHQgPSB4O319KSwgJ2ZvbycsIHtzZXQ6dW5kZWZpbmVkfSk7IG8uZm9vIGlzIDQy
Ci1QQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0
LmRlZmluZVByb3BlcnR5KHtmb286MX0sICdmb28nLCB7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDQy
O30sIHNldDpmdW5jdGlvbih4KXt0aGlzLnJlc3VsdCA9IHg7fX0pLCAnZm9vJywge3NldDp1bmRl
ZmluZWR9KTsgby5mb28gPSA0Mjsgby5yZXN1bHQ7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyLgorUEFTUyAndXNlIHN0
cmljdCc7IHZhciBvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh7Zm9vOjF9LCAnZm9vJywge2dldDpmdW5jdGlvbigpe3JldHVybiA0Mjt9LCBzZXQ6ZnVuY3Rp
b24oeCl7dGhpcy5yZXN1bHQgPSB4O319KSwgJ2ZvbycsIHtzZXQ6dW5kZWZpbmVkfSk7IG8uZm9v
ID0gNDI7IG8ucmVzdWx0OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8g
YXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5Li4KIFBBU1MgMCBpbiBPYmplY3QucHJvdG90eXBl
IGlzIHRydWUKIFBBU1MgJzAnIGluIE9iamVjdC5wcm90b3R5cGUgaXMgdHJ1ZQogUEFTUyB2YXIg
byA9IHt9OyBvLnJlYWRPbmx5ID0gZmFsc2U7IG8ucmVhZE9ubHkgaXMgdHJ1ZQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vzcy1l
ZGdlLWNhc2VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL3ByaW1pdGl2ZS1wcm9wZXJ0eS1hY2Nlc3MtZWRnZS1jYXNlcy5qcwkocmV2aXNpb24gMTQ5
NTY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJpbWl0aXZlLXByb3Bl
cnR5LWFjY2Vzcy1lZGdlLWNhc2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBA
IGZ1bmN0aW9uIGNoZWNrU2V0KHgsIGNvbnN0cnVjdG9yKQogZnVuY3Rpb24gY2hlY2tHZXRTdHJp
Y3QoeCwgY29uc3RydWN0b3IpCiB7CiAgICAgY2hlY2tPa2F5ID0gZmFsc2U7Ci0gICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgImZvbyIsIHsgZ2V0OiBmdW5j
dGlvbigpIHsgInVzZSBzdHJpY3QiOyBjaGVja09rYXkgPSB0eXBlb2YgdGhpcyAhPT0gJ29iamVj
dCc7IH0sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
Y29uc3RydWN0b3IucHJvdG90eXBlLCAiZm9vIiwgeyBnZXQ6IGZ1bmN0aW9uKCkgeyAidXNlIHN0
cmljdCI7IGNoZWNrT2theSA9IHR5cGVvZiB0aGlzID09PSAnb2JqZWN0JzsgfSwgY29uZmlndXJh
YmxlOiB0cnVlIH0pOwogICAgIHguZm9vOwogICAgIGRlbGV0ZSBjb25zdHJ1Y3Rvci5wcm90b3R5
cGUuZm9vOwogICAgIHJldHVybiBjaGVja09rYXk7CkBAIC03MCw3ICs3MCw3IEBAIGZ1bmN0aW9u
IGNoZWNrR2V0U3RyaWN0KHgsIGNvbnN0cnVjdG9yKQogZnVuY3Rpb24gY2hlY2tTZXRTdHJpY3Qo
eCwgY29uc3RydWN0b3IpCiB7CiAgICAgY2hlY2tPa2F5ID0gZmFsc2U7Ci0gICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgImZvbyIsIHsgc2V0OiBmdW5jdGlv
bigpIHsgInVzZSBzdHJpY3QiOyBjaGVja09rYXkgPSB0eXBlb2YgdGhpcyAhPT0gJ29iamVjdCc7
IH0sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29u
c3RydWN0b3IucHJvdG90eXBlLCAiZm9vIiwgeyBzZXQ6IGZ1bmN0aW9uKCkgeyAidXNlIHN0cmlj
dCI7IGNoZWNrT2theSA9IHR5cGVvZiB0aGlzID09PSAnb2JqZWN0JzsgfSwgY29uZmlndXJhYmxl
OiB0cnVlIH0pOwogICAgIHguZm9vID0gbnVsbDsKICAgICBkZWxldGUgY29uc3RydWN0b3IucHJv
dG90eXBlLmZvbzsKICAgICByZXR1cm4gY2hlY2tPa2F5OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGZ1
bmN0aW9uIGNoZWNrTnVtZXJpY1NldCh4LCBjb25zdHJ1Y3RvcikKIGZ1bmN0aW9uIGNoZWNrTnVt
ZXJpY0dldFN0cmljdCh4LCBjb25zdHJ1Y3RvcikKIHsKICAgICBjaGVja09rYXkgPSBmYWxzZTsK
LSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IucHJvdG90eXBlLCA0MiwgeyBn
ZXQ6IGZ1bmN0aW9uKCkgeyAidXNlIHN0cmljdCI7IGNoZWNrT2theSA9IHR5cGVvZiB0aGlzICE9
PSAnb2JqZWN0JzsgfSwgY29uZmlndXJhYmxlOiB0cnVlIH0pOworICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIDQyLCB7IGdldDogZnVuY3Rpb24oKSB7ICJ1
c2Ugc3RyaWN0IjsgY2hlY2tPa2F5ID0gdHlwZW9mIHRoaXMgPT09ICdvYmplY3QnOyB9LCBjb25m
aWd1cmFibGU6IHRydWUgfSk7CiAgICAgeFs0Ml07CiAgICAgZGVsZXRlIGNvbnN0cnVjdG9yLnBy
b3RvdHlwZVs0Ml07CiAgICAgcmV0dXJuIGNoZWNrT2theTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBm
dW5jdGlvbiBjaGVja051bWVyaWNHZXRTdHJpY3QoeCwgY29uc3RyCiBmdW5jdGlvbiBjaGVja051
bWVyaWNTZXRTdHJpY3QoeCwgY29uc3RydWN0b3IpCiB7CiAgICAgY2hlY2tPa2F5ID0gZmFsc2U7
Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgNDIsIHsg
c2V0OiBmdW5jdGlvbigpIHsgInVzZSBzdHJpY3QiOyBjaGVja09rYXkgPSB0eXBlb2YgdGhpcyAh
PT0gJ29iamVjdCc7IH0sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTsKKyAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoY29uc3RydWN0b3IucHJvdG90eXBlLCA0MiwgeyBzZXQ6IGZ1bmN0aW9uKCkgeyAi
dXNlIHN0cmljdCI7IGNoZWNrT2theSA9IHR5cGVvZiB0aGlzID09PSAnb2JqZWN0JzsgfSwgY29u
ZmlndXJhYmxlOiB0cnVlIH0pOwogICAgIHhbNDJdID0gbnVsbDsKICAgICBkZWxldGUgY29uc3Ry
dWN0b3IucHJvdG90eXBlWzQyXTsKICAgICByZXR1cm4gY2hlY2tPa2F5OwpJbmRleDogTGF5b3V0
VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS4xX1ByaW1hcnlfRXhw
cmVzc2lvbnMvMTEuMS4xX1RoZV90aGlzX0tleXdvcmQvUzExLjEuMV9BMi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNz
aW9ucy8xMS4xX1ByaW1hcnlfRXhwcmVzc2lvbnMvMTEuMS4xX1RoZV90aGlzX0tleXdvcmQvUzEx
LjEuMV9BMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0OTU2OSkKKysrIExheW91dFRlc3RzL3Nw
dXRuaWsvQ29uZm9ybWFuY2UvMTFfRXhwcmVzc2lvbnMvMTEuMV9QcmltYXJ5X0V4cHJlc3Npb25z
LzExLjEuMV9UaGVfdGhpc19LZXl3b3JkL1MxMS4xLjFfQTItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzExLjEuMV9BMgogCi1GQUlMIFNwdXRuaWtFcnJvcjog
IzE6IHRoaXMudG9TdHJpbmcoKSA9PT0gdG9TdHJpbmcoKS4gQWN0dWFsOiBbb2JqZWN0IFdpbmRv
d10KK1BBU1MgCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9D
b25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjZf
U3RyaW5nLnByb3RvdHlwZS5jb25jYXQvUzE1LjUuNC42X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNl9TdHJpbmcucHJvdG90eXBlLmNvbmNhdC9T
MTUuNS40LjZfQTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDk1NjkpCisrKyBMYXlvdXRU
ZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1
LjUuNC8xNS41LjQuNl9TdHJpbmcucHJvdG90eXBlLmNvbmNhdC9TMTUuNS40LjZfQTFfVDMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC42X0ExX1Qz
CiAKLUZBSUwgVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIAogCiBURVNUIENPTVBMRVRFCiAK
SW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC43X1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZi9TMTUu
NS40LjdfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC43X1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZi9TMTUuNS40LjdfQTFfVDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNDk1NjkpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuN19TdHJpbmcucHJvdG90
eXBlLmluZGV4T2YvUzE1LjUuNC43X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuN19BMV9UMwogCi1GQUlMIFR5cGVFcnJvcjogVHlwZSBl
cnJvcgorUEFTUyAKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlr
L0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQu
OF9TdHJpbmcucHJvdG90eXBlLmxhc3RJbmRleE9mL1MxNS41LjQuOF9BMV9UMy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjhfU3RyaW5nLnByb3RvdHlwZS5s
YXN0SW5kZXhPZi9TMTUuNS40LjhfQTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDk1Njkp
CisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1
LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuOF9TdHJpbmcucHJvdG90eXBlLmxhc3RJbmRleE9mL1Mx
NS41LjQuOF9BMV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiBTMTUuNS40LjhfQTFfVDMKIAotRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgCiAK
IFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8x
NV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEwX1N0cmluZy5wcm90
b3R5cGUubWF0Y2gvUzE1LjUuNC4xMF9BMV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0
cmluZy8xNS41LjQvMTUuNS40LjEwX1N0cmluZy5wcm90b3R5cGUubWF0Y2gvUzE1LjUuNC4xMF9B
MV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0OTU2OSkKKysrIExheW91dFRlc3RzL3NwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC4xMF9TdHJpbmcucHJvdG90eXBlLm1hdGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC4xMF9BMV9UMwogCi1GQUlM
IFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUyAKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBM
YXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3Ry
aW5nLzE1LjUuNC8xNS41LjQuMTFfU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlL1MxNS41LjQuMTFf
QTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMV9T
dHJpbmcucHJvdG90eXBlLnJlcGxhY2UvUzE1LjUuNC4xMV9BMV9UMy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE0OTU2OSkKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0
aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMV9TdHJpbmcucHJvdG90eXBl
LnJlcGxhY2UvUzE1LjUuNC4xMV9BMV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiBTMTUuNS40LjExX0ExX1QzCiAKLUZBSUwgVHlwZUVycm9yOiBUeXBlIGVy
cm9yCitQQVNTIAogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsv
Q29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4x
Ml9TdHJpbmcucHJvdG90eXBlLnNlYXJjaC9TMTUuNS40LjEyX0ExX1QzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTJfU3RyaW5nLnByb3RvdHlwZS5zZWFy
Y2gvUzE1LjUuNC4xMl9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0OTU2OSkKKysrIExh
eW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJp
bmcvMTUuNS40LzE1LjUuNC4xMl9TdHJpbmcucHJvdG90eXBlLnNlYXJjaC9TMTUuNS40LjEyX0Ex
X1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQu
MTJfQTFfVDMKIAotRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgCiAKIFRFU1QgQ09N
UExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEzX1N0cmluZy5wcm90b3R5cGUuc2xp
Y2UvUzE1LjUuNC4xM19BMV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41
LjQvMTUuNS40LjEzX1N0cmluZy5wcm90b3R5cGUuc2xpY2UvUzE1LjUuNC4xM19BMV9UMy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE0OTU2OSkKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9y
bWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xM19TdHJp
bmcucHJvdG90eXBlLnNsaWNlL1MxNS41LjQuMTNfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC4xM19BMV9UMwogCi1GQUlMIFR5cGVFcnJv
cjogVHlwZSBlcnJvcgorUEFTUyAKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0
cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUu
NC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3Rv
dHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ5NTY5
KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8x
NS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUu
NC4xNF9BMV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBT
MTUuNS40LjE0X0ExX1QzCiAKLUZBSUwgVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIAogCiBU
RVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNV9TdHJpbmcucHJvdG90
eXBlLnN1YnN0cmluZy9TMTUuNS40LjE1X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVf
U3RyaW5nLzE1LjUuNC8xNS41LjQuMTVfU3RyaW5nLnByb3RvdHlwZS5zdWJzdHJpbmcvUzE1LjUu
NC4xNV9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0OTU2OSkKKysrIExheW91dFRlc3Rz
L3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40
LzE1LjUuNC4xNV9TdHJpbmcucHJvdG90eXBlLnN1YnN0cmluZy9TMTUuNS40LjE1X0ExX1QzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuMTVfQTFf
VDMKIAotRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgCiAKIFRFU1QgQ09NUExFVEUK
IAo=
</data>
<flag name="review"
          id="221984"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="222024"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>