<?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>140306</bug_id>
          
          <creation_ts>2015-01-09 13:43:33 -0800</creation_ts>
          <short_desc>REGRESSION (r174226): Header on huffingtonpost.com is too large</short_desc>
          <delta_ts>2015-02-26 17:19:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>140460</dependson>
          <blocked>136869</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060258</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-09 13:43:33 -0800</bug_when>
    <thetext>* STEPS TO REPRODUCE
1. Load http://www.huffingtonpost.com

* RESULTS
The header is supposed to stay within the white background but it overflows into the grey background now.

It looks like we get an extra &quot;LifeStyle&quot; section in the header compared to before r174226.

rdar://problem/19243435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060260</commentid>
    <comment_count>1</comment_count>
      <attachid>244369</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-09 13:48:59 -0800</bug_when>
    <thetext>Created attachment 244369
Reduced Test Case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060568</commentid>
    <comment_count>2</comment_count>
      <attachid>244447</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-12 08:43:52 -0800</bug_when>
    <thetext>Created attachment 244447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060577</commentid>
    <comment_count>3</comment_count>
      <attachid>244447</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-12 09:40:13 -0800</bug_when>
    <thetext>Comment on attachment 244447
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        Changed BytecodeGenerator::willResolveToArguments() to check to see if the arguments
&gt; +        register is captured.  If so, we can&apos;t use the arguments register, we have to resolve
&gt; +        arguments.  Renamed the function to willResolveToArgumentsRegister() to better indicate
&gt; +        what we are checking.

This explains what was done, but doesn’t say why.  Maybe it should be obvious, but I’m missing the detail of why we can’t use the value in the argument register.  By “resolve arguments”, I presume you mean resolving arguments from the captured lexical environment.  If so, why do we need to do that?  Why is the captured arguments object pointer different than that in the arguments register?  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060579</commentid>
    <comment_count>4</comment_count>
      <attachid>244447</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-12 09:50:31 -0800</bug_when>
    <thetext>Comment on attachment 244447
Patch

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

&gt; LayoutTests/js/script-tests/arguments-iterator.js:-95
&gt; -function testOverwrittenArguments() {
&gt; -    var i = 0;
&gt; -    arguments = &quot;foobar&quot;;
&gt; -    for (arg of arguments) {
&gt; -        realArg = arguments[i++];
&gt; -        shouldBeTrue(&quot;arg === realArg&quot;);
&gt; -    }
&gt; -    iteratedArgumentsLength = i;
&gt; -    actualArgumentsLength = arguments.length;
&gt; -    shouldBe(&quot;actualArgumentsLength&quot;, &quot;iteratedArgumentsLength&quot;);
&gt; -}
&gt; -
&gt; -
&gt; -testOverwrittenArguments();
&gt; -testOverwrittenArguments(&quot;a&quot;);
&gt; -testOverwrittenArguments(&quot;a&quot;, &quot;b&quot;);
&gt; -testOverwrittenArguments({})

Why remove these tests?  Can you say something in the ChangeLog comment that explains why they are not needed or inappropriate?

&gt; LayoutTests/js/script-tests/arguments-iterator.js:-117
&gt; -function testNonArrayLikeArguments() {
&gt; -    var i = 0;
&gt; -    arguments = {};
&gt; -    for (arg of arguments) {
&gt; -        fail(&quot;nothing to iterate&quot;);
&gt; -        return false;
&gt; -    }
&gt; -    return true;
&gt; -}
&gt; -shouldBeTrue(&quot;testNonArrayLikeArguments()&quot;);

Ditto.  An explanation of we can/should remove this test would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060769</commentid>
    <comment_count>5</comment_count>
      <attachid>244496</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-12 22:48:25 -0800</bug_when>
    <thetext>Created attachment 244496
Improved the ChangeLog comments as requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060843</commentid>
    <comment_count>6</comment_count>
      <attachid>244496</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-13 10:26:41 -0800</bug_when>
    <thetext>Comment on attachment 244496
Improved the ChangeLog comments as requested.

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

I’m uncomfortable with the removal of the tests, but other than that, LGTM with the comment clarification.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        BytecodeGenerator::willResolveToArguments() is used to check to see if we can use the
&gt; +        arguments register or whether we need to resolve &quot;arguments&quot;.  If the arguments have
&gt; +        been captured, then they are stored in the lexical environment and the arguments
&gt; +        register is not used.

I think this comment is unclear in that the issue is concerned about “arguments” being overloaded as a var, but the comment can be easily read as if it’s talking about whether the incoming parameters (e.g. a, b, c in function foo(a, b, c)) are captured.  How about rephrasing it like this:

We need to check if &quot;arguments” has been overloaded in a function to define a local variable that is captured.  If it is overloaded and is captured, then its value should be retrieved from the lexicalEnvironment rather than the arguments register.  The arguments register still points to the Arguments object (if present) and not the variable it is overloaded with.

&gt; LayoutTests/js/script-tests/arguments-iterator.js:-95
&gt; -function testOverwrittenArguments() {
&gt; -    var i = 0;
&gt; -    arguments = &quot;foobar&quot;;
&gt; -    for (arg of arguments) {
&gt; -        realArg = arguments[i++];
&gt; -        shouldBeTrue(&quot;arg === realArg&quot;);
&gt; -    }
&gt; -    iteratedArgumentsLength = i;
&gt; -    actualArgumentsLength = arguments.length;
&gt; -    shouldBe(&quot;actualArgumentsLength&quot;, &quot;iteratedArgumentsLength&quot;);
&gt; -}
&gt; -
&gt; -
&gt; -testOverwrittenArguments();
&gt; -testOverwrittenArguments(&quot;a&quot;);
&gt; -testOverwrittenArguments(&quot;a&quot;, &quot;b&quot;);
&gt; -testOverwrittenArguments({})

Thanks for the clarification on why you removed these.  However, I’m not sold on the given reason.  From what I can see, it does make sense that if you overload “arguments” with a local pointing to a string, you should be able to iterate it.  Instead, I think the real issue here is that the test output could be expressed better, but is a bit misleading right now.  Regardless, I think there is utility in a test confirming that “arguments” iteration in the function should work as tested if “arguments” is overloaded to point to a string as in this test.  As a result, I’m not comfortable removing this test.  Can you seek a second opinion on this please?

&gt; LayoutTests/js/script-tests/arguments-iterator.js:-117
&gt; -function testNonArrayLikeArguments() {
&gt; -    var i = 0;
&gt; -    arguments = {};
&gt; -    for (arg of arguments) {
&gt; -        fail(&quot;nothing to iterate&quot;);
&gt; -        return false;
&gt; -    }
&gt; -    return true;
&gt; -}
&gt; -shouldBeTrue(&quot;testNonArrayLikeArguments()&quot;);

Ditto.  I think there is utility in testing what happens if “arguments” is overloaded to point to an empty object.  Please seek a second opinion on this removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060844</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-13 11:06:56 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 244496 [details]
&gt; Improved the ChangeLog comments as requested.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244496&amp;action=review
&gt; 
&gt; I’m uncomfortable with the removal of the tests, but other than that, LGTM
&gt; with the comment clarification.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; +        BytecodeGenerator::willResolveToArguments() is used to check to see if we can use the
&gt; &gt; +        arguments register or whether we need to resolve &quot;arguments&quot;.  If the arguments have
&gt; &gt; +        been captured, then they are stored in the lexical environment and the arguments
&gt; &gt; +        register is not used.
&gt; 
&gt; I think this comment is unclear in that the issue is concerned about
&gt; “arguments” being overloaded as a var, but the comment can be easily read as
&gt; if it’s talking about whether the incoming parameters (e.g. a, b, c in
&gt; function foo(a, b, c)) are captured.  How about rephrasing it like this:
&gt; 
&gt; We need to check if &quot;arguments” has been overloaded in a function to define
&gt; a local variable that is captured.  If it is overloaded and is captured,
&gt; then its value should be retrieved from the lexicalEnvironment rather than
&gt; the arguments register.  The arguments register still points to the
&gt; Arguments object (if present) and not the variable it is overloaded with.

The only change to willResolveToArguments() in this patch is to check if &quot;arguments&quot; was captured.  There already is a check for &quot;overloading&quot; of arguments by checking m_localArgumentsRegister which is set to null if any individual argument or &quot;arguments&quot; is overloaded.  If it is captured, the lexical environment is the where we get or set the value of arguments.  That is what is meant by resolve.  If any individual argument or &quot;arguments&quot; is overloaded, the argument register is set to null by the byte code generator and cannot be used.

&gt; &gt; LayoutTests/js/script-tests/arguments-iterator.js:-95
&gt; &gt; -function testOverwrittenArguments() {
&gt; &gt; -    var i = 0;
&gt; &gt; -    arguments = &quot;foobar&quot;;
&gt; &gt; -    for (arg of arguments) {
&gt; &gt; -        realArg = arguments[i++];
&gt; &gt; -        shouldBeTrue(&quot;arg === realArg&quot;);
&gt; &gt; -    }
&gt; &gt; -    iteratedArgumentsLength = i;
&gt; &gt; -    actualArgumentsLength = arguments.length;
&gt; &gt; -    shouldBe(&quot;actualArgumentsLength&quot;, &quot;iteratedArgumentsLength&quot;);
&gt; &gt; -}
&gt; &gt; -
&gt; &gt; -
&gt; &gt; -testOverwrittenArguments();
&gt; &gt; -testOverwrittenArguments(&quot;a&quot;);
&gt; &gt; -testOverwrittenArguments(&quot;a&quot;, &quot;b&quot;);
&gt; &gt; -testOverwrittenArguments({})
&gt; 
&gt; Thanks for the clarification on why you removed these.  However, I’m not
&gt; sold on the given reason.  From what I can see, it does make sense that if
&gt; you overload “arguments” with a local pointing to a string, you should be
&gt; able to iterate it.  Instead, I think the real issue here is that the test
&gt; output could be expressed better, but is a bit misleading right now. 
&gt; Regardless, I think there is utility in a test confirming that “arguments”
&gt; iteration in the function should work as tested if “arguments” is overloaded
&gt; to point to a string as in this test.  As a result, I’m not comfortable
&gt; removing this test.  Can you seek a second opinion on this please?

The issue is that you can&apos;t iterate over a string with for .. of.  How about I put the &quot;change arguments to a string&quot; test back in and change the test to check for a string, but not iterate it?   

&gt; &gt; LayoutTests/js/script-tests/arguments-iterator.js:-117
&gt; &gt; -function testNonArrayLikeArguments() {
&gt; &gt; -    var i = 0;
&gt; &gt; -    arguments = {};
&gt; &gt; -    for (arg of arguments) {
&gt; &gt; -        fail(&quot;nothing to iterate&quot;);
&gt; &gt; -        return false;
&gt; &gt; -    }
&gt; &gt; -    return true;
&gt; &gt; -}
&gt; &gt; -shouldBeTrue(&quot;testNonArrayLikeArguments()&quot;);
&gt; 
&gt; Ditto.  I think there is utility in testing what happens if “arguments” is
&gt; overloaded to point to an empty object.  Please seek a second opinion on
&gt; this removal.

I can also put the test back in and check that arguments is an empty object, but not iterate with for .. of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060854</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-13 11:31:48 -0800</bug_when>
    <thetext>&gt; The issue is that you can&apos;t iterate over a string with for .. of.  How about
&gt; I put the &quot;change arguments to a string&quot; test back in and change the test to
&gt; check for a string, but not iterate it?   

In that case, the best change is to change the item being iterated not to be a string.

We want to continue to use for-of because that&apos;s the only way to test the codegen code path that covers variable resolution in for-of ().

&gt; I can also put the test back in and check that arguments is an empty object,
&gt; but not iterate with for .. of?

Why can&apos;t we iterate with for-of in this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060886</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-13 12:03:39 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; The issue is that you can&apos;t iterate over a string with for .. of.  How about
&gt; &gt; I put the &quot;change arguments to a string&quot; test back in and change the test to
&gt; &gt; check for a string, but not iterate it?   
&gt; 
&gt; In that case, the best change is to change the item being iterated not to be
&gt; a string.
&gt; 
&gt; We want to continue to use for-of because that&apos;s the only way to test the
&gt; codegen code path that covers variable resolution in for-of ().

I&apos;ll change to an array.
 
&gt; &gt; I can also put the test back in and check that arguments is an empty object,
&gt; &gt; but not iterate with for .. of?
&gt; 
&gt; Why can&apos;t we iterate with for-of in this case?

For this test code:

function testEmptyObjectIteration() {
    var myObj = {};

    for (v of myObj) {
        fail(&quot;nothing to iterate&quot;);
        return false;
    }

    return true;
}

WebKit returns: FAIL testEmptyObjectIteration() should be true. Threw exception TypeError: undefined is not a function (evaluating &apos;v of myObj&apos;)

Chrome returns: FAIL testEmptyObjectIteration() should be true. Threw exception TypeError: undefined is not a function

Firefox returns: FAIL testEmptyObjectIteration() should be true. Threw exception TypeError: myObj[&apos;@@iterator&apos;] is not a function

Doesn&apos;t look like the object returns an iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060897</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-13 12:40:24 -0800</bug_when>
    <thetext>&gt; &gt; &gt; I can also put the test back in and check that arguments is an empty object,
&gt; &gt; &gt; but not iterate with for .. of?

Seems like it would be more in the spirit of this test to iterate something iterable and empty with for-of -- for example, [].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061076</commentid>
    <comment_count>11</comment_count>
      <attachid>244580</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-13 21:34:49 -0800</bug_when>
    <thetext>Created attachment 244580
Updated arguments-iterator test to overwrite arguments with arrays</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061241</commentid>
    <comment_count>12</comment_count>
      <attachid>244580</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-14 11:03:55 -0800</bug_when>
    <thetext>Comment on attachment 244580
Updated arguments-iterator test to overwrite arguments with arrays

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061255</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-14 11:38:17 -0800</bug_when>
    <thetext>Committed r178432: &lt;http://trac.webkit.org/changeset/178432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061263</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-14 12:00:18 -0800</bug_when>
    <thetext>Looks like this caused a lot of failures on the bots:
https://build.webkit.org/builders/Apple%20Mavericks%2032-bit%20JSC%20%28BuildAndTest%29/builds/6701

&gt; ** The following JSC stress test failures have been introduced:
&gt; 	stress/inline-call-varargs-and-call.js.always-trigger-copy-phase
&gt; 	stress/inline-call-varargs-and-call.js.default
&gt; 	stress/inline-call-varargs-and-call.js.default-ftl
&gt; 	stress/inline-call-varargs-and-call.js.dfg-eager
&gt; 	stress/inline-call-varargs-and-call.js.dfg-eager-no-cjit-validate
&gt; 	stress/inline-call-varargs-and-call.js.ftl-eager
&gt; 	stress/inline-call-varargs-and-call.js.ftl-eager-no-cjit
&gt; 	stress/inline-call-varargs-and-call.js.ftl-no-cjit-validate
&gt; 	stress/inline-call-varargs-and-call.js.no-cjit-validate-phases
&gt; 	stress/inline-call-varargs-and-call.js.no-llint
&gt; 	stress/inline-call-varargs.js.always-trigger-copy-phase
&gt; 	stress/inline-call-varargs.js.default
&gt; 	stress/inline-call-varargs.js.default-ftl
&gt; 	stress/inline-call-varargs.js.ftl-no-cjit-validate
&gt; 	stress/inline-call-varargs.js.no-cjit-validate-phases
&gt; 	stress/inline-call-varargs.js.no-llint
&gt; 	v8-v6/v8-raytrace.js.dfg-eager
&gt; 	v8-v6/v8-raytrace.js.dfg-eager-no-cjit-validate
&gt; 	v8-v6/v8-raytrace.js.ftl-eager
&gt; 	v8-v6/v8-raytrace.js.ftl-eager-no-cjit
&gt; 
&gt; Results for JSC stress tests:
&gt;     20 failures found.

