<?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>196325</bug_id>
          
          <creation_ts>2019-03-27 16:16:31 -0700</creation_ts>
          <short_desc>B3ReduceStrength should know that Mul distributes over Add and Sub</short_desc>
          <delta_ts>2019-04-05 11:16:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196652</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1521901</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-27 16:16:31 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521906</commentid>
    <comment_count>1</comment_count>
      <attachid>366127</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-27 16:26:00 -0700</bug_when>
    <thetext>Created attachment 366127
Patch

Note: there are other patterns involving Mul that I plan to add in a separate patch. For example Add (x, Mul (x, y)) =&gt; Mul (x, y+1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522642</commentid>
    <comment_count>2</comment_count>
      <attachid>366127</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-03-29 16:18:09 -0700</bug_when>
    <thetext>Comment on attachment 366127
Patch

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

r=me with comment

&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2439
&gt; -            replaceWithNew&lt;Value&gt;(BitAnd, m_value-&gt;origin(), bitOp, x1);
&gt; +            replaceWithNew&lt;Value&gt;(BitAnd, m_value-&gt;origin(), x1, bitOp);

This change isn&apos;t described in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522649</commentid>
    <comment_count>3</comment_count>
      <attachid>366325</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-29 16:36:34 -0700</bug_when>
    <thetext>Created attachment 366325
Patch

Same patch as before, except for one more line in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522650</commentid>
    <comment_count>4</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-29 16:37:08 -0700</bug_when>
    <thetext>Thanks for the review!

I added a line in the changelog about this (fairly trivial) change.

(In reply to Michael Saboff from comment #2)
&gt; Comment on attachment 366127 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=366127&amp;action=review
&gt; 
&gt; r=me with comment
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2439
&gt; &gt; -            replaceWithNew&lt;Value&gt;(BitAnd, m_value-&gt;origin(), bitOp, x1);
&gt; &gt; +            replaceWithNew&lt;Value&gt;(BitAnd, m_value-&gt;origin(), x1, bitOp);
&gt; 
&gt; This change isn&apos;t described in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522651</commentid>
    <comment_count>5</comment_count>
      <attachid>366325</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-29 16:37:47 -0700</bug_when>
    <thetext>Comment on attachment 366325
Patch

Rejecting attachment 366325 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 366325, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=366325&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=196325&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 366325 from bug 196325.
Fetching: https://bugs.webkit.org/attachment.cgi?id=366325
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Parsed 3 diffs from patch file(s).
patching file Source/JavaScriptCore/ChangeLog
patch: **** malformed patch at line 37:  2019-03-25  Gyuyoung Kim  &lt;gyuyoung.kim@webkit.org&gt;

patching file Source/JavaScriptCore/b3/B3ReduceStrength.cpp
patching file Source/JavaScriptCore/b3/testb3.cpp
Hunk #4 succeeded at 17070 (offset 45 lines).
Hunk #5 succeeded at 17155 (offset 45 lines).
Hunk #6 succeeded at 17241 (offset 45 lines).

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/11707553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522652</commentid>
    <comment_count>6</comment_count>
      <attachid>366326</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-29 16:41:57 -0700</bug_when>
    <thetext>Created attachment 366326
Patch

Fixed a patch format issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522666</commentid>
    <comment_count>7</comment_count>
      <attachid>366326</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-29 17:21:49 -0700</bug_when>
    <thetext>Comment on attachment 366326
Patch

Clearing flags on attachment: 366326

Committed r243670: &lt;https://trac.webkit.org/changeset/243670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522667</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-29 17:21:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522669</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-29 17:22:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/49441650&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524426</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-04-04 13:57:24 -0700</bug_when>
    <thetext>Robin, GCC found a bug here. Look:

[2656/4718] Building CXX object Source/JavaScriptCore/CMa...ScriptCore/unified-sources/UnifiedSource-23a5fd0e-7.cpp.o
In file included from DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-23a5fd0e-7.cpp:6:
../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp: In member function ‘bool JSC::B3::{anonymous}::ReduceStrength::handleMulDistributivity()’:
../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2348:20: warning: variable ‘x1’ set but not used [-Wunused-but-set-variable]
 2348 |             Value* x1 = nullptr;
      |                    ^~
../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2349:20: warning: variable ‘x2’ set but not used [-Wunused-but-set-variable]
 2349 |             Value* x2 = nullptr;
      |                    ^~
../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2350:20: warning: variable ‘x3’ set but not used [-Wunused-but-set-variable]
 2350 |             Value* x3 = nullptr;
      |                    ^~

Indeed, the redeclared x1, x2, and x3 all go out of scope before they&apos;re ever used. I think they&apos;re being shadowed by mistake, right? Proposed solution:

diff --git a/Source/JavaScriptCore/b3/B3ReduceStrength.cpp b/Source/JavaScriptCore/b3/B3ReduceStrength.cpp
index 9e6215942f3..7e22c29d6d4 100644
--- a/Source/JavaScriptCore/b3/B3ReduceStrength.cpp
+++ b/Source/JavaScriptCore/b3/B3ReduceStrength.cpp
@@ -2345,9 +2345,6 @@ private:
         Value* x2 = nullptr;
         Value* x3 = nullptr;
         if (m_value-&gt;child(0)-&gt;opcode() == Mul &amp;&amp; m_value-&gt;child(1)-&gt;opcode() == Mul) {
-            Value* x1 = nullptr;
-            Value* x2 = nullptr;
-            Value* x3 = nullptr;
             if (m_value-&gt;child(0)-&gt;child(0) == m_value-&gt;child(1)-&gt;child(0)) {
                 // Op(Mul(x1, x2), Mul(x1, x3))
                 x1 = m_value-&gt;child(0)-&gt;child(0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524479</commentid>
    <comment_count>11</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-04 15:35:38 -0700</bug_when>
    <thetext>Indeed, this is a clear bug, probably an accidental copy-paste.
Thanks for the report, I will send a patch as soon as my current compile is over.

(In reply to Michael Catanzaro from comment #10)
&gt; Robin, GCC found a bug here. Look:
&gt; 
&gt; [2656/4718] Building CXX object
&gt; Source/JavaScriptCore/CMa...ScriptCore/unified-sources/UnifiedSource-
&gt; 23a5fd0e-7.cpp.o
&gt; In file included from
&gt; DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-23a5fd0e-7.cpp:6:
&gt; ../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp: In member function
&gt; ‘bool JSC::B3::{anonymous}::ReduceStrength::handleMulDistributivity()’:
&gt; ../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2348:20: warning:
&gt; variable ‘x1’ set but not used [-Wunused-but-set-variable]
&gt;  2348 |             Value* x1 = nullptr;
&gt;       |                    ^~
&gt; ../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2349:20: warning:
&gt; variable ‘x2’ set but not used [-Wunused-but-set-variable]
&gt;  2349 |             Value* x2 = nullptr;
&gt;       |                    ^~
&gt; ../../Source/JavaScriptCore/b3/B3ReduceStrength.cpp:2350:20: warning:
&gt; variable ‘x3’ set but not used [-Wunused-but-set-variable]
&gt;  2350 |             Value* x3 = nullptr;
&gt;       |                    ^~
&gt; 
&gt; Indeed, the redeclared x1, x2, and x3 all go out of scope before they&apos;re
&gt; ever used. I think they&apos;re being shadowed by mistake, right? Proposed
&gt; solution:
&gt; 
&gt; diff --git a/Source/JavaScriptCore/b3/B3ReduceStrength.cpp
&gt; b/Source/JavaScriptCore/b3/B3ReduceStrength.cpp
&gt; index 9e6215942f3..7e22c29d6d4 100644
&gt; --- a/Source/JavaScriptCore/b3/B3ReduceStrength.cpp
&gt; +++ b/Source/JavaScriptCore/b3/B3ReduceStrength.cpp
&gt; @@ -2345,9 +2345,6 @@ private:
&gt;          Value* x2 = nullptr;
&gt;          Value* x3 = nullptr;
&gt;          if (m_value-&gt;child(0)-&gt;opcode() == Mul &amp;&amp;
&gt; m_value-&gt;child(1)-&gt;opcode() == Mul) {
&gt; -            Value* x1 = nullptr;
&gt; -            Value* x2 = nullptr;
&gt; -            Value* x3 = nullptr;
&gt;              if (m_value-&gt;child(0)-&gt;child(0) == m_value-&gt;child(1)-&gt;child(0))
&gt; {
&gt;                  // Op(Mul(x1, x2), Mul(x1, x3))
&gt;                  x1 = m_value-&gt;child(0)-&gt;child(0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524495</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-04 15:53:49 -0700</bug_when>
    <thetext>Can you add a test too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524498</commentid>
    <comment_count>13</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-04 16:01:02 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #12)
&gt; Can you add a test too?

There were already a lot of tests that the B3 optimizations don&apos;t have soundness issues (including some that I added for this optimization in particular). What would be needed to find this kind of case where an optimization is dead/never trigger is a different kind of thing. I could add some microbenchmark, but currently most of the peephole optimizations don&apos;t have one.
Maybe another option would be some logging of which optimizations triggers (as a compile time option), and verifying on JetStream2 + microbenchmarks that all optimizations trigger at least twice. It would have the benefit of requiring less work 
and could give us hints of what optimizations matter most/should be improved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524499</commentid>
    <comment_count>14</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-04 16:01:49 -0700</bug_when>
    <thetext>&gt; that all optimizations trigger at least twice.

I meant *once*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524501</commentid>
    <comment_count>15</comment_count>
      <attachid>366767</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-04 16:13:03 -0700</bug_when>
    <thetext>Created attachment 366767
PatchForFix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524527</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-04 17:07:58 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 366767:

media/W3C/video/events/event_progress.html bug 196637 (author: pilgrim@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524528</commentid>
    <comment_count>17</comment_count>
      <attachid>366767</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-04 17:08:37 -0700</bug_when>
    <thetext>Comment on attachment 366767
PatchForFix

Clearing flags on attachment: 366767

Committed r243918: &lt;https://trac.webkit.org/changeset/243918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524529</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-04 17:08:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366127</attachid>
            <date>2019-03-27 16:26:00 -0700</date>
            <delta_ts>2019-03-29 16:36:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch196325</filename>
            <type>text/plain</type>
            <size>15118</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU4MGQyMzhmZjVlLi4wMTY3ZDc4MmZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDMtMjcgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBCM1JlZHVjZVN0cmVu
Z3RoIHNob3VsZCBrbm93IHRoYXQgTXVsIGRpc3RyaWJ1dGVzIG92ZXIgQWRkIGFuZCBTdWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjMyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0
Y2ggSSBhZGQgdGhlIGZvbGxvd2luZyBwYXR0ZXJucyB0byBCM1JlZHVjZVN0cmVuZ3RoOgorICAg
ICAgICAtIFR1cm4gdGhpczogSW50ZWdlciBOZWcoTXVsKHZhbHVlLCBjKSkKKyAgICAgICAgICBJ
bnRvIHRoaXM6IE11bCh2YWx1ZSwgLWMpLCBhcyBsb25nIGFzIC1jIGRvZXMgbm90IG92ZXJmbG93
CisgICAgICAgIC0gVHVybiB0aGVzZTogSW50ZWdlciBNdWwodmFsdWUsIE5lZyhvdGhlclZhbHVl
KSkgYW5kIEludGVnZXIgTXVsKE5lZyh2YWx1ZSksIG90aGVyVmFsdWUpCisgICAgICAgICAgSW50
byB0aGlzOiBOZWcoTXVsKHZhbHVlLCBvdGhlclZhbHVlKSkKKyAgICAgICAgLSBGb3IgT3A9PUFk
ZCBvciBTdWIsIHR1cm4gYW55IG9mIHRoZXNlOgorICAgICAgICAgICAgIE9wKE11bCh4MSwgeDIp
LCBNdWwoeDEsIHgzKSkKKyAgICAgICAgICAgICBPcChNdWwoeDIsIHgxKSwgTXVsKHgxLCB4Mykp
CisgICAgICAgICAgICAgT3AoTXVsKHgxLCB4MiksIE11bCh4MywgeDEpKQorICAgICAgICAgICAg
IE9wKE11bCh4MiwgeDEpLCBNdWwoeDMsIHgxKSkKKyAgICAgICAgICBJbnRvIHRoaXM6IE11bCh4
MSwgT3AoeDIsIHgzKSkKKworICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAg
ICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWRkTXVsTXVsQXJn
cyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsQXJnTmVnQXJnKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RNdWxOZWdBcmdBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE5lZ011bEFyZ0lt
bSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViTXVsTXVsQXJncyk6CisgICAgICAgIChKU0M6
OkIzOjpydW4pOgorCiAyMDE5LTAzLTI1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgTmF2aWdhdG9yQ29udGVudFV0aWxzIGluIFdlYkNv
cmUvTW9kdWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGgu
Y3BwCmluZGV4IDBkYjNlYWQ4MDQ4Li4zY2I5ZDE0MzQwMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtNjAyLDYgKzYwMiw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihCaXRYb3IsIG1f
dmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSksIG1fdmFsdWUtPmNo
aWxkKDEpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKGhhbmRsZU11bERpc3RyaWJ1dGl2aXR5KCkpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBicmVhazsK
QEAgLTY0NCw2ICs2NDcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXBsYWNl
V2l0aE5ldzxWYWx1ZT4oQWRkLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChoYW5kbGVNdWxEaXN0
cmlidXRpdml0eSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgYnJlYWs7CkBAIC02NjIsMTQgKzY2OCwzMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxk
KDApKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBJbnRlZ2VyIE5lZyhTdWIodmFsdWUsIG90aGVy
VmFsdWUpKQotICAgICAgICAgICAgLy8gSW50byB0aGlzOiBTdWIob3RoZXJWYWx1ZSwgdmFsdWUp
Ci0gICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNJbnRlZ2VyKCkgJiYgbV92YWx1ZS0+Y2hpbGQo
MCktPm9wY29kZSgpID09IFN1YikgewotICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZh
bHVlPihTdWIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSks
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0ludGVnZXIoKSkgeworICAgICAgICAgICAgICAg
IC8vIFR1cm4gdGhpczogSW50ZWdlciBOZWcoU3ViKHZhbHVlLCBvdGhlclZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IFN1YihvdGhlclZhbHVlLCB2YWx1ZSkKKyAgICAgICAg
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IFN1YikgeworICAgICAg
ICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oU3ViLCBtX3ZhbHVlLT5vcmlnaW4o
KSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQo
MCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEludGVnZXIgTmVnKE11bCh2YWx1ZSwgYykpCisg
ICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBNdWwodmFsdWUsIC1jKSwgYXMgbG9uZyBhcyAt
YyBkb2VzIG5vdCBvdmVyZmxvdworICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgw
KS0+b3Bjb2RlKCkgPT0gTXVsICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKS0+aGFzSW50
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBmYWN0b3IgPSBtX3ZhbHVlLT5jaGls
ZCgwKS0+Y2hpbGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVl
LT50eXBlKCkgPT0gSW50MzIgJiYgZmFjdG9yICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1pbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3RmFjdG9yID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0MzJWYWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+Y2hp
bGQoMCktPmNoaWxkKDEpLT5vcmlnaW4oKSwgLWZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oTXVsLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1
ZS0+Y2hpbGQoMCktPmNoaWxkKDApLCBuZXdGYWN0b3IpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQ2NCAmJiBmYWN0b3IgIT0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiBuZXdGYWN0b3IgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPihtX2lu
ZGV4LCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSktPm9yaWdpbigpLCAtZmFjdG9yKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihNdWwsIG1fdmFsdWUt
Pm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG5ld0ZhY3Rvcik7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBNdWw6CkBAIC03MDIsMTMgKzcyNCw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gVHVy
biB0aGlzOiBNdWwodmFsdWUsIC0xKQotICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogU3Vi
KDAsIHZhbHVlKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogTmVnKHZhbHVlKQogICAg
ICAgICAgICAgICAgIGlmIChmYWN0b3IgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVw
bGFjZVdpdGhOZXdWYWx1ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJvYy5hZGQ8VmFs
dWU+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YiwgbV92YWx1ZS0+b3JpZ2luKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29u
c3RhbnQobV9pbmRleCwgbV92YWx1ZSwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV92YWx1ZS0+Y2hpbGQoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXc8
VmFsdWU+KE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IApAQCAtNzM0LDYgKzc1MiwyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzSW50ZWdlcigpKSB7CisgICAg
ICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBJbnRlZ2VyIE11bCh2YWx1ZSwgTmVnKG90aGVyVmFs
dWUpKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogTmVnKE11bCh2YWx1ZSwgb3RoZXJW
YWx1ZSkpCisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9
PSBOZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld011bCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTXVsLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1
ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBuZXdN
dWwpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBJbnRlZ2VyIE11bChOZWcodmFsdWUpLCBvdGhlclZh
bHVlKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogTmVnKE11bCh2YWx1ZSwgdmFsdWUy
KSkKKyAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IE5l
ZykgeworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3TXVsID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0PFZhbHVlPihtX2luZGV4LCBNdWwsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5j
aGlsZCgwKS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVwbGFjZVdpdGhOZXc8VmFsdWU+KE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG5ld011bCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBEaXY6CkBAIC0yMjk2
LDYgKzIzMzEsNTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIEZvciBP
cD09QWRkIG9yIFN1YiwgdHVybiBhbnkgb2YgdGhlc2U6CisgICAgLy8gICAgICBPcChNdWwoeDEs
IHgyKSwgTXVsKHgxLCB4MykpCisgICAgLy8gICAgICBPcChNdWwoeDIsIHgxKSwgTXVsKHgxLCB4
MykpCisgICAgLy8gICAgICBPcChNdWwoeDEsIHgyKSwgTXVsKHgzLCB4MSkpCisgICAgLy8gICAg
ICBPcChNdWwoeDIsIHgxKSwgTXVsKHgzLCB4MSkpCisgICAgLy8gSW50byB0aGlzOiBNdWwoeDEs
IE9wKHgyLCB4MykpCisgICAgYm9vbCBoYW5kbGVNdWxEaXN0cmlidXRpdml0eSgpCisgICAgewor
ICAgICAgICBBU1NFUlQobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQWRkIHx8IG1fdmFsdWUtPm9wY29k
ZSgpID09IFN1Yik7CisgICAgICAgIFZhbHVlKiB4MSA9IG51bGxwdHI7CisgICAgICAgIFZhbHVl
KiB4MiA9IG51bGxwdHI7CisgICAgICAgIFZhbHVlKiB4MyA9IG51bGxwdHI7CisgICAgICAgIGlm
IChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsICYmIG1fdmFsdWUtPmNoaWxkKDEp
LT5vcGNvZGUoKSA9PSBNdWwpIHsKKyAgICAgICAgICAgIFZhbHVlKiB4MSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBWYWx1ZSogeDIgPSBudWxscHRyOworICAgICAgICAgICAgVmFsdWUqIHgzID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0g
bV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDApKSB7CisgICAgICAgICAgICAgICAgLy8gT3AoTXVs
KHgxLCB4MiksIE11bCh4MSwgeDMpKQorICAgICAgICAgICAgICAgIHgxID0gbV92YWx1ZS0+Y2hp
bGQoMCktPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+Y2hpbGQoMCkt
PmNoaWxkKDEpOworICAgICAgICAgICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxk
KDEpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSkg
PT0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDApKSB7CisgICAgICAgICAgICAgICAgLy8gT3Ao
TXVsKHgyLCB4MSksIE11bCh4MSwgeDMpKQorICAgICAgICAgICAgICAgIHgxID0gbV92YWx1ZS0+
Y2hpbGQoMCktPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+Y2hpbGQo
MCktPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQoMSktPmNo
aWxkKDEpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQo
MCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgLy8g
T3AoTXVsKHgxLCB4MiksIE11bCh4MywgeDEpKQorICAgICAgICAgICAgICAgIHgxID0gbV92YWx1
ZS0+Y2hpbGQoMCktPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+Y2hp
bGQoMCktPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQoMSkt
PmNoaWxkKDApOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSkgPT0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAg
Ly8gT3AoTXVsKHgyLCB4MSksIE11bCh4MywgeDEpKQorICAgICAgICAgICAgICAgIHgxID0gbV92
YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+
Y2hpbGQoMCktPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQo
MSktPmNoaWxkKDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh4MSAh
PSBudWxscHRyKSB7CisgICAgICAgICAgICBBU1NFUlQoeDIgIT0gbnVsbHB0ciAmJiB4MyAhPSBu
dWxscHRyKTsKKyAgICAgICAgICAgIFZhbHVlKiBuZXdPcCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+b3Bjb2RlKCksIG1fdmFsdWUtPm9yaWdpbigpLCB4
MiwgeDMpOworICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXc8VmFsdWU+KE11bCwgbV92YWx1ZS0+
b3JpZ2luKCksIHgxLCBuZXdPcCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gRm9yIE9wPT1CaXRPciBv
ciBCaXRYb3IsIHR1cm4gYW55IG9mIHRoZXNlOgogICAgIC8vICAgICAgT3AoQml0QW5kKHgxLCB4
MiksIEJpdEFuZCh4MSwgeDMpKQogICAgIC8vICAgICAgT3AoQml0QW5kKHgyLCB4MSksIEJpdEFu
ZCh4MSwgeDMpKQpAQCAtMjM1NCw3ICsyNDM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHgx
ICE9IG51bGxwdHIpIHsKICAgICAgICAgICAgIEFTU0VSVCh4MiAhPSBudWxscHRyICYmIHgzICE9
IG51bGxwdHIpOwogICAgICAgICAgICAgVmFsdWUqIGJpdE9wID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PFZhbHVlPihtX2luZGV4LCBtX3ZhbHVlLT5vcGNvZGUoKSwgbV92YWx1ZS0+b3JpZ2luKCks
IHgyLCB4Myk7Ci0gICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oQml0QW5kLCBtX3Zh
bHVlLT5vcmlnaW4oKSwgYml0T3AsIHgxKTsKKyAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZh
bHVlPihCaXRBbmQsIG1fdmFsdWUtPm9yaWdpbigpLCB4MSwgYml0T3ApOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCAwZTM3MWJjMDE4MS4uMzQ2ZWFmNzQ4MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC04OTEsNiArODkxLDMyIEBAIHZvaWQgdGVz
dEFkZEFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0
IGIpCiAgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEp
ICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkpOwogfQogCit2b2lkIHRlc3RBZGRNdWxNdWxBcmdz
KGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7CisgICAgLy8gV2Ugd2FudCB0byBj
aGVjayBldmVyeSBwb3NzaWJsZSBvcmRlcmluZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNo
ZWNrIGV2ZXJ5IHBhdGggaW4gQjNSZWR1Y2VTdHJlbmd0aCk6CisgICAgLy8gKChhICogYikgKyAo
YSAqIGMpKQorICAgIC8vICgoYSAqIGIpICsgKGMgKiBhKSkKKyAgICAvLyAoKGIgKiBhKSArIChh
ICogYykpCisgICAgLy8gKChiICogYSkgKyAoYyAqIGEpKQorICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgNDsgKytpKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IFZhbHVlKiBhcmdDID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBWYWx1ZSogbXVsQUIgPSBp
ICYgMiA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwg
YXJnQikKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9y
aWdpbigpLCBhcmdCLCBhcmdBKTsKKyAgICAgICAgVmFsdWUqIG11bEFDID0gaSAmIDEgPyByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCisgICAg
ICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJn
QywgYXJnQSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICBtdWxBQiwKKyAgICAgICAgICAgICAgICBtdWxBQykp
OworCisgICAgICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYiwg
YyksICgoYSAqIGIpICsgKGEgKiBjKSkpOworICAgIH0KK30KKwogdm9pZCB0ZXN0TXVsQXJnKGlu
dCBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtOTYzLDYgKzk4OSwzMiBAQCB2b2lkIHRl
c3RNdWxBcmdzKGludCBhLCBpbnQgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYSwgYikgPT0gYSAqIGIpOwogfQogCit2b2lkIHRlc3RNdWxBcmdOZWdBcmcoaW50IGEsIGlu
dCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFs
dWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgVmFsdWUqIG5lZ0IgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCksIGFyZ0IpOworICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0EsIG5l
Z0IpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSBh
ICogKC1iKSk7Cit9CisKK3ZvaWQgdGVzdE11bE5lZ0FyZ0FyZyhpbnQgYSwgaW50IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnQiA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogbmVnQSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgbmVnQSwgYXJnQik7CisgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09ICgtYSkgKiBiKTsK
K30KKwogdm9pZCB0ZXN0TXVsQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwpAQCAtMjE4MCw2ICsyMjMyLDQ1IEBAIHZvaWQgdGVzdE5lZ1ZhbHVlU3Vi
T25lMzIoaW50IGEpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IC1h
IC0gMSk7CiB9CiAKK3ZvaWQgdGVzdE5lZ011bEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1
ZSogY29uc3RhbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYik7CisgICAgVmFsdWUqIG11bCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVs
LCBPcmlnaW4oKSwgYXJndW1lbnQsIGNvbnN0YW50KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcsIE9yaWdpbigpLCBtdWwpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gLShhICogYikpOworfQor
Cit2b2lkIHRlc3RTdWJNdWxNdWxBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMp
Cit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBvcmRlcmluZyBvZiBh
cmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4gQjNSZWR1Y2VTdHJlbmd0
aCk6CisgICAgLy8gKChhICogYikgLSAoYSAqIGMpKQorICAgIC8vICgoYSAqIGIpIC0gKGMgKiBh
KSkKKyAgICAvLyAoKGIgKiBhKSAtIChhICogYykpCisgICAgLy8gKChiICogYSkgLSAoYyAqIGEp
KQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ0IgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhcmdDID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwor
ICAgICAgICBWYWx1ZSogbXVsQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKKyAgICAgICAgICAgIDogcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKKyAgICAgICAgVmFs
dWUqIG11bEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3Jp
Z2luKCksIGFyZ0EsIGFyZ0MpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQywgYXJnQSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBtdWxBQiwK
KyAgICAgICAgICAgICAgICBtdWxBQykpOworCisgICAgICAgIENIRUNLX0VRKGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgYSwgYiwgYyksICgoYSAqIGIpIC0gKGEgKiBjKSkpOworICAgIH0K
K30KKwogdm9pZCB0ZXN0U3ViQXJnRG91YmxlKGRvdWJsZSBhKQogewogICAgIFByb2NlZHVyZSBw
cm9jOwpAQCAtMTY5MzQsNiArMTcwMjUsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIp
CiAgICAgUlVOX0JJTkFSWSh0ZXN0QWRkTmVnMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJh
bmRzKCkpOwogICAgIFJVTih0ZXN0QWRkQXJnWmVyb0ltbVpEZWYoKSk7CiAgICAgUlVOKHRlc3RB
ZGRMb2FkVHdpY2UoKSk7CisgICAgUlVOX1RFUk5BUlkodGVzdEFkZE11bE11bEFyZ3MsIGludDY0
T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogCiAgICAgUlVO
KHRlc3RBZGRBcmdEb3VibGUoTV9QSSkpOwogICAgIFJVTih0ZXN0QWRkQXJnc0RvdWJsZShNX1BJ
LCAxKSk7CkBAIC0xNzAxOCw2ICsxNzExMCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICBSVU4odGVzdE11bE5lZ0FyZ3MoKSk7CiAgICAgUlVOKHRlc3RNdWxOZWdBcmdzMzIo
KSk7CiAKKyAgICBSVU5fQklOQVJZKHRlc3RNdWxBcmdOZWdBcmcsIGludDY0T3BlcmFuZHMoKSwg
aW50NjRPcGVyYW5kcygpKQorICAgIFJVTl9CSU5BUlkodGVzdE11bE5lZ0FyZ0FyZywgaW50NjRP
cGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpCiAgICAgUlVOX1VOQVJZKHRlc3RNdWxBcmdEb3Vi
bGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9CSU5BUlkodGVz
dE11bEFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ0ltbURv
dWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CkBAIC0xNzEwMiw2ICsxNzE5Niw4IEBAIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcikKICAgICBSVU5fQklOQVJZKHRlc3RTdWJOZWcsIGludDMyT3BlcmFuZHMoKSwg
aW50MzJPcGVyYW5kcygpKTsKICAgICBSVU5fQklOQVJZKHRlc3ROZWdTdWIsIGludDMyT3BlcmFu
ZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlkodGVzdE5lZ1ZhbHVlU3ViT25l
LCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdE5lZ011bEFyZ0ltbSwgaW50
NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9URVJOQVJZKHRlc3RTdWJN
dWxNdWxBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5k
cygpKTsKIAogICAgIFJVTih0ZXN0U3ViQXJnczMyKDEsIDEpKTsKICAgICBSVU4odGVzdFN1YkFy
Z3MzMigxLCAyKSk7Cg==
</data>
<flag name="review"
          id="382549"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366325</attachid>
            <date>2019-03-29 16:36:34 -0700</date>
            <delta_ts>2019-03-29 16:41:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15380</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU4MGQyMzhmZjVlLi4wMTY3ZDc4MmZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDMtMjcgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBCM1JlZHVjZVN0cmVu
Z3RoIHNob3VsZCBrbm93IHRoYXQgTXVsIGRpc3RyaWJ1dGVzIG92ZXIgQWRkIGFuZCBTdWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjMyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgU2Fib2ZmLgorCisgICAgICAgIEluIHRoaXMgcGF0
Y2ggSSBhZGQgdGhlIGZvbGxvd2luZyBwYXR0ZXJucyB0byBCM1JlZHVjZVN0cmVuZ3RoOgorICAg
ICAgICAtIFR1cm4gdGhpczogSW50ZWdlciBOZWcoTXVsKHZhbHVlLCBjKSkKKyAgICAgICAgICBJ
bnRvIHRoaXM6IE11bCh2YWx1ZSwgLWMpLCBhcyBsb25nIGFzIC1jIGRvZXMgbm90IG92ZXJmbG93
CisgICAgICAgIC0gVHVybiB0aGVzZTogSW50ZWdlciBNdWwodmFsdWUsIE5lZyhvdGhlclZhbHVl
KSkgYW5kIEludGVnZXIgTXVsKE5lZyh2YWx1ZSksIG90aGVyVmFsdWUpCisgICAgICAgICAgSW50
byB0aGlzOiBOZWcoTXVsKHZhbHVlLCBvdGhlclZhbHVlKSkKKyAgICAgICAgLSBGb3IgT3A9PUFk
ZCBvciBTdWIsIHR1cm4gYW55IG9mIHRoZXNlOgorICAgICAgICAgICAgIE9wKE11bCh4MSwgeDIp
LCBNdWwoeDEsIHgzKSkKKyAgICAgICAgICAgICBPcChNdWwoeDIsIHgxKSwgTXVsKHgxLCB4Mykp
CisgICAgICAgICAgICAgT3AoTXVsKHgxLCB4MiksIE11bCh4MywgeDEpKQorICAgICAgICAgICAg
IE9wKE11bCh4MiwgeDEpLCBNdWwoeDMsIHgxKSkKKyAgICAgICAgICBJbnRvIHRoaXM6IE11bCh4
MSwgT3AoeDIsIHgzKSkKKworICAgICAgICBBbHNvIGluY2x1ZGVzIGEgdHJpdmlhbCBjaGFuZ2U6
IGEgc2ltaWxhciByZWR1Y3Rpb24gZm9yIHRoZSBkaXN0cmlidXRpdml0eSBvZiBCaXRBbmQgb3Zl
ciBCaXRPci9CaXRYb3Igbm93CisgICAgICAgIGVtaXRzIHRoZSBhcmd1bWVudHMgdG8gQml0QW5k
IGluIHRoZSBvdGhlciBvcmRlciwgdG8gbWluaW1pemUgdGhlIHByb2JhYmlsaXR5IHRoYXQgd2Un
bGwgc3BlbmQgYSBmdWxsIGZpeHBvaW50IHN0ZXAganVzdCB0byBmbGlwIHRoZW0uCisKKyAgICAg
ICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZE11bE11bEFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdE11bEFyZ05lZ0FyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsTmVnQXJnQXJnKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3ROZWdNdWxBcmdJbW0pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdFN1Yk11bE11bEFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAxOS0wMy0y
NSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVt
b3ZlIE5hdmlnYXRvckNvbnRlbnRVdGlscyBpbiBXZWJDb3JlL01vZHVsZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCAwZGIzZWFkODA0OC4u
M2NiOWQxNDM0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJl
bmd0aC5jcHAKQEAgLTYwMiw2ICs2MDIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oQml0WG9yLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1
ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICho
YW5kbGVNdWxEaXN0cmlidXRpdml0eSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7CkBAIC02NDQsNiArNjQ3LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXc8VmFsdWU+KEFkZCwgbV92
YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKS0+Y2hp
bGQoMCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAoaGFuZGxlTXVsRGlzdHJpYnV0aXZpdHkoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNjYyLDE0ICs2NjgsMzAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXBsYWNlV2l0
aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFR1cm4g
dGhpczogSW50ZWdlciBOZWcoU3ViKHZhbHVlLCBvdGhlclZhbHVlKSkKLSAgICAgICAgICAgIC8v
IEludG8gdGhpczogU3ViKG90aGVyVmFsdWUsIHZhbHVlKQotICAgICAgICAgICAgaWYgKG1fdmFs
dWUtPmlzSW50ZWdlcigpICYmIG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBTdWIpIHsK
LSAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oU3ViLCBtX3ZhbHVlLT5vcmln
aW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAobV92YWx1
ZS0+aXNJbnRlZ2VyKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEludGVnZXIg
TmVnKFN1Yih2YWx1ZSwgb3RoZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlz
OiBTdWIob3RoZXJWYWx1ZSwgdmFsdWUpCisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApLT5vcGNvZGUoKSA9PSBTdWIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdp
dGhOZXc8VmFsdWU+KFN1YiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLT5j
aGlsZCgxKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVHVybiB0
aGlzOiBJbnRlZ2VyIE5lZyhNdWwodmFsdWUsIGMpKQorICAgICAgICAgICAgICAgIC8vIEludG8g
dGhpczogTXVsKHZhbHVlLCAtYyksIGFzIGxvbmcgYXMgLWMgZG9lcyBub3Qgb3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IE11bCAmJiBt
X3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSktPmhhc0ludCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgZmFjdG9yID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLT5hc0ludCgp
OworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09IEludDMyICYmIGZh
Y3RvciAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWUqIG5ld0ZhY3RvciA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdDMyVmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKS0+b3JpZ2lu
KCksIC1mYWN0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXc8VmFs
dWU+KE11bCwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSwg
bmV3RmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3ZhbHVlLT50eXBl
KCkgPT0gSW50NjQgJiYgZmFjdG9yICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1p
bigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3RmFjdG9yID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PENvbnN0NjRWYWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+Y2hpbGQoMCkt
PmNoaWxkKDEpLT5vcmlnaW4oKSwgLWZhY3Rvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsYWNlV2l0aE5ldzxWYWx1ZT4oTXVsLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hp
bGQoMCktPmNoaWxkKDApLCBuZXdGYWN0b3IpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgTXVsOgpAQCAtNzAyLDEzICs3MjQsOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTXVsKHZhbHVlLCAtMSkK
LSAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IFN1YigwLCB2YWx1ZSkKKyAgICAgICAgICAg
ICAgICAvLyBJbnRvIHRoaXM6IE5lZyh2YWx1ZSkKICAgICAgICAgICAgICAgICBpZiAoZmFjdG9y
ID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3Byb2MuYWRkPFZhbHVlPigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdWIsIG1fdmFsdWUtPm9yaWdpbigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5kZXgsIG1fdmFsdWUs
IDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihOZWcsIG1fdmFsdWUtPm9y
aWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTczNCw2ICs3NTIsMjMgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAg
IGlmIChtX3ZhbHVlLT5pc0ludGVnZXIoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogSW50ZWdlciBNdWwodmFsdWUsIE5lZyhvdGhlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAv
LyBJbnRvIHRoaXM6IE5lZyhNdWwodmFsdWUsIG90aGVyVmFsdWUpKQorICAgICAgICAgICAgICAg
IGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gTmVnKSB7CisgICAgICAgICAgICAg
ICAgICAgIFZhbHVlKiBuZXdNdWwgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5k
ZXgsIE11bCwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5j
aGlsZCgxKS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxW
YWx1ZT4oTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbmV3TXVsKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogSW50ZWdlciBNdWwoTmVnKHZhbHVlKSwgb3RoZXJWYWx1ZSkKKyAgICAgICAgICAgICAgICAv
LyBJbnRvIHRoaXM6IE5lZyhNdWwodmFsdWUsIHZhbHVlMikpCisgICAgICAgICAgICAgICAgaWYg
KG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBOZWcpIHsKKyAgICAgICAgICAgICAgICAg
ICAgVmFsdWUqIG5ld011bCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwg
TXVsLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLCBtX3Zh
bHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVl
PihOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBuZXdNdWwpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgRGl2OgpAQCAtMjI5Niw2ICsyMzMxLDUzIEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGb3IgT3A9PUFkZCBvciBTdWIsIHR1cm4gYW55
IG9mIHRoZXNlOgorICAgIC8vICAgICAgT3AoTXVsKHgxLCB4MiksIE11bCh4MSwgeDMpKQorICAg
IC8vICAgICAgT3AoTXVsKHgyLCB4MSksIE11bCh4MSwgeDMpKQorICAgIC8vICAgICAgT3AoTXVs
KHgxLCB4MiksIE11bCh4MywgeDEpKQorICAgIC8vICAgICAgT3AoTXVsKHgyLCB4MSksIE11bCh4
MywgeDEpKQorICAgIC8vIEludG8gdGhpczogTXVsKHgxLCBPcCh4MiwgeDMpKQorICAgIGJvb2wg
aGFuZGxlTXVsRGlzdHJpYnV0aXZpdHkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWUt
Pm9wY29kZSgpID09IEFkZCB8fCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBTdWIpOworICAgICAgICBW
YWx1ZSogeDEgPSBudWxscHRyOworICAgICAgICBWYWx1ZSogeDIgPSBudWxscHRyOworICAgICAg
ICBWYWx1ZSogeDMgPSBudWxscHRyOworICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9w
Y29kZSgpID09IE11bCAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gTXVsKSB7Cisg
ICAgICAgICAgICBWYWx1ZSogeDEgPSBudWxscHRyOworICAgICAgICAgICAgVmFsdWUqIHgyID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIFZhbHVlKiB4MyA9IG51bGxwdHI7CisgICAgICAgICAgICBp
ZiAobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpLT5jaGls
ZCgwKSkgeworICAgICAgICAgICAgICAgIC8vIE9wKE11bCh4MSwgeDIpLCBNdWwoeDEsIHgzKSkK
KyAgICAgICAgICAgICAgICB4MSA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAg
ICAgICAgICAgICB4MiA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKTsKKyAgICAgICAgICAg
ICAgICB4MyA9IG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgxKTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpID09IG1fdmFsdWUtPmNoaWxkKDEpLT5j
aGlsZCgwKSkgeworICAgICAgICAgICAgICAgIC8vIE9wKE11bCh4MiwgeDEpLCBNdWwoeDEsIHgz
KSkKKyAgICAgICAgICAgICAgICB4MSA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKTsKKyAg
ICAgICAgICAgICAgICB4MiA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAgICAg
ICAgICAgICB4MyA9IG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgxKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEp
LT5jaGlsZCgxKSkgeworICAgICAgICAgICAgICAgIC8vIE9wKE11bCh4MSwgeDIpLCBNdWwoeDMs
IHgxKSkKKyAgICAgICAgICAgICAgICB4MSA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsK
KyAgICAgICAgICAgICAgICB4MiA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKTsKKyAgICAg
ICAgICAgICAgICB4MyA9IG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpID09IG1fdmFsdWUtPmNoaWxk
KDEpLT5jaGlsZCgxKSkgeworICAgICAgICAgICAgICAgIC8vIE9wKE11bCh4MiwgeDEpLCBNdWwo
eDMsIHgxKSkKKyAgICAgICAgICAgICAgICB4MSA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgx
KTsKKyAgICAgICAgICAgICAgICB4MiA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAg
ICAgICAgICAgICAgICB4MyA9IG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoeDEgIT0gbnVsbHB0cikgeworICAgICAgICAg
ICAgQVNTRVJUKHgyICE9IG51bGxwdHIgJiYgeDMgIT0gbnVsbHB0cik7CisgICAgICAgICAgICBW
YWx1ZSogbmV3T3AgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIG1fdmFs
dWUtPm9wY29kZSgpLCBtX3ZhbHVlLT5vcmlnaW4oKSwgeDIsIHgzKTsKKyAgICAgICAgICAgIHJl
cGxhY2VXaXRoTmV3PFZhbHVlPihNdWwsIG1fdmFsdWUtPm9yaWdpbigpLCB4MSwgbmV3T3ApOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIC8vIEZvciBPcD09Qml0T3Igb3IgQml0WG9yLCB0dXJuIGFueSBvZiB0
aGVzZToKICAgICAvLyAgICAgIE9wKEJpdEFuZCh4MSwgeDIpLCBCaXRBbmQoeDEsIHgzKSkKICAg
ICAvLyAgICAgIE9wKEJpdEFuZCh4MiwgeDEpLCBCaXRBbmQoeDEsIHgzKSkKQEAgLTIzNTQsNyAr
MjQzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh4MSAhPSBudWxscHRyKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoeDIgIT0gbnVsbHB0ciAmJiB4MyAhPSBudWxscHRyKTsKICAgICAgICAgICAg
IFZhbHVlKiBiaXRPcCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgbV92
YWx1ZS0+b3Bjb2RlKCksIG1fdmFsdWUtPm9yaWdpbigpLCB4MiwgeDMpOwotICAgICAgICAgICAg
cmVwbGFjZVdpdGhOZXc8VmFsdWU+KEJpdEFuZCwgbV92YWx1ZS0+b3JpZ2luKCksIGJpdE9wLCB4
MSk7CisgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oQml0QW5kLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgeDEsIGJpdE9wKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5k
ZXggMGUzNzFiYzAxODEuLjM0NmVhZjc0ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcApAQCAtODkxLDYgKzg5MSwzMiBAQCB2b2lkIHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZmZWN0
ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQogICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSArIHN0YXRpY19jYXN0PGRvdWJsZT4o
YikpKTsKIH0KIAordm9pZCB0ZXN0QWRkTXVsTXVsQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYiwg
aW50NjRfdCBjKQoreworICAgIC8vIFdlIHdhbnQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgb3Jk
ZXJpbmcgb2YgYXJndW1lbnRzICh0byBwcm9wZXJseSBjaGVjayBldmVyeSBwYXRoIGluIEIzUmVk
dWNlU3RyZW5ndGgpOgorICAgIC8vICgoYSAqIGIpICsgKGEgKiBjKSkKKyAgICAvLyAoKGEgKiBi
KSArIChjICogYSkpCisgICAgLy8gKChiICogYSkgKyAoYSAqIGMpKQorICAgIC8vICgoYiAqIGEp
ICsgKGMgKiBhKSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVl
KiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYXJnQyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIG11bEFCID0gaSAmIDIgPyByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0IpCisgICAgICAgICAgICA6IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQiwgYXJnQSk7Cisg
ICAgICAgIFZhbHVlKiBtdWxBQyA9IGkgJiAxID8gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBNdWwsIE9yaWdpbigpLCBhcmdBLCBhcmdDKQorICAgICAgICAgICAgOiByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0MsIGFyZ0EpOworICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgbXVsQUIsCisgICAgICAgICAgICAgICAgbXVsQUMpKTsKKworICAgICAgICBDSEVDS19FUShj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIsIGMpLCAoKGEgKiBiKSArIChhICogYykp
KTsKKyAgICB9Cit9CisKIHZvaWQgdGVzdE11bEFyZyhpbnQgYSkKIHsKICAgICBQcm9jZWR1cmUg
cHJvYzsKQEAgLTk2Myw2ICs5ODksMzIgQEAgdm9pZCB0ZXN0TXVsQXJncyhpbnQgYSwgaW50IGIp
CiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEgKiBiKTsKIH0K
IAordm9pZCB0ZXN0TXVsQXJnTmVnQXJnKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOworICAgIFZhbHVlKiBuZWdCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBOZWcs
IE9yaWdpbigpLCBhcmdCKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBuZWdCKTsKKyAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSAqICgtYikpOworfQorCit2b2lkIHRl
c3RNdWxOZWdBcmdBcmcoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ0EgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ0IgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
VmFsdWUqIG5lZ0EgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3JpZ2luKCks
IGFyZ0EpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE11bCwgT3JpZ2luKCksIG5lZ0EsIGFyZ0IpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhLCBiKSA9PSAoLWEpICogYik7Cit9CisKIHZvaWQgdGVzdE11bEFyZ0lt
bShpbnQ2NF90IGEsIGludDY0X3QgYikKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTIxODAs
NiArMjIzMiw0NSBAQCB2b2lkIHRlc3ROZWdWYWx1ZVN1Yk9uZTMyKGludCBhKQogICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAtYSAtIDEpOwogfQogCit2b2lkIHRlc3RO
ZWdNdWxBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGNvbnN0YW50ID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiBtdWwg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ3VtZW50LCBj
b25zdGFudCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTmVnLCBPcmlnaW4oKSwgbXVsKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGEpID09IC0oYSAqIGIpKTsKK30KKwordm9pZCB0ZXN0U3ViTXVsTXVsQXJn
cyhpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIC8vIFdlIHdhbnQgdG8g
Y2hlY2sgZXZlcnkgcG9zc2libGUgb3JkZXJpbmcgb2YgYXJndW1lbnRzICh0byBwcm9wZXJseSBj
aGVjayBldmVyeSBwYXRoIGluIEIzUmVkdWNlU3RyZW5ndGgpOgorICAgIC8vICgoYSAqIGIpIC0g
KGEgKiBjKSkKKyAgICAvLyAoKGEgKiBiKSAtIChjICogYSkpCisgICAgLy8gKChiICogYSkgLSAo
YSAqIGMpKQorICAgIC8vICgoYiAqIGEpIC0gKGMgKiBhKSkKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IDQ7ICsraSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGFyZ0EgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBhcmdCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICBWYWx1ZSogYXJnQyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIG11bEFCID0g
aSAmIDIgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFyZ0Es
IGFyZ0IpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBP
cmlnaW4oKSwgYXJnQiwgYXJnQSk7CisgICAgICAgIFZhbHVlKiBtdWxBQyA9IGkgJiAxID8gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBhcmdDKQorICAg
ICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFy
Z0MsIGFyZ0EpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1Yiwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgbXVsQUIsCisgICAgICAgICAgICAgICAgbXVsQUMp
KTsKKworICAgICAgICBDSEVDS19FUShjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIs
IGMpLCAoKGEgKiBiKSAtIChhICogYykpKTsKKyAgICB9Cit9CisKIHZvaWQgdGVzdFN1YkFyZ0Rv
dWJsZShkb3VibGUgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTE2OTM0LDYgKzE3MDI1
LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTl9CSU5BUlkodGVzdEFk
ZE5lZzIsIGludDMyT3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKICAgICBSVU4odGVzdEFk
ZEFyZ1plcm9JbW1aRGVmKCkpOwogICAgIFJVTih0ZXN0QWRkTG9hZFR3aWNlKCkpOworICAgIFJV
Tl9URVJOQVJZKHRlc3RBZGRNdWxNdWxBcmdzLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKIAogICAgIFJVTih0ZXN0QWRkQXJnRG91YmxlKE1fUEkp
KTsKICAgICBSVU4odGVzdEFkZEFyZ3NEb3VibGUoTV9QSSwgMSkpOwpAQCAtMTcwMTgsNiArMTcx
MTAsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RNdWxOZWdB
cmdzKCkpOwogICAgIFJVTih0ZXN0TXVsTmVnQXJnczMyKCkpOwogCisgICAgUlVOX0JJTkFSWSh0
ZXN0TXVsQXJnTmVnQXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkKKyAgICBS
VU5fQklOQVJZKHRlc3RNdWxOZWdBcmdBcmcsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5k
cygpKQogICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpKTsKICAgICBSVU5fQklOQVJZKHRlc3RNdWxBcmdzRG91YmxlLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigp
KTsKICAgICBSVU5fQklOQVJZKHRlc3RNdWxBcmdJbW1Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwpAQCAtMTcx
MDIsNiArMTcxOTYsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOX0JJ
TkFSWSh0ZXN0U3ViTmVnLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CiAgICAg
UlVOX0JJTkFSWSh0ZXN0TmVnU3ViLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7
CiAgICAgUlVOX1VOQVJZKHRlc3ROZWdWYWx1ZVN1Yk9uZSwgaW50MzJPcGVyYW5kcygpKTsKKyAg
ICBSVU5fQklOQVJZKHRlc3ROZWdNdWxBcmdJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVy
YW5kcygpKTsKKyAgICBSVU5fVEVSTkFSWSh0ZXN0U3ViTXVsTXVsQXJncywgaW50NjRPcGVyYW5k
cygpLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CiAKICAgICBSVU4odGVzdFN1
YkFyZ3MzMigxLCAxKSk7CiAgICAgUlVOKHRlc3RTdWJBcmdzMzIoMSwgMikpOwo=
</data>
<flag name="commit-queue"
          id="382708"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366326</attachid>
            <date>2019-03-29 16:41:57 -0700</date>
            <delta_ts>2019-03-29 17:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15168</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzNTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE5LTAzLTI5ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQjNSZWR1Y2VTdHJlbmd0aCBzaG91bGQga25vdyB0aGF0IE11bCBkaXN0cmlidXRlcyBv
dmVyIEFkZCBhbmQgU3ViCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTYzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KKwor
ICAgICAgICBJbiB0aGlzIHBhdGNoIEkgYWRkIHRoZSBmb2xsb3dpbmcgcGF0dGVybnMgdG8gQjNS
ZWR1Y2VTdHJlbmd0aDoKKyAgICAgICAgLSBUdXJuIHRoaXM6IEludGVnZXIgTmVnKE11bCh2YWx1
ZSwgYykpCisgICAgICAgICAgSW50byB0aGlzOiBNdWwodmFsdWUsIC1jKSwgYXMgbG9uZyBhcyAt
YyBkb2VzIG5vdCBvdmVyZmxvdworICAgICAgICAtIFR1cm4gdGhlc2U6IEludGVnZXIgTXVsKHZh
bHVlLCBOZWcob3RoZXJWYWx1ZSkpIGFuZCBJbnRlZ2VyIE11bChOZWcodmFsdWUpLCBvdGhlclZh
bHVlKQorICAgICAgICAgIEludG8gdGhpczogTmVnKE11bCh2YWx1ZSwgb3RoZXJWYWx1ZSkpCisg
ICAgICAgIC0gRm9yIE9wPT1BZGQgb3IgU3ViLCB0dXJuIGFueSBvZiB0aGVzZToKKyAgICAgICAg
ICAgICBPcChNdWwoeDEsIHgyKSwgTXVsKHgxLCB4MykpCisgICAgICAgICAgICAgT3AoTXVsKHgy
LCB4MSksIE11bCh4MSwgeDMpKQorICAgICAgICAgICAgIE9wKE11bCh4MSwgeDIpLCBNdWwoeDMs
IHgxKSkKKyAgICAgICAgICAgICBPcChNdWwoeDIsIHgxKSwgTXVsKHgzLCB4MSkpCisgICAgICAg
ICAgSW50byB0aGlzOiBNdWwoeDEsIE9wKHgyLCB4MykpCisKKyAgICAgICAgQWxzbyBpbmNsdWRl
cyBhIHRyaXZpYWwgY2hhbmdlOiBhIHNpbWlsYXIgcmVkdWN0aW9uIGZvciB0aGUgZGlzdHJpYnV0
aXZpdHkgb2YgQml0QW5kIG92ZXIgQml0T3IvQml0WG9yIG5vdworICAgICAgICBlbWl0cyB0aGUg
YXJndW1lbnRzIHRvIEJpdEFuZCBpbiB0aGUgb3RoZXIgb3JkZXIsIHRvIG1pbmltaXplIHRoZSBw
cm9iYWJpbGl0eSB0aGF0IHdlJ2xsIHNwZW5kIGEgZnVsbCBmaXhwb2ludCBzdGVwIGp1c3QgdG8g
ZmxpcCB0aGVtLgorCisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAg
ICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBZGRNdWxNdWxBcmdzKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdOZWdBcmcpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdE11bE5lZ0FyZ0FyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TmVnTXVsQXJnSW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdWJNdWxNdWxBcmdzKToKKyAgICAgICAgKEpTQzo6QjM6
OnJ1bik6CisKIDIwMTktMDMtMjcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgdmFsaWRhdGVPU1JFbnRyeVZhbHVlIHdpdGggSW50NTIgc2hvdWxkIGJveCB0aGUg
dmFsdWUgYmVpbmcgY2hlY2tlZCBpbnRvIGRvdWJsZSBmb3JtYXQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDI0MzU5NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VX
aXRoTmV3PFZhbHVlPihCaXRYb3IsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgw
KS0+Y2hpbGQoMSksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGhhbmRsZU11bERp
c3RyaWJ1dGl2aXR5KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBicmVhazsKQEAgLTY0NCw2ICs2NDcsOSBAQAogICAgICAgICAgICAg
ICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oQWRkLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92
YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
IChoYW5kbGVNdWxEaXN0cmlidXRpdml0eSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7CkBAIC02NjIsMTQgKzY2OCwzMCBA
QAogICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkt
PmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBJbnRlZ2VyIE5lZyhTdWIodmFsdWUs
IG90aGVyVmFsdWUpKQotICAgICAgICAgICAgLy8gSW50byB0aGlzOiBTdWIob3RoZXJWYWx1ZSwg
dmFsdWUpCi0gICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNJbnRlZ2VyKCkgJiYgbV92YWx1ZS0+
Y2hpbGQoMCktPm9wY29kZSgpID09IFN1YikgewotICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRo
TmV3PFZhbHVlPihTdWIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSksIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0ludGVnZXIoKSkgeworICAgICAgICAg
ICAgICAgIC8vIFR1cm4gdGhpczogSW50ZWdlciBOZWcoU3ViKHZhbHVlLCBvdGhlclZhbHVlKSkK
KyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IFN1YihvdGhlclZhbHVlLCB2YWx1ZSkKKyAg
ICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IFN1Yikgewor
ICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oU3ViLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEludGVnZXIgTmVnKE11bCh2YWx1ZSwg
YykpCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBNdWwodmFsdWUsIC1jKSwgYXMgbG9u
ZyBhcyAtYyBkb2VzIG5vdCBvdmVyZmxvdworICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+b3Bjb2RlKCkgPT0gTXVsICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKS0+
aGFzSW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBmYWN0b3IgPSBtX3ZhbHVl
LT5jaGlsZCgwKS0+Y2hpbGQoMSktPmFzSW50KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgJiYgZmFjdG9yICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1pbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3RmFj
dG9yID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0MzJWYWx1ZT4obV9pbmRleCwgbV92YWx1
ZS0+Y2hpbGQoMCktPmNoaWxkKDEpLT5vcmlnaW4oKSwgLWZhY3Rvcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsYWNlV2l0aE5ldzxWYWx1ZT4oTXVsLCBtX3ZhbHVlLT5vcmlnaW4oKSwg
bV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLCBuZXdGYWN0b3IpOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQ2NCAmJiBmYWN0b3IgIT0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlKiBuZXdGYWN0b3IgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVl
PihtX2luZGV4LCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSktPm9yaWdpbigpLCAtZmFjdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihNdWwsIG1f
dmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksIG5ld0ZhY3Rvcik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKKwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBNdWw6CkBAIC03MDIsMTMg
KzcyNCw5IEBACiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gVHVybiB0
aGlzOiBNdWwodmFsdWUsIC0xKQotICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogU3ViKDAs
IHZhbHVlKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogTmVnKHZhbHVlKQogICAgICAg
ICAgICAgICAgIGlmIChmYWN0b3IgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFj
ZVdpdGhOZXdWYWx1ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJvYy5hZGQ8VmFsdWU+
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YiwgbV92YWx1ZS0+b3JpZ2luKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3Rh
bnQobV9pbmRleCwgbV92YWx1ZSwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92
YWx1ZS0+Y2hpbGQoMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXc8VmFs
dWU+KE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApA
QCAtNzM0LDYgKzc1MiwyMyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAor
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzSW50ZWdlcigpKSB7CisgICAgICAgICAgICAgICAg
Ly8gVHVybiB0aGlzOiBJbnRlZ2VyIE11bCh2YWx1ZSwgTmVnKG90aGVyVmFsdWUpKQorICAgICAg
ICAgICAgICAgIC8vIEludG8gdGhpczogTmVnKE11bCh2YWx1ZSwgb3RoZXJWYWx1ZSkpCisgICAg
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBOZWcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld011bCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxW
YWx1ZT4obV9pbmRleCwgTXVsLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGxh
Y2VXaXRoTmV3PFZhbHVlPihOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBuZXdNdWwpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Ly8gVHVybiB0aGlzOiBJbnRlZ2VyIE11bChOZWcodmFsdWUpLCBvdGhlclZhbHVlKQorICAgICAg
ICAgICAgICAgIC8vIEludG8gdGhpczogTmVnKE11bCh2YWx1ZSwgdmFsdWUyKSkKKyAgICAgICAg
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IE5lZykgeworICAgICAg
ICAgICAgICAgICAgICBWYWx1ZSogbmV3TXVsID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVl
PihtX2luZGV4LCBNdWwsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdp
dGhOZXc8VmFsdWU+KE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG5ld011bCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBEaXY6CkBAIC0yMjk2LDYgKzIzMzEsNTMg
QEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIEZvciBPcD09QWRkIG9yIFN1YiwgdHVybiBh
bnkgb2YgdGhlc2U6CisgICAgLy8gICAgICBPcChNdWwoeDEsIHgyKSwgTXVsKHgxLCB4MykpCisg
ICAgLy8gICAgICBPcChNdWwoeDIsIHgxKSwgTXVsKHgxLCB4MykpCisgICAgLy8gICAgICBPcChN
dWwoeDEsIHgyKSwgTXVsKHgzLCB4MSkpCisgICAgLy8gICAgICBPcChNdWwoeDIsIHgxKSwgTXVs
KHgzLCB4MSkpCisgICAgLy8gSW50byB0aGlzOiBNdWwoeDEsIE9wKHgyLCB4MykpCisgICAgYm9v
bCBoYW5kbGVNdWxEaXN0cmlidXRpdml0eSgpCisgICAgeworICAgICAgICBBU1NFUlQobV92YWx1
ZS0+b3Bjb2RlKCkgPT0gQWRkIHx8IG1fdmFsdWUtPm9wY29kZSgpID09IFN1Yik7CisgICAgICAg
IFZhbHVlKiB4MSA9IG51bGxwdHI7CisgICAgICAgIFZhbHVlKiB4MiA9IG51bGxwdHI7CisgICAg
ICAgIFZhbHVlKiB4MyA9IG51bGxwdHI7CisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+
b3Bjb2RlKCkgPT0gTXVsICYmIG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBNdWwpIHsK
KyAgICAgICAgICAgIFZhbHVlKiB4MSA9IG51bGxwdHI7CisgICAgICAgICAgICBWYWx1ZSogeDIg
PSBudWxscHRyOworICAgICAgICAgICAgVmFsdWUqIHgzID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSktPmNo
aWxkKDApKSB7CisgICAgICAgICAgICAgICAgLy8gT3AoTXVsKHgxLCB4MiksIE11bCh4MSwgeDMp
KQorICAgICAgICAgICAgICAgIHgxID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApOworICAg
ICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpOworICAgICAgICAg
ICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDEpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkt
PmNoaWxkKDApKSB7CisgICAgICAgICAgICAgICAgLy8gT3AoTXVsKHgyLCB4MSksIE11bCh4MSwg
eDMpKQorICAgICAgICAgICAgICAgIHgxID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpOwor
ICAgICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApOworICAgICAg
ICAgICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDEpOworICAgICAgICAgICAg
fSBlbHNlIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQo
MSktPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgLy8gT3AoTXVsKHgxLCB4MiksIE11bCh4
MywgeDEpKQorICAgICAgICAgICAgICAgIHgxID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDAp
OworICAgICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpOworICAg
ICAgICAgICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDApOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSkgPT0gbV92YWx1ZS0+Y2hp
bGQoMSktPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgLy8gT3AoTXVsKHgyLCB4MSksIE11
bCh4MywgeDEpKQorICAgICAgICAgICAgICAgIHgxID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxk
KDEpOworICAgICAgICAgICAgICAgIHgyID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApOwor
ICAgICAgICAgICAgICAgIHgzID0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh4MSAhPSBudWxscHRyKSB7CisgICAgICAg
ICAgICBBU1NFUlQoeDIgIT0gbnVsbHB0ciAmJiB4MyAhPSBudWxscHRyKTsKKyAgICAgICAgICAg
IFZhbHVlKiBuZXdPcCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgbV92
YWx1ZS0+b3Bjb2RlKCksIG1fdmFsdWUtPm9yaWdpbigpLCB4MiwgeDMpOworICAgICAgICAgICAg
cmVwbGFjZVdpdGhOZXc8VmFsdWU+KE11bCwgbV92YWx1ZS0+b3JpZ2luKCksIHgxLCBuZXdPcCk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgLy8gRm9yIE9wPT1CaXRPciBvciBCaXRYb3IsIHR1cm4gYW55IG9m
IHRoZXNlOgogICAgIC8vICAgICAgT3AoQml0QW5kKHgxLCB4MiksIEJpdEFuZCh4MSwgeDMpKQog
ICAgIC8vICAgICAgT3AoQml0QW5kKHgyLCB4MSksIEJpdEFuZCh4MSwgeDMpKQpAQCAtMjM1NCw3
ICsyNDM2LDcgQEAKICAgICAgICAgaWYgKHgxICE9IG51bGxwdHIpIHsKICAgICAgICAgICAgIEFT
U0VSVCh4MiAhPSBudWxscHRyICYmIHgzICE9IG51bGxwdHIpOwogICAgICAgICAgICAgVmFsdWUq
IGJpdE9wID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBtX3ZhbHVlLT5v
cGNvZGUoKSwgbV92YWx1ZS0+b3JpZ2luKCksIHgyLCB4Myk7Ci0gICAgICAgICAgICByZXBsYWNl
V2l0aE5ldzxWYWx1ZT4oQml0QW5kLCBtX3ZhbHVlLT5vcmlnaW4oKSwgYml0T3AsIHgxKTsKKyAg
ICAgICAgICAgIHJlcGxhY2VXaXRoTmV3PFZhbHVlPihCaXRBbmQsIG1fdmFsdWUtPm9yaWdpbigp
LCB4MSwgYml0T3ApOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJl
dmlzaW9uIDI0MzU5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04OTEsNiArODkxLDMyIEBACiAgICAgQ0hFQ0soaXNJZGVudGljYWwo
ZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkp
OwogfQogCit2b2lkIHRlc3RBZGRNdWxNdWxBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2
NF90IGMpCit7CisgICAgLy8gV2Ugd2FudCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBvcmRlcmlu
ZyBvZiBhcmd1bWVudHMgKHRvIHByb3Blcmx5IGNoZWNrIGV2ZXJ5IHBhdGggaW4gQjNSZWR1Y2VT
dHJlbmd0aCk6CisgICAgLy8gKChhICogYikgKyAoYSAqIGMpKQorICAgIC8vICgoYSAqIGIpICsg
KGMgKiBhKSkKKyAgICAvLyAoKGIgKiBhKSArIChhICogYykpCisgICAgLy8gKChiICogYSkgKyAo
YyAqIGEpKQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGFy
Z0IgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIFZhbHVlKiBhcmdDID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOworICAgICAgICBWYWx1ZSogbXVsQUIgPSBpICYgMiA/IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgYXJnQikKKyAgICAgICAgICAgIDogcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdCLCBhcmdBKTsKKyAgICAg
ICAgVmFsdWUqIG11bEFDID0gaSAmIDEgPyByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIGFyZ0EsIGFyZ0MpCisgICAgICAgICAgICA6IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQywgYXJnQSk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBt
dWxBQiwKKyAgICAgICAgICAgICAgICBtdWxBQykpOworCisgICAgICAgIENIRUNLX0VRKGNvbXBp
bGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYiwgYyksICgoYSAqIGIpICsgKGEgKiBjKSkpOwor
ICAgIH0KK30KKwogdm9pZCB0ZXN0TXVsQXJnKGludCBhKQogewogICAgIFByb2NlZHVyZSBwcm9j
OwpAQCAtOTYzLDYgKzk4OSwzMiBAQAogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCBhLCBiKSA9PSBhICogYik7CiB9CiAKK3ZvaWQgdGVzdE11bEFyZ05lZ0FyZyhpbnQgYSwgaW50
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnQSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1
ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogbmVnQiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgTmVnLCBPcmlnaW4oKSwgYXJnQik7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgbmVn
Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IGEg
KiAoLWIpKTsKK30KKwordm9pZCB0ZXN0TXVsTmVnQXJnQXJnKGludCBhLCBpbnQgYikKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmdCID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgIFZhbHVlKiBuZWdBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBOZWcsIE9yaWdpbigpLCBhcmdBKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuZWdBLCBhcmdCKTsKKyAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gKC1hKSAqIGIpOwor
fQorCiB2b2lkIHRlc3RNdWxBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCiB7CiAgICAgUHJv
Y2VkdXJlIHByb2M7CkBAIC0yMTgwLDYgKzIyMzIsNDUgQEAKICAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludD4ocHJvYywgYSkgPT0gLWEgLSAxKTsKIH0KIAordm9pZCB0ZXN0TmVnTXVsQXJnSW1t
KGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFZhbHVlKiBjb25zdGFudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSogbXVsID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmd1bWVudCwgY29uc3RhbnQpOwor
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE5lZywgT3Jp
Z2luKCksIG11bCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
LCBhKSA9PSAtKGEgKiBiKSk7Cit9CisKK3ZvaWQgdGVzdFN1Yk11bE11bEFyZ3MoaW50NjRfdCBh
LCBpbnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICAvLyBXZSB3YW50IHRvIGNoZWNrIGV2ZXJ5
IHBvc3NpYmxlIG9yZGVyaW5nIG9mIGFyZ3VtZW50cyAodG8gcHJvcGVybHkgY2hlY2sgZXZlcnkg
cGF0aCBpbiBCM1JlZHVjZVN0cmVuZ3RoKToKKyAgICAvLyAoKGEgKiBiKSAtIChhICogYykpCisg
ICAgLy8gKChhICogYikgLSAoYyAqIGEpKQorICAgIC8vICgoYiAqIGEpIC0gKGEgKiBjKSkKKyAg
ICAvLyAoKGIgKiBhKSAtIChjICogYSkpCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kp
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmdBID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgICAgICBWYWx1ZSogYXJnQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIGFy
Z0MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIFZhbHVlKiBtdWxBQiA9IGkgJiAyID8gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdBLCBhcmdCKQorICAg
ICAgICAgICAgOiByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFy
Z0IsIGFyZ0EpOworICAgICAgICBWYWx1ZSogbXVsQUMgPSBpICYgMSA/IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnQSwgYXJnQykKKyAgICAgICAgICAgIDog
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhcmdDLCBhcmdBKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIG11bEFCLAorICAgICAgICAgICAgICAgIG11bEFDKSk7CisKKyAgICAg
ICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhLCBiLCBjKSwgKChhICog
YikgLSAoYSAqIGMpKSk7CisgICAgfQorfQorCiB2b2lkIHRlc3RTdWJBcmdEb3VibGUoZG91Ymxl
IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xNjkzNCw2ICsxNzAyNSw3IEBACiAgICAg
UlVOX0JJTkFSWSh0ZXN0QWRkTmVnMiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkp
OwogICAgIFJVTih0ZXN0QWRkQXJnWmVyb0ltbVpEZWYoKSk7CiAgICAgUlVOKHRlc3RBZGRMb2Fk
VHdpY2UoKSk7CisgICAgUlVOX1RFUk5BUlkodGVzdEFkZE11bE11bEFyZ3MsIGludDY0T3BlcmFu
ZHMoKSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogCiAgICAgUlVOKHRlc3RB
ZGRBcmdEb3VibGUoTV9QSSkpOwogICAgIFJVTih0ZXN0QWRkQXJnc0RvdWJsZShNX1BJLCAxKSk7
CkBAIC0xNzAxOCw2ICsxNzExMCw4IEBACiAgICAgUlVOKHRlc3RNdWxOZWdBcmdzKCkpOwogICAg
IFJVTih0ZXN0TXVsTmVnQXJnczMyKCkpOwogCisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnTmVn
QXJnLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSkKKyAgICBSVU5fQklOQVJZKHRl
c3RNdWxOZWdBcmdBcmcsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKQogICAgIFJV
Tl9VTkFSWSh0ZXN0TXVsQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigp
KTsKICAgICBSVU5fQklOQVJZKHRlc3RNdWxBcmdzRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICBSVU5f
QklOQVJZKHRlc3RNdWxBcmdJbW1Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+
KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwpAQCAtMTcxMDIsNiArMTcxOTYs
OCBAQAogICAgIFJVTl9CSU5BUlkodGVzdFN1Yk5lZywgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9w
ZXJhbmRzKCkpOwogICAgIFJVTl9CSU5BUlkodGVzdE5lZ1N1YiwgaW50MzJPcGVyYW5kcygpLCBp
bnQzMk9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0TmVnVmFsdWVTdWJPbmUsIGludDMy
T3BlcmFuZHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TmVnTXVsQXJnSW1tLCBpbnQ2NE9wZXJh
bmRzKCksIGludDY0T3BlcmFuZHMoKSk7CisgICAgUlVOX1RFUk5BUlkodGVzdFN1Yk11bE11bEFy
Z3MsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwog
CiAgICAgUlVOKHRlc3RTdWJBcmdzMzIoMSwgMSkpOwogICAgIFJVTih0ZXN0U3ViQXJnczMyKDEs
IDIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366767</attachid>
            <date>2019-04-04 16:13:03 -0700</date>
            <delta_ts>2019-04-04 17:08:37 -0700</delta_ts>
            <desc>PatchForFix</desc>
            <filename>patch_fix196325</filename>
            <type>text/plain</type>
            <size>1472</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNkNjU0YTEyZDJjLi4wMDE2MDFjMmU0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDQtMDQgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBCM1JlZHVjZVN0cmVu
Z3RoIHNob3VsZCBrbm93IHRoYXQgTXVsIGRpc3RyaWJ1dGVzIG92ZXIgQWRkIGFuZCBTdWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjMyNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDk0NDE2NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHNvbWUgb2J2aW91c2x5IHdyb25nIGNvZGUgdGhh
dCB3YXMgZHVlIHRvIGFuIGFjY2lkZW50YWwgY29weS1wYXN0ZS4KKyAgICAgICAgSXQgbWFkZSB0
aGUgZW50aXJlIG9wdGltaXphdGlvbiBkZWFkIGNvZGUgdGhhdCBuZXZlciByYW4uCisKKyAgICAg
ICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKwogMjAxOS0wNC0wNCAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggZm9y
IENMb29wIGFmdGVyIHIyNDM4ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAppbmRleCA5ZTYyMTU5NDJmMy4uN2UyMmMyOWQ2ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTIzNDUsOSArMjM0
NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbHVlKiB4MiA9IG51bGxwdHI7CiAgICAgICAgIFZh
bHVlKiB4MyA9IG51bGxwdHI7CiAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2Rl
KCkgPT0gTXVsICYmIG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBNdWwpIHsKLSAgICAg
ICAgICAgIFZhbHVlKiB4MSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBWYWx1ZSogeDIgPSBudWxs
cHRyOwotICAgICAgICAgICAgVmFsdWUqIHgzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDAp
KSB7CiAgICAgICAgICAgICAgICAgLy8gT3AoTXVsKHgxLCB4MiksIE11bCh4MSwgeDMpKQogICAg
ICAgICAgICAgICAgIHgxID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>