Should I roll this out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061266</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-14 12:09:24 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 140460</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061272</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-14 12:17:24 -0800</bug_when>
    <thetext>Rolled this out in r178435 (Michael Saboff is on vacation today).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061717</commentid>
    <comment_count>17</comment_count>
      <attachid>244734</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-15 17:11:44 -0800</bug_when>
    <thetext>Created attachment 244734
Updated patch with 32 bit build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061904</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-16 12:40:18 -0800</bug_when>
    <thetext>Committed r178591: &lt;http://trac.webkit.org/changeset/178591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062009</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-01-16 15:57:11 -0800</bug_when>
    <thetext>This made two tests time out on Mac Debug:
js/slow-stress/call-spread.html
js/slow-stress/new-spread.html

And also it looks like Windows Release crashes on call-spread.html flakily after this patch (as it did when the previous version was landed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063241</commentid>
    <comment_count>20</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-21 17:32:23 -0800</bug_when>
    <thetext>Looks like this may have caused a ~3% regression on the Speedometer benchmark. The slowdown was caught by all the bots on perf.webkit.org.

This is the revision range:
&lt;http://trac.webkit.org/log/?rev=178605&amp;stop_rev=178589&amp;verbose=on&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065935</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-31 21:51:36 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Looks like this may have caused a ~3% regression on the Speedometer
&gt; benchmark. The slowdown was caught by all the bots on perf.webkit.org.
&gt; 
&gt; This is the revision range:
&gt; &lt;http://trac.webkit.org/log/?rev=178605&amp;stop_rev=178589&amp;verbose=on&gt;

Combining two graphs:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%2C%5B%22mac-yosemite%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D&amp;days=29&amp;zoom=%5B1421202788589.2793%2C1421592110327.5376%5D

yields even a smaller blame list:
http://trac.webkit.org/log/?rev=178592&amp;stop_rev=178589&amp;verbose=on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072571</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-26 17:19:23 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Looks like this may have caused a ~3% regression on the Speedometer
&gt; &gt; benchmark. The slowdown was caught by all the bots on perf.webkit.org.
&gt; &gt; 
&gt; &gt; This is the revision range:
&gt; &gt; &lt;http://trac.webkit.org/log/?rev=178605&amp;stop_rev=178589&amp;verbose=on&gt;
&gt; 
&gt; Combining two graphs:
&gt; https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-
&gt; mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%2C%5B%22mac-
&gt; yosemite%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D&amp;days=29&amp;zoom=%
&gt; 5B1421202788589.2793%2C1421592110327.5376%5D
&gt; 
&gt; yields even a smaller blame list:
&gt; http://trac.webkit.org/log/?rev=178592&amp;stop_rev=178589&amp;verbose=on

Perf regression was fixed in &lt;http://trac.webkit.org/changeset/179202&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244369</attachid>
            <date>2015-01-09 13:48:59 -0800</date>
            <delta_ts>2015-01-12 08:43:52 -0800</delta_ts>
            <desc>Reduced Test Case</desc>
            <filename>140306-test.patch</filename>
            <type>text/plain</type>
            <size>2483</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQwMzA2LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0MDMwNi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0MDMwNi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE0MDMwNi4gVGhpcyB0ZXN0IHNob3VsZCBydW4gd2l0aG91dCBhbnkgZXhj
ZXB0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzLTE0MDMwNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MtMTQwMzA2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0
MDMwNi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdyZXNzLTE0MDMwNi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVn
cmVzcy0xNDAzMDYuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L3JlZ3Jlc3MtMTQwMzA2LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL3JlZ3Jlc3MtMTQwMzA2LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAK
K2Rlc2NyaXB0aW9uKAorIlJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTQwMzA2LiBUaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0IGFueSBleGNlcHRpb25zLiIKKyk7
CisKK29yaWdpbmFsQXJncyA9IFsgMSwgIlNlY29uZCIsIG5ldyBOdW1iZXIoMyksICJGb3VydGgi
IF07CisKK2Z1bmN0aW9uIGNoZWNrQXJncyhhMSwgYTIsIGEzKSB7CisgICAgaWYgKGExICE9PSBv
cmlnaW5hbEFyZ3NbMV0pCisgICAgICAgIHRocm93ICJWYWx1ZSBvZiBkZWNsYXJlZCBhcmcgYTEg
aXMgd3JvbmcuICBTaG91bGQgYmU6ICIgKyBvcmlnaW5hbEFyZ3NbMV0gKyAiLCB3YXM6ICIgKyBh
MTsKKworICAgIGlmIChhMiAhPT0gb3JpZ2luYWxBcmdzWzJdKQorICAgICAgICB0aHJvdyAiVmFs
dWUgb2YgZGVjbGFyZWQgYXJnIGEyIGlzIHdyb25nLiAgU2hvdWxkIGJlOiAiICsgb3JpZ2luYWxB
cmdzWzJdICsgIiwgd2FzOiAiICsgYTI7CisKKyAgICBpZiAoYTMgIT09IG9yaWdpbmFsQXJnc1sz
XSkKKyAgICAgICAgdGhyb3cgIlZhbHVlIG9mIGRlY2xhcmVkIGFyZyBhMyBpcyB3cm9uZy4gIFNo
b3VsZCBiZTogIiArIG9yaWdpbmFsQXJnc1szXSArICIsIHdhczogIiArIGEzOworCisgICAgaWYg
KGFyZ3VtZW50cy5sZW5ndGggIT0gMykKKyAgICAgICAgdGhyb3cgIkxlbmd0aCBvZiBhcmd1bWVu
dHMgaXMgd3JvbmcuICBTSG91bGQgYmU6IDMsIHdhczogIiArIGFyZ3VtZW50cy5sZW5ndGg7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAoYXJndW1lbnRzW2ldICE9PSBvcmlnaW5hbEFyZ3NbaSArIDFdKQorICAgICAgICAgICAg
dGhyb3cgIlZhbHVlIG9mIGFyZ3VtZW50c1siICsgaSArICJdIGlzIHdyb25nLiAgU2hvdWxkIGJl
OiAiICsgb3JpZ2luYWxBcmdzW2krMV0gKyAiLCB3YXM6ICIgKyBhcmd1bWVudHNbaV07CisgICAg
fQorfQorCitmdW5jdGlvbiBhcHBseVRvQXJncygpIHsKKyAgICBhcmd1bWVudHMgPSBBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOworICAgIGFyZ3VtZW50cy5zaGlmdCgp
OworCisgICAgdHJ5IHsKKyAgICAgICAgY2hlY2tBcmdzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCithcHBseVRv
QXJncy5hcHBseSh0aGlzLCBvcmlnaW5hbEFyZ3MpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244447</attachid>
            <date>2015-01-12 08:43:52 -0800</date>
            <delta_ts>2015-01-12 22:48:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>140306.patch</filename>
            <type>text/plain</type>
            <size>15868</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MjY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE1LTAxLTEyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxNzQyMjYpOiBIZWFkZXIgb24gaHVmZmluZ3RvbnBvc3QuY29tIGlz
IHRvbyBsYXJnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hhbmdlZCBCeXRlY29kZUdlbmVyYXRvcjo6d2lsbFJlc29sdmVUb0FyZ3VtZW50cygpIHRv
IGNoZWNrIHRvIHNlZSBpZiB0aGUgYXJndW1lbnRzCisgICAgICAgIHJlZ2lzdGVyIGlzIGNhcHR1
cmVkLiAgSWYgc28sIHdlIGNhbid0IHVzZSB0aGUgYXJndW1lbnRzIHJlZ2lzdGVyLCB3ZSBoYXZl
IHRvIHJlc29sdmUKKyAgICAgICAgYXJndW1lbnRzLiAgUmVuYW1lZCB0aGUgZnVuY3Rpb24gdG8g
d2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKCkgdG8gYmV0dGVyIGluZGljYXRlCisgICAg
ICAgIHdoYXQgd2UgYXJlIGNoZWNraW5nLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxS
ZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjp1bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNv
bHZlVG9Bcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Omdl
dEFyZ3VtZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmVtaXREaXJl
Y3RCaW5kaW5nKToKKwogMjAxNS0wMS0xMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBMb2NhbCBKU0FycmF5KiAia2V5cyIgaW4gb2JqZWN0Q29uc3RydWN0
b3JLZXlzKCkgaXMgbm90IG1hcmtlZCBkdXJpbmcgZ2FyYmFnZSBjb2xsZWN0aW9uCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTc4MjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
Myw3ICs1NjMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRQYXJhbWV0ZXIoY29uCiAg
ICAgbV9jb2RlQmxvY2stPmFkZFBhcmFtZXRlcigpOwogfQogCi1ib29sIEJ5dGVjb2RlR2VuZXJh
dG9yOjp3aWxsUmVzb2x2ZVRvQXJndW1lbnRzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6d2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogewogICAgIGlmIChpZGVudCAhPSBwcm9wZXJ0eU5hbWVzKCku
YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NzUsNiArNTc1LDkgQEAgYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6d2lsbFJlc29sdmVUb0FyZwogICAgIGlmIChlbnRyeS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKG1fbG9jYWxBcmd1bWVudHNS
ZWdpc3RlciAmJiBpc0NhcHR1cmVkKG1fbG9jYWxBcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3Vt
ZW50cygpICYmIG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmIG1fbG9jYWxBcmd1bWVudHNS
ZWdpc3RlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCkBAIC01ODMsNyArNTg2LDcgQEAg
Ym9vbCBCeXRlY29kZUdlbmVyYXRvcjo6d2lsbFJlc29sdmVUb0FyZwogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6dW5jaGVja2VkTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpCiB7Ci0g
ICAgQVNTRVJUKHdpbGxSZXNvbHZlVG9Bcmd1bWVudHMocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cykpOworICAgIEFTU0VSVCh3aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIocHJvcGVydHlO
YW1lcygpLmFyZ3VtZW50cykpOwogICAgIEFTU0VSVChtX2xvY2FsQXJndW1lbnRzUmVnaXN0ZXIp
OwogICAgIHJldHVybiBtX2xvY2FsQXJndW1lbnRzUmVnaXN0ZXI7CiB9CkBAIC0xODc0LDcgKzE4
NzcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbi0+bV9uZXh0KTsKICAgICAgICAgICAgIGF1dG8gZXhwcmVz
c2lvbiA9IHN0YXRpY19jYXN0PFNwcmVhZEV4cHJlc3Npb25Ob2RlKj4obi0+bV9leHByKS0+ZXhw
cmVzc2lvbigpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3VtZW50UmVnaXN0
ZXI7Ci0gICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi0+aXNSZXNvbHZlTm9kZSgpICYmIHdpbGxS
ZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByZXNzaW9uKS0+
aWRlbnRpZmllcigpKSAmJiAhc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpCisgICAgICAg
ICAgICBpZiAoZXhwcmVzc2lvbi0+aXNSZXNvbHZlTm9kZSgpICYmIHdpbGxSZXNvbHZlVG9Bcmd1
bWVudHNSZWdpc3RlcihzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHJlc3Npb24pLT5pZGVu
dGlmaWVyKCkpICYmICFzeW1ib2xUYWJsZSgpLnNsb3dBcmd1bWVudHMoKSkKICAgICAgICAgICAg
ICAgICBhcmd1bWVudFJlZ2lzdGVyID0gdW5jaGVja2VkTG9jYWxBcmd1bWVudHNSZWdpc3Rlcigp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXIgPSBl
eHByZXNzaW9uLT5lbWl0Qnl0ZWNvZGUoKnRoaXMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdp
c3RlcigwKSk7CkBAIC0yMDE2LDcgKzIwMTksNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENvbnN0CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbi0+bV9uZXh0KTsK
ICAgICAgICAgICAgIGF1dG8gZXhwcmVzc2lvbiA9IHN0YXRpY19jYXN0PFNwcmVhZEV4cHJlc3Np
b25Ob2RlKj4obi0+bV9leHByKS0+ZXhwcmVzc2lvbigpOwogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGFyZ3VtZW50UmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi0+
aXNSZXNvbHZlTm9kZSgpICYmIHdpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihleHByZXNzaW9uKS0+aWRlbnRpZmllcigpKSAmJiAhc3ltYm9sVGFibGUoKS5z
bG93QXJndW1lbnRzKCkpCisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi0+aXNSZXNvbHZlTm9k
ZSgpICYmIHdpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3RlcihzdGF0aWNfY2FzdDxSZXNvbHZl
Tm9kZSo+KGV4cHJlc3Npb24pLT5pZGVudGlmaWVyKCkpICYmICFzeW1ib2xUYWJsZSgpLnNsb3dB
cmd1bWVudHMoKSkKICAgICAgICAgICAgICAgICBhcmd1bWVudFJlZ2lzdGVyID0gdW5jaGVja2Vk
TG9jYWxBcmd1bWVudHNSZWdpc3RlcigpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGFyZ3VtZW50UmVnaXN0ZXIgPSBleHByZXNzaW9uLT5lbWl0Qnl0ZWNvZGUoKnRoaXMsIGNh
bGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSk7CkBAIC0yNTk0LDcgKzI1OTcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4
cHJlc3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2spCiB7CiAgICAgaWYgKHN1Ympl
Y3ROb2RlLT5pc1Jlc29sdmVOb2RlKCkKLSAgICAgICAgJiYgd2lsbFJlc29sdmVUb0FyZ3VtZW50
cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KHN1YmplY3ROb2RlKS0+aWRlbnRpZmllcigpKQor
ICAgICAgICAmJiB3aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihzdWJqZWN0Tm9kZSktPmlkZW50aWZpZXIoKSkKICAgICAgICAgJiYgIXN5bWJv
bFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
bmRleCA9IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgpLCBqc051bWJlcigwKSk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgJKHJldmlzaW9uIDE3ODI0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKTsKIAotICAgICAgICBib29s
IHdpbGxSZXNvbHZlVG9Bcmd1bWVudHMoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBib29s
IHdpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcihjb25zdCBJZGVudGlmaWVyJik7CiAKICAg
ICAgICAgYm9vbCBoYXNTYWZlTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpIHsgcmV0dXJuIG1fbG9j
YWxBcmd1bWVudHNSZWdpc3RlcjsgfQogICAgICAgICBSZWdpc3RlcklEKiB1bmNoZWNrZWRMb2Nh
bEFyZ3VtZW50c1JlZ2lzdGVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzgyNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4Miw3ICszODIsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0Qnl0ZWNvCiBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAg
IGlmIChtX2Jhc2UtPmlzUmVzb2x2ZU5vZGUoKSAKLSAgICAgICAgJiYgZ2VuZXJhdG9yLndpbGxS
ZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5pZGVu
dGlmaWVyKCkpCisgICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVn
aXN0ZXIoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5pZGVudGlmaWVyKCkpCiAg
ICAgICAgICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3Jp
cHQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC00MTgsNyArNDE4LDcgQEAgUmVnaXN0ZXJJRCogRG90
QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZAogICAgICAgICBpZiAoIW1fYmFzZS0+aXNSZXNvbHZl
Tm9kZSgpKQogICAgICAgICAgICAgZ290byBub25Bcmd1bWVudHNQYXRoOwogICAgICAgICBSZXNv
bHZlTm9kZSogcmVzb2x2ZU5vZGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fYmFzZSk7
Ci0gICAgICAgIGlmICghZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMocmVzb2x2ZU5v
ZGUtPmlkZW50aWZpZXIoKSkpCisgICAgICAgIGlmICghZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9B
cmd1bWVudHNSZWdpc3RlcihyZXNvbHZlTm9kZS0+aWRlbnRpZmllcigpKSkKICAgICAgICAgICAg
IGdvdG8gbm9uQXJndW1lbnRzUGF0aDsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRBcmd1bWVudHNMZW5ndGgoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KSwgZ2VuZXJhdG9yLnVuY2hlY2tlZExvY2FsQXJndW1lbnRzUmVnaXN0ZXIoKSk7CkBA
IC01OTksNyArNTk5LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dAogc3RhdGljIFJlZ2lzdGVySUQqIGdldEFyZ3VtZW50QnlWYWwoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiBkc3QsIEpTVGV4dFBvc2l0aW9uIGRpdm90LCBKU1RleHRQb3NpdGlvbiBkaXZv
dFN0YXJ0LCBKU1RleHRQb3NpdGlvbiBkaXZvdEVuZCkKIHsKICAgICBpZiAoYmFzZS0+aXNSZXNv
bHZlTm9kZSgpCi0gICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0
YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYmFzZSktPmlkZW50aWZpZXIoKSkKKyAgICAgICAgJiYg
Z2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3RlcihzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGJhc2UpLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICYmICFnZW5lcmF0b3Iuc3lt
Ym9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRBcmd1bWVudEJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIGdlbmVyYXRvci51bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCksIHByb3Bl
cnR5KTsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGU6OmVtCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOwogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwogICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBh
cmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0gICAgICAgIGlmIChhcmdzLT5tX2V4
cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhz
dGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkgJiYg
IWdlbmVyYXRvci5zeW1ib2xUYWJsZSgpLnNsb3dBcmd1bWVudHMoKSkKKyAgICAgICAgaWYgKGFy
Z3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJn
dW1lbnRzUmVnaXN0ZXIoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4cHIpLT5p
ZGVudGlmaWVyKCkpICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkp
CiAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkTG9jYWxBcmd1
bWVudHNSZWdpc3RlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIg
PSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKQEAgLTI3NzYsNyArMjc3Niw3IEBA
IHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2QKIFJlZ2lzdGVySUQqIEFy
cmF5UGF0dGVybk5vZGU6OmVtaXREaXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqIHJocykKIHsKICAgICBpZiAo
cmhzLT5pc1Jlc29sdmVOb2RlKCkKLSAgICAgICAgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9B
cmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihyaHMpLT5pZGVudGlmaWVyKCkpCisg
ICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUqPihyaHMpLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICYmIGdlbmVy
YXRvci5oYXNTYWZlTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpJiYgIWdlbmVyYXRvci5zeW1ib2xU
YWJsZSgpLnNsb3dBcmd1bWVudHMoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fdGFyZ2V0UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgIGF1dG8gdGFyZ2V0
ID0gbV90YXJnZXRQYXR0ZXJuc1tpXTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODI2NikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE1
LTAxLTEyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFJF
R1JFU1NJT04gKHIxNzQyMjYpOiBIZWFkZXIgb24gaHVmZmluZ3RvbnBvc3QuY29tIGlzIHRvbyBs
YXJnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQw
MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlZCBqcy9hcmd1bWVudHMtaXRlcmF0b3IgdGVzdCB0byBvbmx5IGNoZWNrIHRoYXQgYXJndW1l
bnRzIGNoYW5nZWQKKyAgICAgICAgdG8gYSBkaWZmZXJlbnQgdmFsdWUuCisKKyAgICAgICAgQWRk
ZWQgbmV3IHJlZ3Jlc3Npb24gdGVzdCwganMvcmVncmVzcy0xNDAzMDYuCisKKyAgICAgICAgKiBq
cy9hcmd1bWVudHMtaXRlcmF0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3Mt
MTQwMzA2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy0xNDAzMDYu
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2FyZ3VtZW50cy1pdGVyYXRv
ci5qczoKKyAgICAgICAgKHRlc3ROdWxsQXJndW1lbnRzKToKKyAgICAgICAgKHRlc3RPdmVyd3Jp
dHRlbkFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0Tm9uQXJyYXlMaWtlQXJndW1l
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDAzMDYu
anM6IEFkZGVkLgorICAgICAgICAoY2hlY2tBcmdzKToKKyAgICAgICAgKGFwcGx5VG9BcmdzKToK
KwogMjAxNS0wMS0xMiAgQW5kcnplaiBCYWRvd3NraSAgPGEuYmFkb3dza2lAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgQVg6IFtBVEtdIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGl0bGUgYXR0cmlidXRl
LCBpZiB0aGVyZSBpcyBhIGxhYmVsIHdpdGggdGhlIGF0dHJpYnV0ZSBmb3I/CkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9hcmd1bWVudHMtaXRlcmF0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL2FyZ3VtZW50cy1pdGVyYXRvci1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE3ODI0MykKKysrIExheW91dFRlc3RzL2pzL2FyZ3VtZW50cy1pdGVyYXRvci1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2LDM2ICszNiw3IEBAIFBBU1MgYXJnID09PSByZWFsQXJn
IGlzIHRydWUKIFBBU1MgYWN0dWFsQXJndW1lbnRzTGVuZ3RoIGlzIGl0ZXJhdGVkQXJndW1lbnRz
TGVuZ3RoCiBQQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCiBQQVNTIGFjdHVhbEFyZ3VtZW50
c0xlbmd0aCBpcyBpdGVyYXRlZEFyZ3VtZW50c0xlbmd0aAotUEFTUyBhcmcgPT09IHJlYWxBcmcg
aXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxB
cmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJl
YWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhY3R1YWxB
cmd1bWVudHNMZW5ndGggaXMgaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgKLVBBU1MgYXJnID09PSBy
ZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09
PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJn
ID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1Mg
YWN0dWFsQXJndW1lbnRzTGVuZ3RoIGlzIGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoCi1QQVNTIGFy
ZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNT
IGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1Q
QVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVl
Ci1QQVNTIGFjdHVhbEFyZ3VtZW50c0xlbmd0aCBpcyBpdGVyYXRlZEFyZ3VtZW50c0xlbmd0aAot
UEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1
ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMg
dHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcg
aXMgdHJ1ZQotUEFTUyBhY3R1YWxBcmd1bWVudHNMZW5ndGggaXMgaXRlcmF0ZWRBcmd1bWVudHNM
ZW5ndGgKLVBBU1MgdGVzdE51bGxBcmd1bWVudHMoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2ZhaWwoIm5vdGhpbmcgdG8gaXRl
cmF0ZSIpJykuCi1QQVNTIHRlc3ROb25BcnJheUxpa2VBcmd1bWVudHMoKSBpcyB0cnVlCitQQVNT
IHRlc3ROdWxsQXJndW1lbnRzKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogbnVsbCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhcmcgb2YgYXJndW1lbnRzJykuCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MtMTQwMzA2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzLTE0MDMwNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzLTE0MDMwNi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5IEBACitSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0MDMw
Ni4gVGhpcyB0ZXN0IHNob3VsZCBydW4gd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0MDMwNi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQwMzA2Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0MDMwNi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9yZWdyZXNzLTE0MDMwNi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJndW1lbnRzLWl0ZXJhdG9yLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcmd1bWVudHMtaXRl
cmF0b3IuanMJKHJldmlzaW9uIDE3ODI0MykKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9hcmd1bWVudHMtaXRlcmF0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI4ICs3Niw3IEBA
IHRlc3RSZWlmaWVkQXJndW1lbnRzKCJhIiwgImIiKTsKIHRlc3RSZWlmaWVkQXJndW1lbnRzKHt9
KQogCiAKLWZ1bmN0aW9uIHRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cygpIHsKLSAgICB2YXIgaSA9
IDA7Ci0gICAgYXJndW1lbnRzID0gImZvb2JhciI7Ci0gICAgZm9yIChhcmcgb2YgYXJndW1lbnRz
KSB7Ci0gICAgICAgIHJlYWxBcmcgPSBhcmd1bWVudHNbaSsrXTsKLSAgICAgICAgc2hvdWxkQmVU
cnVlKCJhcmcgPT09IHJlYWxBcmciKTsKLSAgICB9Ci0gICAgaXRlcmF0ZWRBcmd1bWVudHNMZW5n
dGggPSBpOwotICAgIGFjdHVhbEFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7Ci0g
ICAgc2hvdWxkQmUoImFjdHVhbEFyZ3VtZW50c0xlbmd0aCIsICJpdGVyYXRlZEFyZ3VtZW50c0xl
bmd0aCIpOwotfQotCi0KLXRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cygpOwotdGVzdE92ZXJ3cml0
dGVuQXJndW1lbnRzKCJhIik7Ci10ZXN0T3ZlcndyaXR0ZW5Bcmd1bWVudHMoImEiLCAiYiIpOwot
dGVzdE92ZXJ3cml0dGVuQXJndW1lbnRzKHt9KQotCi0KLQogZnVuY3Rpb24gdGVzdE51bGxBcmd1
bWVudHMoKSB7Ci0gICAgdmFyIGkgPSAwOwogICAgIGFyZ3VtZW50cyA9IG51bGw7CiAgICAgZm9y
IChhcmcgb2YgYXJndW1lbnRzKSB7CiAgICAgICAgIGZhaWwoIm5vdGhpbmcgdG8gaXRlcmF0ZSIp
OwpAQCAtMTA1LDE0ICs4NCwzIEBAIGZ1bmN0aW9uIHRlc3ROdWxsQXJndW1lbnRzKCkgewogfQog
CiBzaG91bGRUaHJvdygidGVzdE51bGxBcmd1bWVudHMoKSIpOwotZnVuY3Rpb24gdGVzdE5vbkFy
cmF5TGlrZUFyZ3VtZW50cygpIHsKLSAgICB2YXIgaSA9IDA7Ci0gICAgYXJndW1lbnRzID0ge307
Ci0gICAgZm9yIChhcmcgb2YgYXJndW1lbnRzKSB7Ci0gICAgICAgIGZhaWwoIm5vdGhpbmcgdG8g
aXRlcmF0ZSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotc2hvdWxkQmVUcnVlKCJ0ZXN0Tm9uQXJyYXlMaWtlQXJndW1lbnRzKCkiKTsKLQpJbmRl
eDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQwMzA2LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdyZXNzLTE0MDMwNi5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdyZXNzLTE0MDMwNi5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACitkZXNjcmlwdGlvbigKKyJSZWdyZXNz
aW9uIHRlc3QgZm9yIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0MDMwNi4gVGhpcyB0ZXN0IHNob3Vs
ZCBydW4gd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4iCispOworCit0ZXN0QXJncyA9IFsgMSwgIlNl
Y29uZCIsIG5ldyBOdW1iZXIoMykgXTsKKworZnVuY3Rpb24gY2hlY2tBcmdzKGEwLCBhMSwgYTIp
IHsKKyAgICBpZiAoYTAgIT09IHRlc3RBcmdzWzBdKQorICAgICAgICB0aHJvdyAiVmFsdWUgb2Yg
ZGVjbGFyZWQgYXJnIGEwIGlzIHdyb25nLiAgU2hvdWxkIGJlOiAiICsgdGVzdEFyZ3NbMF0gKyAi
LCB3YXM6ICIgKyBhMDsKKworICAgIGlmIChhMSAhPT0gdGVzdEFyZ3NbMV0pCisgICAgICAgIHRo
cm93ICJWYWx1ZSBvZiBkZWNsYXJlZCBhcmcgYTEgaXMgd3JvbmcuICBTaG91bGQgYmU6ICIgKyB0
ZXN0QXJnc1sxXSArICIsIHdhczogIiArIGExOworCisgICAgaWYgKGEyICE9PSB0ZXN0QXJnc1sy
XSkKKyAgICAgICAgdGhyb3cgIlZhbHVlIG9mIGRlY2xhcmVkIGFyZyBhMiBpcyB3cm9uZy4gIFNo
b3VsZCBiZTogIiArIHRlc3RBcmdzWzJdICsgIiwgd2FzOiAiICsgYTI7CisKKyAgICBpZiAoYXJn
dW1lbnRzLmxlbmd0aCAhPSAzKQorICAgICAgICB0aHJvdyAiTGVuZ3RoIG9mIGFyZ3VtZW50cyBp
cyB3cm9uZy4gIFNob3VsZCBiZTogMywgd2FzOiAiICsgYXJndW1lbnRzLmxlbmd0aDsKKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlm
IChhcmd1bWVudHNbaV0gIT09IHRlc3RBcmdzW2ldKQorICAgICAgICAgICAgdGhyb3cgIlZhbHVl
IG9mIGFyZ3VtZW50c1siICsgaSArICJdIGlzIHdyb25nLiAgU2hvdWxkIGJlOiAiICsgdGVzdEFy
Z3NbaV0gKyAiLCB3YXM6ICIgKyBhcmd1bWVudHNbaV07CisgICAgfQorfQorCitmdW5jdGlvbiBh
cHBseVRvQXJncygpIHsKKyAgICBhcmd1bWVudHMgPSB0ZXN0QXJnczsKKworICAgIGNoZWNrQXJn
cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpCisKKyAgICB0cnkgeyB9IGNhdGNoIChlKSB7IHRocm93
IGU7IH0gIC8vIFRvIGZvcmNlIHRoZSBjcmVhdGlvbiBvZiBhbiBhY3RpdmF0aW9uIG9iamVjdAor
fQorCithcHBseVRvQXJncyg0Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244496</attachid>
            <date>2015-01-12 22:48:25 -0800</date>
            <delta_ts>2015-01-13 21:34:49 -0800</delta_ts>
            <desc>Improved the ChangeLog comments as requested.</desc>
            <filename>140306-2.patch</filename>
            <type>text/plain</type>
            <size>16316</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE1LTAxLTEyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxNzQyMjYpOiBIZWFkZXIgb24gaHVmZmluZ3RvbnBvc3QuY29tIGlz
IHRvbyBsYXJnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoKSBpcyB1c2VkIHRv
IGNoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBhcmd1bWVudHMgcmVnaXN0
ZXIgb3Igd2hldGhlciB3ZSBuZWVkIHRvIHJlc29sdmUgImFyZ3VtZW50cyIuICBJZiB0aGUgYXJn
dW1lbnRzIGhhdmUKKyAgICAgICAgYmVlbiBjYXB0dXJlZCwgdGhlbiB0aGV5IGFyZSBzdG9yZWQg
aW4gdGhlIGxleGljYWwgZW52aXJvbm1lbnQgYW5kIHRoZSBhcmd1bWVudHMKKyAgICAgICAgcmVn
aXN0ZXIgaXMgbm90IHVzZWQuCisgICAgICAgIENoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3I6Ondp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoKSB0byBhbHNvIGNoZWNrIHRvIHNlZSBpZiB0aGUgYXJndW1l
bnRzCisgICAgICAgIHJlZ2lzdGVyIGlzIGNhcHR1cmVkLiAgUmVuYW1lZCB0aGUgZnVuY3Rpb24g
dG8gd2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKCkgdG8KKyAgICAgICAgYmV0dGVyIGlu
ZGljYXRlIHdoYXQgd2UgYXJlIGNoZWNraW5nLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Ondp
bGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjp1bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxS
ZXNvbHZlVG9Bcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
OgorICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OmdldEFyZ3VtZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmVtaXRE
aXJlY3RCaW5kaW5nKToKKwogMjAxNS0wMS0xMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRhcmdldHRpbmcgdGhlIFNWRy0+T1RGIGZv
bnQgY29udmVydGVyIHdpdGggRU5BQkxFKFNWR19PVEZfQ09OVkVSVEVSKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDE3ODMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjMsNyAr
NTYzLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUGFyYW1ldGVyKGNvbgogICAgIG1f
Y29kZUJsb2NrLT5hZGRQYXJhbWV0ZXIoKTsKIH0KIAotYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6
d2lsbFJlc29sdmVUb0FyZ3VtZW50cyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK2Jvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcihjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKIHsKICAgICBpZiAoaWRlbnQgIT0gcHJvcGVydHlOYW1lcygpLmFyZ3Vt
ZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc1LDYgKzU3NSw5IEBAIGJvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9BcmcKICAgICBpZiAoZW50cnkuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmIChtX2xvY2FsQXJndW1lbnRzUmVnaXN0
ZXIgJiYgaXNDYXB0dXJlZChtX2xvY2FsQXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMo
KSAmJiBtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBtX2xvY2FsQXJndW1lbnRzUmVnaXN0
ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIApAQCAtNTgzLDcgKzU4Niw3IEBAIGJvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9BcmcKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OnVuY2hlY2tlZExvY2FsQXJndW1lbnRzUmVnaXN0ZXIoKQogewotICAgIEFT
U0VSVCh3aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpKTsK
KyAgICBBU1NFUlQod2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKHByb3BlcnR5TmFtZXMo
KS5hcmd1bWVudHMpKTsKICAgICBBU1NFUlQobV9sb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKTsKICAg
ICByZXR1cm4gbV9sb2NhbEFyZ3VtZW50c1JlZ2lzdGVyOwogfQpAQCAtMTg3NCw3ICsxODc3LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW4tPm1fbmV4dCk7CiAgICAgICAgICAgICBhdXRvIGV4cHJlc3Npb24g
PSBzdGF0aWNfY2FzdDxTcHJlYWRFeHByZXNzaW9uTm9kZSo+KG4tPm1fZXhwciktPmV4cHJlc3Np
b24oKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmd1bWVudFJlZ2lzdGVyOwot
ICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24tPmlzUmVzb2x2ZU5vZGUoKSAmJiB3aWxsUmVzb2x2
ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcmVzc2lvbiktPmlkZW50
aWZpZXIoKSkgJiYgIXN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKQorICAgICAgICAgICAg
aWYgKGV4cHJlc3Npb24tPmlzUmVzb2x2ZU5vZGUoKSAmJiB3aWxsUmVzb2x2ZVRvQXJndW1lbnRz
UmVnaXN0ZXIoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByZXNzaW9uKS0+aWRlbnRpZmll
cigpKSAmJiAhc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpCiAgICAgICAgICAgICAgICAg
YXJndW1lbnRSZWdpc3RlciA9IHVuY2hlY2tlZExvY2FsQXJndW1lbnRzUmVnaXN0ZXIoKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBhcmd1bWVudFJlZ2lzdGVyID0gZXhwcmVz
c2lvbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIo
MCkpOwpAQCAtMjAxNiw3ICsyMDE5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDb25zdAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW4tPm1fbmV4dCk7CiAgICAg
ICAgICAgICBhdXRvIGV4cHJlc3Npb24gPSBzdGF0aWNfY2FzdDxTcHJlYWRFeHByZXNzaW9uTm9k
ZSo+KG4tPm1fZXhwciktPmV4cHJlc3Npb24oKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBhcmd1bWVudFJlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24tPmlzUmVz
b2x2ZU5vZGUoKSAmJiB3aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oZXhwcmVzc2lvbiktPmlkZW50aWZpZXIoKSkgJiYgIXN5bWJvbFRhYmxlKCkuc2xvd0Fy
Z3VtZW50cygpKQorICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24tPmlzUmVzb2x2ZU5vZGUoKSAm
JiB3aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUq
PihleHByZXNzaW9uKS0+aWRlbnRpZmllcigpKSAmJiAhc3ltYm9sVGFibGUoKS5zbG93QXJndW1l
bnRzKCkpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRSZWdpc3RlciA9IHVuY2hlY2tlZExvY2Fs
QXJndW1lbnRzUmVnaXN0ZXIoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBh
cmd1bWVudFJlZ2lzdGVyID0gZXhwcmVzc2lvbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBjYWxsQXJn
dW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCkpOwpAQCAtMjU5NCw3ICsyNTk3LDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZQogdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNz
aW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrKQogewogICAgIGlmIChzdWJqZWN0Tm9k
ZS0+aXNSZXNvbHZlTm9kZSgpCi0gICAgICAgICYmIHdpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3Rh
dGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihzdWJqZWN0Tm9kZSktPmlkZW50aWZpZXIoKSkKKyAgICAg
ICAgJiYgd2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oc3ViamVjdE5vZGUpLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICYmICFzeW1ib2xUYWJs
ZSgpLnNsb3dBcmd1bWVudHMoKSkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXgg
PSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwganNOdW1iZXIoMCkpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCShyZXZpc2lvbiAxNzgzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbik7CiAKLSAgICAgICAgYm9vbCB3aWxs
UmVzb2x2ZVRvQXJndW1lbnRzKGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCB3aWxs
UmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAg
IGJvb2wgaGFzU2FmZUxvY2FsQXJndW1lbnRzUmVnaXN0ZXIoKSB7IHJldHVybiBtX2xvY2FsQXJn
dW1lbnRzUmVnaXN0ZXI7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogdW5jaGVja2VkTG9jYWxBcmd1
bWVudHNSZWdpc3RlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTc4MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zODIsNyArMzgyLDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dEJ5dGVjbwogUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAo
bV9iYXNlLT5pc1Jlc29sdmVOb2RlKCkgCi0gICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2
ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obV9iYXNlKS0+aWRlbnRpZmll
cigpKQorICAgICAgICAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVy
KHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obV9iYXNlKS0+aWRlbnRpZmllcigpKQogICAgICAg
ICAmJiAhZ2VuZXJhdG9yLnN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKSB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0KTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vz
c29yTm9kZTo6ZW1pdEJ5dGVjb2QKICAgICAgICAgaWYgKCFtX2Jhc2UtPmlzUmVzb2x2ZU5vZGUo
KSkKICAgICAgICAgICAgIGdvdG8gbm9uQXJndW1lbnRzUGF0aDsKICAgICAgICAgUmVzb2x2ZU5v
ZGUqIHJlc29sdmVOb2RlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpOwotICAg
ICAgICBpZiAoIWdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHJlc29sdmVOb2RlLT5p
ZGVudGlmaWVyKCkpKQorICAgICAgICBpZiAoIWdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1l
bnRzUmVnaXN0ZXIocmVzb2x2ZU5vZGUtPmlkZW50aWZpZXIoKSkpCiAgICAgICAgICAgICBnb3Rv
IG5vbkFyZ3VtZW50c1BhdGg7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0R2V0QXJndW1lbnRzTGVuZ3RoKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksIGdlbmVyYXRvci51bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCkpOwpAQCAtNTk5
LDcgKzU5OSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXQKIHN0
YXRpYyBSZWdpc3RlcklEKiBnZXRBcmd1bWVudEJ5VmFsKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogZHN0LCBKU1RleHRQb3NpdGlvbiBkaXZvdCwgSlNUZXh0UG9zaXRpb24gZGl2b3RTdGFy
dCwgSlNUZXh0UG9zaXRpb24gZGl2b3RFbmQpCiB7CiAgICAgaWYgKGJhc2UtPmlzUmVzb2x2ZU5v
ZGUoKQotICAgICAgICAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNf
Y2FzdDxSZXNvbHZlTm9kZSo+KGJhc2UpLT5pZGVudGlmaWVyKCkpCisgICAgICAgICYmIGdlbmVy
YXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5v
ZGUqPihiYXNlKS0+aWRlbnRpZmllcigpKQogICAgICAgICAmJiAhZ2VuZXJhdG9yLnN5bWJvbFRh
YmxlKCkuc2xvd0FyZ3VtZW50cygpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0R2V0QXJndW1lbnRCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBnZW5lcmF0b3IudW5jaGVja2VkTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpLCBwcm9wZXJ0eSk7
CkBAIC03NTcsNyArNzU3LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
OjplbQogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKTsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsKICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9
IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICBpZiAoYXJncy0+bV9leHByLT5p
c1Jlc29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpICYmICFnZW5l
cmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpCisgICAgICAgIGlmIChhcmdzLT5t
X2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50
c1JlZ2lzdGVyKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRp
ZmllcigpKSAmJiAhZ2VuZXJhdG9yLnN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKQogICAg
ICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZExvY2FsQXJndW1lbnRz
UmVnaXN0ZXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CkBAIC0yNzc2LDcgKzI3NzYsNyBAQCB2b2lk
IEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kCiBSZWdpc3RlcklEKiBBcnJheVBh
dHRlcm5Ob2RlOjplbWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKiByaHMpCiB7CiAgICAgaWYgKHJocy0+
aXNSZXNvbHZlTm9kZSgpCi0gICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1l
bnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4ocmhzKS0+aWRlbnRpZmllcigpKQorICAgICAg
ICAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4ocmhzKS0+aWRlbnRpZmllcigpKQogICAgICAgICAmJiBnZW5lcmF0b3Iu
aGFzU2FmZUxvY2FsQXJndW1lbnRzUmVnaXN0ZXIoKSYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUo
KS5zbG93QXJndW1lbnRzKCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Rh
cmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBhdXRvIHRhcmdldCA9IG1f
dGFyZ2V0UGF0dGVybnNbaV07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzgzMDcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNS0wMS0x
MiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNT
SU9OIChyMTc0MjI2KTogSGVhZGVyIG9uIGh1ZmZpbmd0b25wb3N0LmNvbSBpcyB0b28gbGFyZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDMwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQg
anMvYXJndW1lbnRzLWl0ZXJhdG9yIHRlc3QgdG8gb25seSBjaGVjayB0aGF0IGFyZ3VtZW50cyBj
aGFuZ2VkIHRvIGEKKyAgICAgICAgZGlmZmVyZW50IHZhbHVlLiAgVGhlIHJlbW92ZWQgdGVzdHMg
dGhhdCBjaGFuZ2VkIGFyZ3VtZW50cyB0byBhIHN0cmluZworICAgICAgICBhbmQgYW4gb2JqZWN0
IHdlcmUgYm9ndXMgYW5kIGRpZG4ndCB0ZXN0IHdoYXQgdGhlIGFwcGVhcmVkIHRvIHRlc3QuCisg
ICAgICAgIFRoZSBzZW1hbnRpY3MgZm9yIGRvaW5nIGEgZm9yIC4uIG9mIG9uIHN0cmluZ3MgYW5k
IGVtcHR5IG9iamVjdHMgaXMgbm90CisgICAgICAgIGRlZmluZWQuICBmb3IgLi4gb2Ygd29ya3Mg
b24gaXRlcmFibGUgb2JqZWN0cyBvbmx5LgorCisgICAgICAgIEFkZGVkIG5ldyByZWdyZXNzaW9u
IHRlc3QsIGpzL3JlZ3Jlc3MtMTQwMzA2LgorCisgICAgICAgICoganMvYXJndW1lbnRzLWl0ZXJh
dG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9yZWdyZXNzLTE0MDMwNi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MtMTQwMzA2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcmd1bWVudHMtaXRlcmF0b3IuanM6CisgICAgICAgICh0
ZXN0TnVsbEFyZ3VtZW50cyk6CisgICAgICAgICh0ZXN0T3ZlcndyaXR0ZW5Bcmd1bWVudHMpOiBE
ZWxldGVkLgorICAgICAgICAodGVzdE5vbkFycmF5TGlrZUFyZ3VtZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICoganMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQwMzA2LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGNoZWNrQXJncyk6CisgICAgICAgIChhcHBseVRvQXJncyk6CisKIDIwMTUtMDEtMTIgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEdlb2xvY2F0aW9uIG9i
amVjdHMgc2hvdWxkbid0IHByZXZlbnQgcGFnZSBjYWNoaW5nLgpJbmRleDogTGF5b3V0VGVzdHMv
anMvYXJndW1lbnRzLWl0ZXJhdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9hcmd1bWVudHMtaXRlcmF0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNzgzMDcp
CisrKyBMYXlvdXRUZXN0cy9qcy9hcmd1bWVudHMtaXRlcmF0b3ItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiwzNiArMzYsNyBAQCBQQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVl
CiBQQVNTIGFjdHVhbEFyZ3VtZW50c0xlbmd0aCBpcyBpdGVyYXRlZEFyZ3VtZW50c0xlbmd0aAog
UEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQogUEFTUyBhY3R1YWxBcmd1bWVudHNMZW5ndGgg
aXMgaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUK
LVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRy
dWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlz
IHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYWN0dWFsQXJndW1lbnRz
TGVuZ3RoIGlzIGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBp
cyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFy
ZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVh
bEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFjdHVhbEFy
Z3VtZW50c0xlbmd0aCBpcyBpdGVyYXRlZEFyZ3VtZW50c0xlbmd0aAotUEFTUyBhcmcgPT09IHJl
YWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09
IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcg
PT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBh
Y3R1YWxBcmd1bWVudHNMZW5ndGggaXMgaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgKLVBBU1MgYXJn
ID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1Mg
YXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBB
U1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUK
LVBBU1MgYWN0dWFsQXJndW1lbnRzTGVuZ3RoIGlzIGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoCi1Q
QVNTIHRlc3ROdWxsQXJndW1lbnRzKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdmYWlsKCJub3RoaW5nIHRvIGl0ZXJhdGUiKScp
LgotUEFTUyB0ZXN0Tm9uQXJyYXlMaWtlQXJndW1lbnRzKCkgaXMgdHJ1ZQorUEFTUyB0ZXN0TnVs
bEFyZ3VtZW50cygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnYXJnIG9mIGFyZ3VtZW50cycpLgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzLTE0MDMwNi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy0xNDAzMDYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy0xNDAzMDYtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBA
QAorUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL3dlYmtpdC5vcmcvYi8xNDAzMDYuIFRoaXMg
dGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDAzMDYuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0MDMwNi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDAzMDYuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvcmVncmVzcy0xNDAzMDYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FyZ3VtZW50cy1pdGVyYXRvci5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJndW1lbnRzLWl0ZXJhdG9yLmpz
CShyZXZpc2lvbiAxNzgzMDcpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJndW1l
bnRzLWl0ZXJhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03NiwyOCArNzYsNyBAQCB0ZXN0UmVp
ZmllZEFyZ3VtZW50cygiYSIsICJiIik7CiB0ZXN0UmVpZmllZEFyZ3VtZW50cyh7fSkKIAogCi1m
dW5jdGlvbiB0ZXN0T3ZlcndyaXR0ZW5Bcmd1bWVudHMoKSB7Ci0gICAgdmFyIGkgPSAwOwotICAg
IGFyZ3VtZW50cyA9ICJmb29iYXIiOwotICAgIGZvciAoYXJnIG9mIGFyZ3VtZW50cykgewotICAg
ICAgICByZWFsQXJnID0gYXJndW1lbnRzW2krK107Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiYXJn
ID09PSByZWFsQXJnIik7Ci0gICAgfQotICAgIGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoID0gaTsK
LSAgICBhY3R1YWxBcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOwotICAgIHNob3Vs
ZEJlKCJhY3R1YWxBcmd1bWVudHNMZW5ndGgiLCAiaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgiKTsK
LX0KLQotCi10ZXN0T3ZlcndyaXR0ZW5Bcmd1bWVudHMoKTsKLXRlc3RPdmVyd3JpdHRlbkFyZ3Vt
ZW50cygiYSIpOwotdGVzdE92ZXJ3cml0dGVuQXJndW1lbnRzKCJhIiwgImIiKTsKLXRlc3RPdmVy
d3JpdHRlbkFyZ3VtZW50cyh7fSkKLQotCi0KIGZ1bmN0aW9uIHRlc3ROdWxsQXJndW1lbnRzKCkg
ewotICAgIHZhciBpID0gMDsKICAgICBhcmd1bWVudHMgPSBudWxsOwogICAgIGZvciAoYXJnIG9m
IGFyZ3VtZW50cykgewogICAgICAgICBmYWlsKCJub3RoaW5nIHRvIGl0ZXJhdGUiKTsKQEAgLTEw
NSwxNCArODQsMyBAQCBmdW5jdGlvbiB0ZXN0TnVsbEFyZ3VtZW50cygpIHsKIH0KIAogc2hvdWxk
VGhyb3coInRlc3ROdWxsQXJndW1lbnRzKCkiKTsKLWZ1bmN0aW9uIHRlc3ROb25BcnJheUxpa2VB
cmd1bWVudHMoKSB7Ci0gICAgdmFyIGkgPSAwOwotICAgIGFyZ3VtZW50cyA9IHt9OwotICAgIGZv
ciAoYXJnIG9mIGFyZ3VtZW50cykgewotICAgICAgICBmYWlsKCJub3RoaW5nIHRvIGl0ZXJhdGUi
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLXNo
b3VsZEJlVHJ1ZSgidGVzdE5vbkFycmF5TGlrZUFyZ3VtZW50cygpIik7Ci0KSW5kZXg6IExheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdyZXNzLTE0MDMwNi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDAzMDYuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDAzMDYuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorZGVzY3JpcHRpb24oCisiUmVncmVzc2lvbiB0ZXN0
IGZvciBodHRwczovL3dlYmtpdC5vcmcvYi8xNDAzMDYuIFRoaXMgdGVzdCBzaG91bGQgcnVuIHdp
dGhvdXQgYW55IGV4Y2VwdGlvbnMuIgorKTsKKwordGVzdEFyZ3MgPSBbIDEsICJTZWNvbmQiLCBu
ZXcgTnVtYmVyKDMpIF07CisKK2Z1bmN0aW9uIGNoZWNrQXJncyhhMCwgYTEsIGEyKSB7CisgICAg
aWYgKGEwICE9PSB0ZXN0QXJnc1swXSkKKyAgICAgICAgdGhyb3cgIlZhbHVlIG9mIGRlY2xhcmVk
IGFyZyBhMCBpcyB3cm9uZy4gIFNob3VsZCBiZTogIiArIHRlc3RBcmdzWzBdICsgIiwgd2FzOiAi
ICsgYTA7CisKKyAgICBpZiAoYTEgIT09IHRlc3RBcmdzWzFdKQorICAgICAgICB0aHJvdyAiVmFs
dWUgb2YgZGVjbGFyZWQgYXJnIGExIGlzIHdyb25nLiAgU2hvdWxkIGJlOiAiICsgdGVzdEFyZ3Nb
MV0gKyAiLCB3YXM6ICIgKyBhMTsKKworICAgIGlmIChhMiAhPT0gdGVzdEFyZ3NbMl0pCisgICAg
ICAgIHRocm93ICJWYWx1ZSBvZiBkZWNsYXJlZCBhcmcgYTIgaXMgd3JvbmcuICBTaG91bGQgYmU6
ICIgKyB0ZXN0QXJnc1syXSArICIsIHdhczogIiArIGEyOworCisgICAgaWYgKGFyZ3VtZW50cy5s
ZW5ndGggIT0gMykKKyAgICAgICAgdGhyb3cgIkxlbmd0aCBvZiBhcmd1bWVudHMgaXMgd3Jvbmcu
ICBTaG91bGQgYmU6IDMsIHdhczogIiArIGFyZ3VtZW50cy5sZW5ndGg7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJndW1l
bnRzW2ldICE9PSB0ZXN0QXJnc1tpXSkKKyAgICAgICAgICAgIHRocm93ICJWYWx1ZSBvZiBhcmd1
bWVudHNbIiArIGkgKyAiXSBpcyB3cm9uZy4gIFNob3VsZCBiZTogIiArIHRlc3RBcmdzW2ldICsg
Iiwgd2FzOiAiICsgYXJndW1lbnRzW2ldOworICAgIH0KK30KKworZnVuY3Rpb24gYXBwbHlUb0Fy
Z3MoKSB7CisgICAgYXJndW1lbnRzID0gdGVzdEFyZ3M7CisKKyAgICBjaGVja0FyZ3MuYXBwbHko
dGhpcywgYXJndW1lbnRzKQorCisgICAgdHJ5IHsgfSBjYXRjaCAoZSkgeyB0aHJvdyBlOyB9ICAv
LyBUbyBmb3JjZSB0aGUgY3JlYXRpb24gb2YgYW4gYWN0aXZhdGlvbiBvYmplY3QKK30KKworYXBw
bHlUb0FyZ3MoNDIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244580</attachid>
            <date>2015-01-13 21:34:49 -0800</date>
            <delta_ts>2015-01-15 17:11:44 -0800</delta_ts>
            <desc>Updated arguments-iterator test to overwrite arguments with arrays</desc>
            <filename>140306-3.patch</filename>
            <type>text/plain</type>
            <size>16902</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4NDA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE1LTAxLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxNzQyMjYpOiBIZWFkZXIgb24gaHVmZmluZ3RvbnBvc3QuY29tIGlz
IHRvbyBsYXJnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoKSBpcyB1c2VkIHRv
IGNoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBhcmd1bWVudHMgcmVnaXN0
ZXIgb3Igd2hldGhlciB3ZSBuZWVkIHRvIHJlc29sdmUgImFyZ3VtZW50cyIuICBJZiB0aGUgYXJn
dW1lbnRzIGhhdmUKKyAgICAgICAgYmVlbiBjYXB0dXJlZCwgdGhlbiB0aGV5IGFyZSBzdG9yZWQg
aW4gdGhlIGxleGljYWwgZW52aXJvbm1lbnQgYW5kIHRoZSBhcmd1bWVudHMKKyAgICAgICAgcmVn
aXN0ZXIgaXMgbm90IHVzZWQuCisgICAgICAgIENoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3I6Ondp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoKSB0byBhbHNvIGNoZWNrIHRvIHNlZSBpZiB0aGUgYXJndW1l
bnRzCisgICAgICAgIHJlZ2lzdGVyIGlzIGNhcHR1cmVkLiAgUmVuYW1lZCB0aGUgZnVuY3Rpb24g
dG8gd2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKCkgdG8KKyAgICAgICAgYmV0dGVyIGlu
ZGljYXRlIHdoYXQgd2UgYXJlIGNoZWNraW5nLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Ondp
bGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjp1bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxS
ZXNvbHZlVG9Bcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
OgorICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OmdldEFyZ3VtZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmVtaXRE
aXJlY3RCaW5kaW5nKToKKwogMjAxNS0wMS0xMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgUmVzaXpl
SW1hZ2UgYW5kIERlY29kZUltYWdlRGF0YSB0aW1lbGluZSBldmVudHMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCShyZXZpc2lvbiAxNzgzNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYzLDcgKzU2
Myw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFBhcmFtZXRlcihjb24KICAgICBtX2Nv
ZGVCbG9jay0+YWRkUGFyYW1ldGVyKCk7CiB9CiAKLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Ondp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCitib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjp3aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCiB7CiAgICAgaWYgKGlkZW50ICE9IHByb3BlcnR5TmFtZXMoKS5hcmd1bWVu
dHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3NSw2ICs1NzUsOSBAQCBib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjp3aWxsUmVzb2x2ZVRvQXJnCiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAobV9sb2NhbEFyZ3VtZW50c1JlZ2lzdGVy
ICYmIGlzQ2FwdHVyZWQobV9sb2NhbEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkg
JiYgbV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9sb2NhbEFyZ3VtZW50c1JlZ2lzdGVy
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTU4Myw3ICs1ODYsNyBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjp3aWxsUmVzb2x2ZVRvQXJnCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjp1bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCkKIHsKLSAgICBBU1NF
UlQod2lsbFJlc29sdmVUb0FyZ3VtZW50cyhwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSk7Cisg
ICAgQVNTRVJUKHdpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcihwcm9wZXJ0eU5hbWVzKCku
YXJndW1lbnRzKSk7CiAgICAgQVNTRVJUKG1fbG9jYWxBcmd1bWVudHNSZWdpc3Rlcik7CiAgICAg
cmV0dXJuIG1fbG9jYWxBcmd1bWVudHNSZWdpc3RlcjsKIH0KQEAgLTE4NzQsNyArMTg3Nyw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFuLT5tX25leHQpOwogICAgICAgICAgICAgYXV0byBleHByZXNzaW9uID0g
c3RhdGljX2Nhc3Q8U3ByZWFkRXhwcmVzc2lvbk5vZGUqPihuLT5tX2V4cHIpLT5leHByZXNzaW9u
KCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJndW1lbnRSZWdpc3RlcjsKLSAg
ICAgICAgICAgIGlmIChleHByZXNzaW9uLT5pc1Jlc29sdmVOb2RlKCkgJiYgd2lsbFJlc29sdmVU
b0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHJlc3Npb24pLT5pZGVudGlm
aWVyKCkpICYmICFzeW1ib2xUYWJsZSgpLnNsb3dBcmd1bWVudHMoKSkKKyAgICAgICAgICAgIGlm
IChleHByZXNzaW9uLT5pc1Jlc29sdmVOb2RlKCkgJiYgd2lsbFJlc29sdmVUb0FyZ3VtZW50c1Jl
Z2lzdGVyKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcmVzc2lvbiktPmlkZW50aWZpZXIo
KSkgJiYgIXN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKQogICAgICAgICAgICAgICAgIGFy
Z3VtZW50UmVnaXN0ZXIgPSB1bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXJndW1lbnRSZWdpc3RlciA9IGV4cHJlc3Np
b24tPmVtaXRCeXRlY29kZSgqdGhpcywgY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDAp
KTsKQEAgLTIwMTYsNyArMjAxOSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q29uc3QKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFuLT5tX25leHQpOwogICAgICAg
ICAgICAgYXV0byBleHByZXNzaW9uID0gc3RhdGljX2Nhc3Q8U3ByZWFkRXhwcmVzc2lvbk5vZGUq
PihuLT5tX2V4cHIpLT5leHByZXNzaW9uKCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gYXJndW1lbnRSZWdpc3RlcjsKLSAgICAgICAgICAgIGlmIChleHByZXNzaW9uLT5pc1Jlc29s
dmVOb2RlKCkgJiYgd2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9k
ZSo+KGV4cHJlc3Npb24pLT5pZGVudGlmaWVyKCkpICYmICFzeW1ib2xUYWJsZSgpLnNsb3dBcmd1
bWVudHMoKSkKKyAgICAgICAgICAgIGlmIChleHByZXNzaW9uLT5pc1Jlc29sdmVOb2RlKCkgJiYg
d2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
ZXhwcmVzc2lvbiktPmlkZW50aWZpZXIoKSkgJiYgIXN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50
cygpKQogICAgICAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXIgPSB1bmNoZWNrZWRMb2NhbEFy
Z3VtZW50c1JlZ2lzdGVyKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXJn
dW1lbnRSZWdpc3RlciA9IGV4cHJlc3Npb24tPmVtaXRCeXRlY29kZSgqdGhpcywgY2FsbEFyZ3Vt
ZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApKTsKQEAgLTI1OTQsNyArMjU5Nyw3IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2UKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaykKIHsKICAgICBpZiAoc3ViamVjdE5vZGUt
PmlzUmVzb2x2ZU5vZGUoKQotICAgICAgICAmJiB3aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRp
Y19jYXN0PFJlc29sdmVOb2RlKj4oc3ViamVjdE5vZGUpLT5pZGVudGlmaWVyKCkpCisgICAgICAg
ICYmIHdpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3RlcihzdGF0aWNfY2FzdDxSZXNvbHZlTm9k
ZSo+KHN1YmplY3ROb2RlKS0+aWRlbnRpZmllcigpKQogICAgICAgICAmJiAhc3ltYm9sVGFibGUo
KS5zbG93QXJndW1lbnRzKCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0g
ZW1pdExvYWQobmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVyKDApKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMTc4MzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyArMjc3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rp
b24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pOwogCi0gICAgICAgIGJvb2wgd2lsbFJl
c29sdmVUb0FyZ3VtZW50cyhjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGJvb2wgd2lsbFJl
c29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBi
b29sIGhhc1NhZmVMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCkgeyByZXR1cm4gbV9sb2NhbEFyZ3Vt
ZW50c1JlZ2lzdGVyOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIHVuY2hlY2tlZExvY2FsQXJndW1l
bnRzUmVnaXN0ZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE3ODM2MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgyLDcgKzM4Miw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRC
eXRlY28KIFJlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKG1f
YmFzZS0+aXNSZXNvbHZlTm9kZSgpIAotICAgICAgICAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVU
b0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fYmFzZSktPmlkZW50aWZpZXIo
KSkKKyAgICAgICAgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcihz
dGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KG1fYmFzZSktPmlkZW50aWZpZXIoKSkKICAgICAgICAg
JiYgIWdlbmVyYXRvci5zeW1ib2xUYWJsZSgpLnNsb3dBcmd1bWVudHMoKSkgewogICAgICAgICBS
ZWdpc3RlcklEKiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nv
ck5vZGU6OmVtaXRCeXRlY29kCiAgICAgICAgIGlmICghbV9iYXNlLT5pc1Jlc29sdmVOb2RlKCkp
CiAgICAgICAgICAgICBnb3RvIG5vbkFyZ3VtZW50c1BhdGg7CiAgICAgICAgIFJlc29sdmVOb2Rl
KiByZXNvbHZlTm9kZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obV9iYXNlKTsKLSAgICAg
ICAgaWYgKCFnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhyZXNvbHZlTm9kZS0+aWRl
bnRpZmllcigpKSkKKyAgICAgICAgaWYgKCFnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50
c1JlZ2lzdGVyKHJlc29sdmVOb2RlLT5pZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgZ290byBu
b25Bcmd1bWVudHNQYXRoOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEdldEFyZ3VtZW50c0xlbmd0aChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBnZW5lcmF0b3IudW5jaGVja2VkTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpKTsKQEAgLTU5OSw3
ICs1OTksNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0CiBzdGF0
aWMgUmVnaXN0ZXJJRCogZ2V0QXJndW1lbnRCeVZhbChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIGRzdCwgSlNUZXh0UG9zaXRpb24gZGl2b3QsIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQs
IEpTVGV4dFBvc2l0aW9uIGRpdm90RW5kKQogewogICAgIGlmIChiYXNlLT5pc1Jlc29sdmVOb2Rl
KCkKLSAgICAgICAgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nh
c3Q8UmVzb2x2ZU5vZGUqPihiYXNlKS0+aWRlbnRpZmllcigpKQorICAgICAgICAmJiBnZW5lcmF0
b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKHN0YXRpY19jYXN0PFJlc29sdmVOb2Rl
Kj4oYmFzZSktPmlkZW50aWZpZXIoKSkKICAgICAgICAgJiYgIWdlbmVyYXRvci5zeW1ib2xUYWJs
ZSgpLnNsb3dBcmd1bWVudHMoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEdldEFyZ3VtZW50QnlWYWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
Z2VuZXJhdG9yLnVuY2hlY2tlZExvY2FsQXJndW1lbnRzUmVnaXN0ZXIoKSwgcHJvcGVydHkpOwpA
QCAtNzU3LDcgKzc1Nyw3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW0KICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBhcmdzUmVnaXN0ZXI7CiAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNS
ZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19j
YXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSAmJiAhZ2VuZXJh
dG9yLnN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKQorICAgICAgICBpZiAoYXJncy0+bV9l
eHByLT5pc1Jlc29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHNS
ZWdpc3RlcihzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZp
ZXIoKSkgJiYgIWdlbmVyYXRvci5zeW1ib2xUYWJsZSgpLnNsb3dBcmd1bWVudHMoKSkKICAgICAg
ICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1Jl
Z2lzdGVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOwpAQCAtMjc3Niw3ICsyNzc2LDcgQEAgdm9pZCBB
cnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZAogUmVnaXN0ZXJJRCogQXJyYXlQYXR0
ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogcmhzKQogewogICAgIGlmIChyaHMtPmlz
UmVzb2x2ZU5vZGUoKQotICAgICAgICAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50
cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KHJocyktPmlkZW50aWZpZXIoKSkKKyAgICAgICAg
JiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3RlcihzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSo+KHJocyktPmlkZW50aWZpZXIoKSkKICAgICAgICAgJiYgZ2VuZXJhdG9yLmhh
c1NhZmVMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCkmJiAhZ2VuZXJhdG9yLnN5bWJvbFRhYmxlKCku
c2xvd0FyZ3VtZW50cygpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJn
ZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgYXV0byB0YXJnZXQgPSBtX3Rh
cmdldFBhdHRlcm5zW2ldOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4NDA0KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTUtMDEtMTMg
IE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TiAocjE3NDIyNik6IEhlYWRlciBvbiBodWZmaW5ndG9ucG9zdC5jb20gaXMgdG9vIGxhcmdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAzMDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGpz
L2FyZ3VtZW50cy1pdGVyYXRvciB0byB0ZXN0IGNoYW5naW5nIGFyZ3VtZW50IHRvIGFycmF5IHZh
bHVlcy4KKyAgICAgICAgUmVtb3ZlZCB0ZXN0cyB0aGF0IGNoYW5nZWQgYXJndW1lbnRzIHRvIGEg
c3RyaW5nIGFuZCBhbiBvYmplY3QgYXMgdGhleSB3ZXJlCisgICAgICAgIGJvZ3VzIGFuZCBkaWRu
J3QgdGVzdCB3aGF0IHRoZSBhcHBlYXJlZCB0byB0ZXN0LiAKKyAgICAgICAgZm9yIC4uIG9mIHdv
cmtzIG9uIGl0ZXJhYmxlIG9iamVjdHMgb25seS4KKworICAgICAgICBBZGRlZCBuZXcgcmVncmVz
c2lvbiB0ZXN0LCBqcy9yZWdyZXNzLTE0MDMwNi4KKworICAgICAgICAqIGpzL2FyZ3VtZW50cy1p
dGVyYXRvci1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy0xNDAzMDYtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzLTE0MDMwNi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJndW1lbnRzLWl0ZXJhdG9yLmpzOgorICAgICAg
ICAodGVzdEVtcHR5QXJyYXlBcmd1bWVudHMpOgorICAgICAgICAodGVzdEFycmF5QXJndW1lbnRz
KToKKyAgICAgICAgKHRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0TnVsbEFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0Tm9uQXJyYXlMaWtl
QXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0x
NDAzMDYuanM6IEFkZGVkLgorICAgICAgICAoY2hlY2tBcmdzKToKKyAgICAgICAgKGFwcGx5VG9B
cmdzKToKKwogMjAxNS0wMS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIE9ubHkgdGhyb3R0bGUgRE9NIHRpbWVycyBpZiB0aGV5IGNoYW5nZSBDU1MgcHJvcGVy
dGllcyB0aGF0IGNhbm5vdCBjYXVzZSBub24tZGVzY2VuZGFudCBlbGVtZW50cyB0byBiZWNvbWUg
dmlzaWJsZQpJbmRleDogTGF5b3V0VGVzdHMvanMvYXJndW1lbnRzLWl0ZXJhdG9yLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9hcmd1bWVudHMtaXRlcmF0b3ItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNzgzNjMpCisrKyBMYXlvdXRUZXN0cy9qcy9hcmd1bWVudHMt
aXRlcmF0b3ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw4IEBAIFBB
U1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKIFBBU1MgYWN0dWFsQXJndW1lbnRzTGVuZ3RoIGlz
IGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoCiBQQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCiBQ
QVNTIGFjdHVhbEFyZ3VtZW50c0xlbmd0aCBpcyBpdGVyYXRlZEFyZ3VtZW50c0xlbmd0aAotUEFT
UyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQot
UEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQorUEFTUyB0ZXN0RW1wdHlBcnJheUFyZ3VtZW50
cygnYScpIGlzIHRydWUKK1BBU1MgdGVzdEVtcHR5QXJyYXlBcmd1bWVudHMoKSBpcyB0cnVlCiBQ
QVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCiBQQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVl
CiBQQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCkBAIC00NiwyNiArNDUsMTUgQEAgUEFTUyBh
Y3R1YWxBcmd1bWVudHNMZW5ndGggaXMgaXRlcmF0ZWRBcgogUEFTUyBhcmcgPT09IHJlYWxBcmcg
aXMgdHJ1ZQogUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQogUEFTUyBhcmcgPT09IHJlYWxB
cmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJl
YWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQogUEFTUyBhY3R1YWxB
cmd1bWVudHNMZW5ndGggaXMgaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgKIFBBU1MgYXJnID09PSBy
ZWFsQXJnIGlzIHRydWUKIFBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKIFBBU1MgYXJnID09
PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJn
ID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKIFBBU1Mg
YWN0dWFsQXJndW1lbnRzTGVuZ3RoIGlzIGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoCiBQQVNTIGFy
ZyA9PT0gcmVhbEFyZyBpcyB0cnVlCiBQQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCiBQQVNT
IGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1Q
QVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVl
CiBQQVNTIGFjdHVhbEFyZ3VtZW50c0xlbmd0aCBpcyBpdGVyYXRlZEFyZ3VtZW50c0xlbmd0aAot
UEFTUyB0ZXN0TnVsbEFyZ3VtZW50cygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IG51bGwg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZmFpbCgibm90aGluZyB0byBpdGVyYXRlIikn
KS4KLVBBU1MgdGVzdE5vbkFycmF5TGlrZUFyZ3VtZW50cygpIGlzIHRydWUKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy0xNDAzMDYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MtMTQwMzA2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MtMTQwMzA2LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkgQEAKK1JlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTQwMzA2
LiBUaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0IGFueSBleGNlcHRpb25zLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQwMzA2Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDAzMDYuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQwMzA2Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQwMzA2LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcmd1bWVudHMtaXRlcmF0b3IuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FyZ3VtZW50cy1pdGVy
YXRvci5qcwkocmV2aXNpb24gMTc4MzYzKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2FyZ3VtZW50cy1pdGVyYXRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzYsNDMgKzc2LDMzIEBA
IHRlc3RSZWlmaWVkQXJndW1lbnRzKCJhIiwgImIiKTsKIHRlc3RSZWlmaWVkQXJndW1lbnRzKHt9
KQogCiAKLWZ1bmN0aW9uIHRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cygpIHsKLSAgICB2YXIgaSA9
IDA7Ci0gICAgYXJndW1lbnRzID0gImZvb2JhciI7CitmdW5jdGlvbiB0ZXN0RW1wdHlBcnJheUFy
Z3VtZW50cygpIHsKKyAgICBhcmd1bWVudHMgPSBbXTsKICAgICBmb3IgKGFyZyBvZiBhcmd1bWVu
dHMpIHsKLSAgICAgICAgcmVhbEFyZyA9IGFyZ3VtZW50c1tpKytdOwotICAgICAgICBzaG91bGRC
ZVRydWUoImFyZyA9PT0gcmVhbEFyZyIpOworICAgICAgICBmYWlsKCJub3RoaW5nIHRvIGl0ZXJh
dGUiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpdGVyYXRlZEFyZ3VtZW50
c0xlbmd0aCA9IGk7Ci0gICAgYWN0dWFsQXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0
aDsKLSAgICBzaG91bGRCZSgiYWN0dWFsQXJndW1lbnRzTGVuZ3RoIiwgIml0ZXJhdGVkQXJndW1l
bnRzTGVuZ3RoIik7Ci19Ci0KLQotdGVzdE92ZXJ3cml0dGVuQXJndW1lbnRzKCk7Ci10ZXN0T3Zl
cndyaXR0ZW5Bcmd1bWVudHMoImEiKTsKLXRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cygiYSIsICJi
Iik7Ci10ZXN0T3ZlcndyaXR0ZW5Bcmd1bWVudHMoe30pCiAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
IAorc2hvdWxkQmVUcnVlKCJ0ZXN0RW1wdHlBcnJheUFyZ3VtZW50cygnYScpIik7CitzaG91bGRC
ZVRydWUoInRlc3RFbXB0eUFycmF5QXJndW1lbnRzKCkiKTsKIAotZnVuY3Rpb24gdGVzdE51bGxB
cmd1bWVudHMoKSB7Ci0gICAgdmFyIGkgPSAwOwotICAgIGFyZ3VtZW50cyA9IG51bGw7Ci0gICAg
Zm9yIChhcmcgb2YgYXJndW1lbnRzKSB7Ci0gICAgICAgIGZhaWwoIm5vdGhpbmcgdG8gaXRlcmF0
ZSIpOwotICAgIH0KLX0KIAotc2hvdWxkVGhyb3coInRlc3ROdWxsQXJndW1lbnRzKCkiKTsKLWZ1
bmN0aW9uIHRlc3ROb25BcnJheUxpa2VBcmd1bWVudHMoKSB7CitmdW5jdGlvbiB0ZXN0QXJyYXlB
cmd1bWVudHMoKSB7CiAgICAgdmFyIGkgPSAwOwotICAgIGFyZ3VtZW50cyA9IHt9OworICAgIGFy
Z3VtZW50cyA9IFsxLCAyLCAzXTsKICAgICBmb3IgKGFyZyBvZiBhcmd1bWVudHMpIHsKLSAgICAg
ICAgZmFpbCgibm90aGluZyB0byBpdGVyYXRlIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmVhbEFyZyA9IGFyZ3VtZW50c1tpKytdOworICAgICAgICBzaG91bGRCZVRydWUoImFy
ZyA9PT0gcmVhbEFyZyIpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpdGVyYXRlZEFy
Z3VtZW50c0xlbmd0aCA9IGk7CisgICAgYWN0dWFsQXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRz
Lmxlbmd0aDsKKyAgICBzaG91bGRCZSgiYWN0dWFsQXJndW1lbnRzTGVuZ3RoIiwgIml0ZXJhdGVk
QXJndW1lbnRzTGVuZ3RoIik7CiB9Ci1zaG91bGRCZVRydWUoInRlc3ROb25BcnJheUxpa2VBcmd1
bWVudHMoKSIpOwogCit0ZXN0QXJyYXlBcmd1bWVudHMoKTsKK3Rlc3RBcnJheUFyZ3VtZW50cygi
YSIpOwordGVzdEFycmF5QXJndW1lbnRzKCJhIiwgImIiKTsKK3Rlc3RBcnJheUFyZ3VtZW50cyh7
fSk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDAzMDYuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQwMzA2
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3Mt
MTQwMzA2LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK2Rlc2NyaXB0aW9uKAor
IlJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTQwMzA2LiBUaGlzIHRl
c3Qgc2hvdWxkIHJ1biB3aXRob3V0IGFueSBleGNlcHRpb25zLiIKKyk7CisKK3Rlc3RBcmdzID0g
WyAxLCAiU2Vjb25kIiwgbmV3IE51bWJlcigzKSBdOworCitmdW5jdGlvbiBjaGVja0FyZ3MoYTAs
IGExLCBhMikgeworICAgIGlmIChhMCAhPT0gdGVzdEFyZ3NbMF0pCisgICAgICAgIHRocm93ICJW
YWx1ZSBvZiBkZWNsYXJlZCBhcmcgYTAgaXMgd3JvbmcuICBTaG91bGQgYmU6ICIgKyB0ZXN0QXJn
c1swXSArICIsIHdhczogIiArIGEwOworCisgICAgaWYgKGExICE9PSB0ZXN0QXJnc1sxXSkKKyAg
ICAgICAgdGhyb3cgIlZhbHVlIG9mIGRlY2xhcmVkIGFyZyBhMSBpcyB3cm9uZy4gIFNob3VsZCBi
ZTogIiArIHRlc3RBcmdzWzFdICsgIiwgd2FzOiAiICsgYTE7CisKKyAgICBpZiAoYTIgIT09IHRl
c3RBcmdzWzJdKQorICAgICAgICB0aHJvdyAiVmFsdWUgb2YgZGVjbGFyZWQgYXJnIGEyIGlzIHdy
b25nLiAgU2hvdWxkIGJlOiAiICsgdGVzdEFyZ3NbMl0gKyAiLCB3YXM6ICIgKyBhMjsKKworICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDMpCisgICAgICAgIHRocm93ICJMZW5ndGggb2YgYXJn
dW1lbnRzIGlzIHdyb25nLiAgU2hvdWxkIGJlOiAzLCB3YXM6ICIgKyBhcmd1bWVudHMubGVuZ3Ro
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKGFyZ3VtZW50c1tpXSAhPT0gdGVzdEFyZ3NbaV0pCisgICAgICAgICAgICB0aHJv
dyAiVmFsdWUgb2YgYXJndW1lbnRzWyIgKyBpICsgIl0gaXMgd3JvbmcuICBTaG91bGQgYmU6ICIg
KyB0ZXN0QXJnc1tpXSArICIsIHdhczogIiArIGFyZ3VtZW50c1tpXTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGFwcGx5VG9BcmdzKCkgeworICAgIGFyZ3VtZW50cyA9IHRlc3RBcmdzOworCisgICAg
Y2hlY2tBcmdzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKKworICAgIHRyeSB7IH0gY2F0Y2ggKGUp
IHsgdGhyb3cgZTsgfSAgLy8gVG8gZm9yY2UgdGhlIGNyZWF0aW9uIG9mIGFuIGFjdGl2YXRpb24g
b2JqZWN0Cit9CisKK2FwcGx5VG9BcmdzKDQyKTsK
</data>
<flag name="review"
          id="269526"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244734</attachid>
            <date>2015-01-15 17:11:44 -0800</date>
            <delta_ts>2015-01-16 12:01:46 -0800</delta_ts>
            <desc>Updated patch with 32 bit build fixes</desc>
            <filename>140306-4.patch</filename>
            <type>text/plain</type>
            <size>21650</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4NTQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE1LTAxLTE1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxNzQyMjYpOiBIZWFkZXIgb24gaHVmZmluZ3RvbnBvc3QuY29tIGlz
IHRvbyBsYXJnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoKSBpcyB1c2VkIHRv
IGNoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gdXNlIHRoZQorICAgICAgICBhcmd1bWVudHMgcmVnaXN0
ZXIgb3Igd2hldGhlciB3ZSBuZWVkIHRvIHJlc29sdmUgImFyZ3VtZW50cyIuICBJZiB0aGUgYXJn
dW1lbnRzIGhhdmUKKyAgICAgICAgYmVlbiBjYXB0dXJlZCwgdGhlbiB0aGV5IGFyZSBzdG9yZWQg
aW4gdGhlIGxleGljYWwgZW52aXJvbm1lbnQgYW5kIHRoZSBhcmd1bWVudHMKKyAgICAgICAgcmVn
aXN0ZXIgaXMgbm90IHVzZWQuCisKKyAgICAgICAgQ2hhbmdlZCBCeXRlY29kZUdlbmVyYXRvcjo6
d2lsbFJlc29sdmVUb0FyZ3VtZW50cygpIHRvIGFsc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBhcmd1
bWVudHMKKyAgICAgICAgcmVnaXN0ZXIgaXMgY2FwdHVyZWQuICBSZW5hbWVkIHRoZSBmdW5jdGlv
biB0byB3aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoKSB0bworICAgICAgICBiZXR0ZXIg
aW5kaWNhdGUgd2hhdCB3ZSBhcmUgY2hlY2tpbmcuCisKKyAgICAgICAgQWxpZ25lZCAzMiBhbmQg
NjQgYml0IHBhdGhzIGluIEFyZ3VtZW50c1JlY292ZXJ5R2VuZXJhdG9yOjpnZW5lcmF0ZUZvcigp
IGZvciBjcmVhdGluZworICAgICAgICBhbiBhcmd1bWVudHMgb2JqZWN0IHRoYXQgd2FzIG9wdGlt
aXplZCBvdXQgb2YgYW4gaW5saW5lZCBjYWxsRnJhbWUuICBUaGUgMzIgYml0IHBhdGgKKyAgICAg
ICAgaW5jb3JyZWN0bHkgY2FsY3VsYXRlZCB0aGUgbG9jYXRpb24gb2YgdGhlIHJlaWZpZWQgY2Fs
bGVlIGZyYW1lLiAgVGhpcyBhbGlnbm1lbnQgcmVzdWx0ZWQKKyAgICAgICAgaW4gdGhlIHJlbW92
YWwgb2Ygb3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50c0R1cmluZ09TUkV4aXQoKQorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjp1bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1Jl
Z2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OmdldEFyZ3VtZW50QnlWYWwpOgorICAgICAgICAoSlND
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkFycmF5UGF0dGVybk5vZGU6OmVtaXREaXJlY3RCaW5kaW5nKToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNS
ZWNvdmVyeUdlbmVyYXRvcjo6Z2VuZXJhdGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50c0R1
cmluZ09TUkV4aXQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0M6Om9wZXJhdGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHNEdXJpbmdPU1JFeGl0
KTogRGVsZXRlZC4KKwogMjAxNS0wMS0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yIGFuZCByZWd1bGFyIGNvbnNvbGUgdXNlIGRp
ZmZlcmVudCBzb3VyY2UgY29kZSBsb2NhdGlvbnMgZm9yIG1lc3NhZ2VzCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMTc4NTI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2Myw3ICs1
NjMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRQYXJhbWV0ZXIoY29uCiAgICAgbV9j
b2RlQmxvY2stPmFkZFBhcmFtZXRlcigpOwogfQogCi1ib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjp3
aWxsUmVzb2x2ZVRvQXJndW1lbnRzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorYm9vbCBCeXRl
Y29kZUdlbmVyYXRvcjo6d2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQogewogICAgIGlmIChpZGVudCAhPSBwcm9wZXJ0eU5hbWVzKCkuYXJndW1l
bnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NzUsNiArNTc1LDkgQEAgYm9vbCBCeXRl
Y29kZUdlbmVyYXRvcjo6d2lsbFJlc29sdmVUb0FyZwogICAgIGlmIChlbnRyeS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKG1fbG9jYWxBcmd1bWVudHNSZWdpc3Rl
ciAmJiBpc0NhcHR1cmVkKG1fbG9jYWxBcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygp
ICYmIG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmIG1fbG9jYWxBcmd1bWVudHNSZWdpc3Rl
cikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCkBAIC01ODMsNyArNTg2LDcgQEAgYm9vbCBC
eXRlY29kZUdlbmVyYXRvcjo6d2lsbFJlc29sdmVUb0FyZwogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6dW5jaGVja2VkTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpCiB7Ci0gICAgQVNT
RVJUKHdpbGxSZXNvbHZlVG9Bcmd1bWVudHMocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykpOwor
ICAgIEFTU0VSVCh3aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIocHJvcGVydHlOYW1lcygp
LmFyZ3VtZW50cykpOwogICAgIEFTU0VSVChtX2xvY2FsQXJndW1lbnRzUmVnaXN0ZXIpOwogICAg
IHJldHVybiBtX2xvY2FsQXJndW1lbnRzUmVnaXN0ZXI7CiB9CkBAIC0xODc0LDcgKzE4NzcsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbi0+bV9uZXh0KTsKICAgICAgICAgICAgIGF1dG8gZXhwcmVzc2lvbiA9
IHN0YXRpY19jYXN0PFNwcmVhZEV4cHJlc3Npb25Ob2RlKj4obi0+bV9leHByKS0+ZXhwcmVzc2lv
bigpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3VtZW50UmVnaXN0ZXI7Ci0g
ICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi0+aXNSZXNvbHZlTm9kZSgpICYmIHdpbGxSZXNvbHZl
VG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByZXNzaW9uKS0+aWRlbnRp
ZmllcigpKSAmJiAhc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpCisgICAgICAgICAgICBp
ZiAoZXhwcmVzc2lvbi0+aXNSZXNvbHZlTm9kZSgpICYmIHdpbGxSZXNvbHZlVG9Bcmd1bWVudHNS
ZWdpc3RlcihzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHJlc3Npb24pLT5pZGVudGlmaWVy
KCkpICYmICFzeW1ib2xUYWJsZSgpLnNsb3dBcmd1bWVudHMoKSkKICAgICAgICAgICAgICAgICBh
cmd1bWVudFJlZ2lzdGVyID0gdW5jaGVja2VkTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFyZ3VtZW50UmVnaXN0ZXIgPSBleHByZXNz
aW9uLT5lbWl0Qnl0ZWNvZGUoKnRoaXMsIGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rlcigw
KSk7CkBAIC0yMDE2LDcgKzIwMTksNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENvbnN0CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbi0+bV9uZXh0KTsKICAgICAg
ICAgICAgIGF1dG8gZXhwcmVzc2lvbiA9IHN0YXRpY19jYXN0PFNwcmVhZEV4cHJlc3Npb25Ob2Rl
Kj4obi0+bV9leHByKS0+ZXhwcmVzc2lvbigpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGFyZ3VtZW50UmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi0+aXNSZXNv
bHZlTm9kZSgpICYmIHdpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5v
ZGUqPihleHByZXNzaW9uKS0+aWRlbnRpZmllcigpKSAmJiAhc3ltYm9sVGFibGUoKS5zbG93QXJn
dW1lbnRzKCkpCisgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbi0+aXNSZXNvbHZlTm9kZSgpICYm
IHdpbGxSZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3RlcihzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+
KGV4cHJlc3Npb24pLT5pZGVudGlmaWVyKCkpICYmICFzeW1ib2xUYWJsZSgpLnNsb3dBcmd1bWVu
dHMoKSkKICAgICAgICAgICAgICAgICBhcmd1bWVudFJlZ2lzdGVyID0gdW5jaGVja2VkTG9jYWxB
cmd1bWVudHNSZWdpc3RlcigpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFy
Z3VtZW50UmVnaXN0ZXIgPSBleHByZXNzaW9uLT5lbWl0Qnl0ZWNvZGUoKnRoaXMsIGNhbGxBcmd1
bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSk7CkBAIC0yNTk0LDcgKzI1OTcsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVhZE9ubHlFeGNlCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Np
b25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2spCiB7CiAgICAgaWYgKHN1YmplY3ROb2Rl
LT5pc1Jlc29sdmVOb2RlKCkKLSAgICAgICAgJiYgd2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KHN1YmplY3ROb2RlKS0+aWRlbnRpZmllcigpKQorICAgICAg
ICAmJiB3aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5v
ZGUqPihzdWJqZWN0Tm9kZSktPmlkZW50aWZpZXIoKSkKICAgICAgICAgJiYgIXN5bWJvbFRhYmxl
KCkuc2xvd0FyZ3VtZW50cygpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9
IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgpLCBqc051bWJlcigwKSk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgJKHJldmlzaW9uIDE3ODUyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKTsKIAotICAgICAgICBib29sIHdpbGxS
ZXNvbHZlVG9Bcmd1bWVudHMoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBib29sIHdpbGxS
ZXNvbHZlVG9Bcmd1bWVudHNSZWdpc3Rlcihjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAg
Ym9vbCBoYXNTYWZlTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpIHsgcmV0dXJuIG1fbG9jYWxBcmd1
bWVudHNSZWdpc3RlcjsgfQogICAgICAgICBSZWdpc3RlcklEKiB1bmNoZWNrZWRMb2NhbEFyZ3Vt
ZW50c1JlZ2lzdGVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzg1MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4Miw3ICszODIsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
Qnl0ZWNvCiBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmICht
X2Jhc2UtPmlzUmVzb2x2ZU5vZGUoKSAKLSAgICAgICAgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZl
VG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5pZGVudGlmaWVy
KCkpCisgICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIo
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5pZGVudGlmaWVyKCkpCiAgICAgICAg
ICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpIHsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vic2Ny
aXB0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZ2lzdGVySUQqIERv
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2QKICAgICAgICAgaWYgKCFtX2Jhc2UtPmlzUmVzb2x2
ZU5vZGUoKSkKICAgICAgICAgICAgIGdvdG8gbm9uQXJndW1lbnRzUGF0aDsKICAgICAgICAgUmVz
b2x2ZU5vZGUqIHJlc29sdmVOb2RlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2Up
OwotICAgICAgICBpZiAoIWdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHJlc29sdmVO
b2RlLT5pZGVudGlmaWVyKCkpKQorICAgICAgICBpZiAoIWdlbmVyYXRvci53aWxsUmVzb2x2ZVRv
QXJndW1lbnRzUmVnaXN0ZXIocmVzb2x2ZU5vZGUtPmlkZW50aWZpZXIoKSkpCiAgICAgICAgICAg
ICBnb3RvIG5vbkFyZ3VtZW50c1BhdGg7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0QXJndW1lbnRzTGVuZ3RoKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCksIGdlbmVyYXRvci51bmNoZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCkpOwpA
QCAtNTk5LDcgKzU5OSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRC
eXQKIHN0YXRpYyBSZWdpc3RlcklEKiBnZXRBcmd1bWVudEJ5VmFsKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogZHN0LCBKU1RleHRQb3NpdGlvbiBkaXZvdCwgSlNUZXh0UG9zaXRpb24gZGl2
b3RTdGFydCwgSlNUZXh0UG9zaXRpb24gZGl2b3RFbmQpCiB7CiAgICAgaWYgKGJhc2UtPmlzUmVz
b2x2ZU5vZGUoKQotICAgICAgICAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhz
dGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGJhc2UpLT5pZGVudGlmaWVyKCkpCisgICAgICAgICYm
IGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzUmVnaXN0ZXIoc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihiYXNlKS0+aWRlbnRpZmllcigpKQogICAgICAgICAmJiAhZ2VuZXJhdG9yLnN5
bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0QXJndW1lbnRCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCBnZW5lcmF0b3IudW5jaGVja2VkTG9jYWxBcmd1bWVudHNSZWdpc3RlcigpLCBwcm9w
ZXJ0eSk7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjplbQogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKTsKICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsKICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSog
YXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICBpZiAoYXJncy0+bV9l
eHByLT5pc1Jlc29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMo
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpICYm
ICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJndW1lbnRzKCkpCisgICAgICAgIGlmIChh
cmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0Fy
Z3VtZW50c1JlZ2lzdGVyKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+
aWRlbnRpZmllcigpKSAmJiAhZ2VuZXJhdG9yLnN5bWJvbFRhYmxlKCkuc2xvd0FyZ3VtZW50cygp
KQogICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZExvY2FsQXJn
dW1lbnRzUmVnaXN0ZXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJnc1JlZ2lzdGVy
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CkBAIC0yNzc2LDcgKzI3NzYsNyBA
QCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kCiBSZWdpc3RlcklEKiBB
cnJheVBhdHRlcm5Ob2RlOjplbWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKiByaHMpCiB7CiAgICAgaWYg
KHJocy0+aXNSZXNvbHZlTm9kZSgpCi0gICAgICAgICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRv
QXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4ocmhzKS0+aWRlbnRpZmllcigpKQor
ICAgICAgICAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50c1JlZ2lzdGVyKHN0YXRp
Y19jYXN0PFJlc29sdmVOb2RlKj4ocmhzKS0+aWRlbnRpZmllcigpKQogICAgICAgICAmJiBnZW5l
cmF0b3IuaGFzU2FmZUxvY2FsQXJndW1lbnRzUmVnaXN0ZXIoKSYmICFnZW5lcmF0b3Iuc3ltYm9s
VGFibGUoKS5zbG93QXJndW1lbnRzKCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBhdXRvIHRhcmdl
dCA9IG1fdGFyZ2V0UGF0dGVybnNbaV07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNzg1
MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICszMjcsNiBAQCB2b2lkIEFyZ3VtZW50c1Jl
Y292ZXJ5R2VuZXJhdG9yOjpnZW5lcmF0CiAgICAgaWYgKG1fZGlkQ3JlYXRlQXJndW1lbnRzT2Jq
ZWN0LmFkZChpbmxpbmVDYWxsRnJhbWUpLmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gV2Uga25v
dyB0aGlzIGNhbGwgZnJhbWUgb3B0aW1pemVkIG91dCBhbiBhcmd1bWVudHMgb2JqZWN0IHRoYXQK
ICAgICAgICAgLy8gdGhlIGJhc2VsaW5lIEpJVCB3b3VsZCBoYXZlIGNyZWF0ZWQuIERvIHRoYXQg
Y3JlYXRpb24gbm93LgotI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUpIHsKICAgICAgICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwogICAgICAg
ICAgICAgaml0LnNldHVwQXJndW1lbnRzKEdQUkluZm86OnJlZ1QwKTsKQEAgLTMzNyw2ICszMzYs
NyBAQCB2b2lkIEFyZ3VtZW50c1JlY292ZXJ5R2VuZXJhdG9yOjpnZW5lcmF0CiAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoCiAgICAgICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNEdXJpbmdPU1JFeGl0KSksCiAg
ICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgaml0LnN0b3JlNjQo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1
bWVudHNSZWdpc3RlcikpOwogICAgICAgICBqaXQuc3RvcmU2NCgKQEAgLTM0NCwyMCArMzQ0LDYg
QEAgdm9pZCBBcmd1bWVudHNSZWNvdmVyeUdlbmVyYXRvcjo6Z2VuZXJhdAogICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihh
cmd1bWVudHNSZWdpc3RlcikpKTsKICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gbm8tb3AgbW92ZSBvbiBhbG1vc3QgYWxsIHBsYXRm
b3Jtcy4KICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC0+IHNvIHRoZSAzMl82NCBwYXJ0Ci0gICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHNE
dXJpbmdPU1JFeGl0KSksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUo
KTsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PHZvaWQq
PihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNEdXJpbmdPU1JFeGl0KSksCi0gICAgICAgICAgICAg
ICAgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIH0KICAgICAgICAgaml0LmNhbGwoR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE3ODUy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc3NCwxMiArNzc0LDYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZUlubAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25DcmVhdGVJbmxpbmVkQXJndW1lbnRzRHVyaW5nT1NSRXhpdChFeGVjU3Rh
dGUqIGV4ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQotewotICAgIERlZmVy
R0NGb3JBV2hpbGUoZXhlYy0+dm0oKS5oZWFwKTsKLSAgICByZXR1cm4gb3BlcmF0aW9uQ3JlYXRl
SW5saW5lZEFyZ3VtZW50cyhleGVjLCBpbmxpbmVDYWxsRnJhbWUpOwotfQotCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZklubGluZWRBcmd1bWVudHMoCiAgICAgRXhlY1N0YXRl
KiBleGVjLCBKU0NlbGwqIGFyZ3VtZW50c0NlbGwsIEpTQ2VsbCogYWN0aXZhdGlvbkNlbGwsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE3ODUyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3
ICs5Nyw2IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RG
X0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVJbmxpbmVkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSopIFdURl9J
TlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbmxpbmVkQXJn
dW1lbnRzRHVyaW5nT1NSRXhpdChFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUqKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZklubGluZWRBcmd1bWVu
dHMoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKiwgSW5saW5lQ2FsbEZyYW1lKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRJbmxpbmVk
QXJndW1lbnRCeVZhbChFeGVjU3RhdGUqLCBpbnQzMl90LCBJbmxpbmVDYWxsRnJhbWUqLCBpbnQz
Ml90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEFyZ3VtZW50QnlWYWwoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCkgV1RGX0lOVEVS
TkFMOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4NTI5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTUtMDEtMTUgIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjE3NDIyNik6
IEhlYWRlciBvbiBodWZmaW5ndG9ucG9zdC5jb20gaXMgdG9vIGxhcmdlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAzMDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGpzL2FyZ3VtZW50cy1p
dGVyYXRvciB0byB0ZXN0IGNoYW5naW5nIGFyZ3VtZW50IHRvIGFycmF5IHZhbHVlcy4KKyAgICAg
ICAgUmVtb3ZlZCB0ZXN0cyB0aGF0IGNoYW5nZWQgYXJndW1lbnRzIHRvIGEgc3RyaW5nIGFuZCBh
biBvYmplY3QgYXMgdGhleSB3ZXJlCisgICAgICAgIGJvZ3VzIGFuZCBkaWRuJ3QgdGVzdCB3aGF0
IHRoZSBhcHBlYXJlZCB0byB0ZXN0LiAKKyAgICAgICAgZm9yIC4uIG9mIHdvcmtzIG9uIGl0ZXJh
YmxlIG9iamVjdHMgb25seS4KKworICAgICAgICBBZGRlZCBuZXcgcmVncmVzc2lvbiB0ZXN0LCBq
cy9yZWdyZXNzLTE0MDMwNi4KKworICAgICAgICAqIGpzL2FyZ3VtZW50cy1pdGVyYXRvci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy0xNDAzMDYtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzLTE0MDMwNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvYXJndW1lbnRzLWl0ZXJhdG9yLmpzOgorICAgICAgICAodGVzdEVtcHR5
QXJyYXlBcmd1bWVudHMpOgorICAgICAgICAodGVzdEFycmF5QXJndW1lbnRzKToKKyAgICAgICAg
KHRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0TnVsbEFy
Z3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0Tm9uQXJyYXlMaWtlQXJndW1lbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDAzMDYuanM6IEFk
ZGVkLgorICAgICAgICAoY2hlY2tBcmdzKToKKyAgICAgICAgKGFwcGx5VG9BcmdzKToKKwogMjAx
NS0wMS0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yIGFuZCByZWd1bGFyIGNvbnNvbGUgdXNlIGRpZmZlcmVudCBzb3VyY2UgY29k
ZSBsb2NhdGlvbnMgZm9yIG1lc3NhZ2VzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9hcmd1bWVudHMt
aXRlcmF0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2FyZ3Vt
ZW50cy1pdGVyYXRvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE3ODUyOSkKKysrIExheW91dFRl
c3RzL2pzL2FyZ3VtZW50cy1pdGVyYXRvci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDkgKzM2LDggQEAgUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQogUEFTUyBhY3R1YWxB
cmd1bWVudHNMZW5ndGggaXMgaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgKIFBBU1MgYXJnID09PSBy
ZWFsQXJnIGlzIHRydWUKIFBBU1MgYWN0dWFsQXJndW1lbnRzTGVuZ3RoIGlzIGl0ZXJhdGVkQXJn
dW1lbnRzTGVuZ3RoCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0g
cmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCitQQVNTIHRlc3RF
bXB0eUFycmF5QXJndW1lbnRzKCdhJykgaXMgdHJ1ZQorUEFTUyB0ZXN0RW1wdHlBcnJheUFyZ3Vt
ZW50cygpIGlzIHRydWUKIFBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKIFBBU1MgYXJnID09
PSByZWFsQXJnIGlzIHRydWUKIFBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKQEAgLTQ2LDI2
ICs0NSwxNSBAQCBQQVNTIGFjdHVhbEFyZ3VtZW50c0xlbmd0aCBpcyBpdGVyYXRlZEFyCiBQQVNT
IGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCiBQQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCiBQ
QVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVl
Ci1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0cnVlCi1QQVNTIGFyZyA9PT0gcmVhbEFyZyBpcyB0
cnVlCiBQQVNTIGFjdHVhbEFyZ3VtZW50c0xlbmd0aCBpcyBpdGVyYXRlZEFyZ3VtZW50c0xlbmd0
aAogUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQogUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMg
dHJ1ZQogUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcg
aXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxBcmcgaXMgdHJ1ZQotUEFTUyBhcmcgPT09IHJlYWxB
cmcgaXMgdHJ1ZQogUEFTUyBhY3R1YWxBcmd1bWVudHNMZW5ndGggaXMgaXRlcmF0ZWRBcmd1bWVu
dHNMZW5ndGgKIFBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKIFBBU1MgYXJnID09PSByZWFs
QXJnIGlzIHRydWUKIFBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSBy
ZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09PSByZWFsQXJnIGlzIHRydWUKLVBBU1MgYXJnID09
PSByZWFsQXJnIGlzIHRydWUKIFBBU1MgYWN0dWFsQXJndW1lbnRzTGVuZ3RoIGlzIGl0ZXJhdGVk
QXJndW1lbnRzTGVuZ3RoCi1QQVNTIHRlc3ROdWxsQXJndW1lbnRzKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdmYWlsKCJub3Ro
aW5nIHRvIGl0ZXJhdGUiKScpLgotUEFTUyB0ZXN0Tm9uQXJyYXlMaWtlQXJndW1lbnRzKCkgaXMg
dHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0MDMwNi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDAzMDYtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDAzMDYtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL3dl
YmtpdC5vcmcvYi8xNDAzMDYuIFRoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgYW55IGV4Y2Vw
dGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy0xNDAzMDYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
LTE0MDMwNi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDAz
MDYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVncmVzcy0xNDAzMDYuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FyZ3Vt
ZW50cy1pdGVyYXRvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJndW1lbnRzLWl0ZXJhdG9yLmpzCShyZXZpc2lvbiAxNzg1MjkpCisrKyBMYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYXJndW1lbnRzLWl0ZXJhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC03Niw0MyArNzYsMzMgQEAgdGVzdFJlaWZpZWRBcmd1bWVudHMoImEiLCAiYiIpOwogdGVzdFJl
aWZpZWRBcmd1bWVudHMoe30pCiAKIAotZnVuY3Rpb24gdGVzdE92ZXJ3cml0dGVuQXJndW1lbnRz
KCkgewotICAgIHZhciBpID0gMDsKLSAgICBhcmd1bWVudHMgPSAiZm9vYmFyIjsKK2Z1bmN0aW9u
IHRlc3RFbXB0eUFycmF5QXJndW1lbnRzKCkgeworICAgIGFyZ3VtZW50cyA9IFtdOwogICAgIGZv
ciAoYXJnIG9mIGFyZ3VtZW50cykgewotICAgICAgICByZWFsQXJnID0gYXJndW1lbnRzW2krK107
Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiYXJnID09PSByZWFsQXJnIik7CisgICAgICAgIGZhaWwo
Im5vdGhpbmcgdG8gaXRlcmF0ZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoID0gaTsKLSAgICBhY3R1YWxBcmd1bWVudHNMZW5ndGgg
PSBhcmd1bWVudHMubGVuZ3RoOwotICAgIHNob3VsZEJlKCJhY3R1YWxBcmd1bWVudHNMZW5ndGgi
LCAiaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgiKTsKLX0KLQotCi10ZXN0T3ZlcndyaXR0ZW5Bcmd1
bWVudHMoKTsKLXRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cygiYSIpOwotdGVzdE92ZXJ3cml0dGVu
QXJndW1lbnRzKCJhIiwgImIiKTsKLXRlc3RPdmVyd3JpdHRlbkFyZ3VtZW50cyh7fSkKIAorICAg
IHJldHVybiB0cnVlOworfQogCitzaG91bGRCZVRydWUoInRlc3RFbXB0eUFycmF5QXJndW1lbnRz
KCdhJykiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdEVtcHR5QXJyYXlBcmd1bWVudHMoKSIpOwogCi1m
dW5jdGlvbiB0ZXN0TnVsbEFyZ3VtZW50cygpIHsKLSAgICB2YXIgaSA9IDA7Ci0gICAgYXJndW1l
bnRzID0gbnVsbDsKLSAgICBmb3IgKGFyZyBvZiBhcmd1bWVudHMpIHsKLSAgICAgICAgZmFpbCgi
bm90aGluZyB0byBpdGVyYXRlIik7Ci0gICAgfQotfQogCi1zaG91bGRUaHJvdygidGVzdE51bGxB
cmd1bWVudHMoKSIpOwotZnVuY3Rpb24gdGVzdE5vbkFycmF5TGlrZUFyZ3VtZW50cygpIHsKK2Z1
bmN0aW9uIHRlc3RBcnJheUFyZ3VtZW50cygpIHsKICAgICB2YXIgaSA9IDA7Ci0gICAgYXJndW1l
bnRzID0ge307CisgICAgYXJndW1lbnRzID0gWzEsIDIsIDNdOwogICAgIGZvciAoYXJnIG9mIGFy
Z3VtZW50cykgewotICAgICAgICBmYWlsKCJub3RoaW5nIHRvIGl0ZXJhdGUiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZWFsQXJnID0gYXJndW1lbnRzW2krK107CisgICAgICAg
IHNob3VsZEJlVHJ1ZSgiYXJnID09PSByZWFsQXJnIik7CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIGl0ZXJhdGVkQXJndW1lbnRzTGVuZ3RoID0gaTsKKyAgICBhY3R1YWxBcmd1bWVudHNM
ZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOworICAgIHNob3VsZEJlKCJhY3R1YWxBcmd1bWVudHNM
ZW5ndGgiLCAiaXRlcmF0ZWRBcmd1bWVudHNMZW5ndGgiKTsKIH0KLXNob3VsZEJlVHJ1ZSgidGVz
dE5vbkFycmF5TGlrZUFyZ3VtZW50cygpIik7CiAKK3Rlc3RBcnJheUFyZ3VtZW50cygpOwordGVz
dEFycmF5QXJndW1lbnRzKCJhIik7Cit0ZXN0QXJyYXlBcmd1bWVudHMoImEiLCAiYiIpOwordGVz
dEFycmF5QXJndW1lbnRzKHt9KTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9y
ZWdyZXNzLTE0MDMwNi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvcmVncmVzcy0xNDAzMDYuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcmVncmVzcy0xNDAzMDYuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBA
QAorZGVzY3JpcHRpb24oCisiUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL3dlYmtpdC5vcmcv
Yi8xNDAzMDYuIFRoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuIgor
KTsKKwordGVzdEFyZ3MgPSBbIDEsICJTZWNvbmQiLCBuZXcgTnVtYmVyKDMpIF07CisKK2Z1bmN0
aW9uIGNoZWNrQXJncyhhMCwgYTEsIGEyKSB7CisgICAgaWYgKGEwICE9PSB0ZXN0QXJnc1swXSkK
KyAgICAgICAgdGhyb3cgIlZhbHVlIG9mIGRlY2xhcmVkIGFyZyBhMCBpcyB3cm9uZy4gIFNob3Vs
ZCBiZTogIiArIHRlc3RBcmdzWzBdICsgIiwgd2FzOiAiICsgYTA7CisKKyAgICBpZiAoYTEgIT09
IHRlc3RBcmdzWzFdKQorICAgICAgICB0aHJvdyAiVmFsdWUgb2YgZGVjbGFyZWQgYXJnIGExIGlz
IHdyb25nLiAgU2hvdWxkIGJlOiAiICsgdGVzdEFyZ3NbMV0gKyAiLCB3YXM6ICIgKyBhMTsKKwor
ICAgIGlmIChhMiAhPT0gdGVzdEFyZ3NbMl0pCisgICAgICAgIHRocm93ICJWYWx1ZSBvZiBkZWNs
YXJlZCBhcmcgYTIgaXMgd3JvbmcuICBTaG91bGQgYmU6ICIgKyB0ZXN0QXJnc1syXSArICIsIHdh
czogIiArIGEyOworCisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggIT0gMykKKyAgICAgICAgdGhy
b3cgIkxlbmd0aCBvZiBhcmd1bWVudHMgaXMgd3JvbmcuICBTaG91bGQgYmU6IDMsIHdhczogIiAr
IGFyZ3VtZW50cy5sZW5ndGg7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5s
ZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJndW1lbnRzW2ldICE9PSB0ZXN0QXJnc1tpXSkK
KyAgICAgICAgICAgIHRocm93ICJWYWx1ZSBvZiBhcmd1bWVudHNbIiArIGkgKyAiXSBpcyB3cm9u
Zy4gIFNob3VsZCBiZTogIiArIHRlc3RBcmdzW2ldICsgIiwgd2FzOiAiICsgYXJndW1lbnRzW2ld
OworICAgIH0KK30KKworZnVuY3Rpb24gYXBwbHlUb0FyZ3MoKSB7CisgICAgYXJndW1lbnRzID0g
dGVzdEFyZ3M7CisKKyAgICBjaGVja0FyZ3MuYXBwbHkodGhpcywgYXJndW1lbnRzKQorCisgICAg
dHJ5IHsgfSBjYXRjaCAoZSkgeyB0aHJvdyBlOyB9ICAvLyBUbyBmb3JjZSB0aGUgY3JlYXRpb24g
b2YgYW4gYWN0aXZhdGlvbiBvYmplY3QKK30KKworYXBwbHlUb0FyZ3MoNDIpOwo=
</data>
<flag name="review"
          id="269662"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>