<?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>206436</bug_id>
          
          <creation_ts>2020-01-17 13:01:12 -0800</creation_ts>
          <short_desc>Air O0 should have better stack allocation</short_desc>
          <delta_ts>2020-04-20 00:08:35 -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=206477</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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>joeykrug</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kepounce</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipp.gloor</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608158</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 13:01:12 -0800</bug_when>
    <thetext>We already have liveness, so using it for a simple stack allocator should be easy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608159</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 13:01:46 -0800</bug_when>
    <thetext>This fixes our Wasm stack overflow issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608161</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 13:01:59 -0800</bug_when>
    <thetext>*** Bug 201026 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608163</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 13:02:08 -0800</bug_when>
    <thetext>*** Bug 200918 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608182</commentid>
    <comment_count>4</comment_count>
      <attachid>388084</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 13:42:57 -0800</bug_when>
    <thetext>Created attachment 388084
patch

I just need to adjust my stack limit test since we change stack size in our tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608205</commentid>
    <comment_count>5</comment_count>
      <attachid>388090</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 14:31:57 -0800</bug_when>
    <thetext>Created attachment 388090
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608208</commentid>
    <comment_count>6</comment_count>
      <attachid>388091</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 14:33:45 -0800</bug_when>
    <thetext>Created attachment 388091
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608209</commentid>
    <comment_count>7</comment_count>
      <attachid>388091</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 14:35:06 -0800</bug_when>
    <thetext>Comment on attachment 388091
patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        code creating huge stack frames and causing simple Wasm code to stack

I&apos;ll fix
&quot;and causing&quot; =&gt; &quot;was causing&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608213</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 14:48:29 -0800</bug_when>
    <thetext>*** Bug 206419 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608222</commentid>
    <comment_count>9</comment_count>
      <attachid>388091</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-01-17 15:06:10 -0800</bug_when>
    <thetext>Comment on attachment 388091
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608323</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-17 17:29:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/58702105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608325</commentid>
    <comment_count>11</comment_count>
      <attachid>388122</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-17 17:30:41 -0800</bug_when>
    <thetext>Created attachment 388122
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608354</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-17 19:24:02 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388122:

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

Clearing flags on attachment: 388122

Committed r254788: &lt;https://trac.webkit.org/changeset/254788&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608356</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-17 19:24:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608783</commentid>
    <comment_count>15</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-01-20 09:12:55 -0800</bug_when>
    <thetext>&gt; Committed r254788: &lt;https://trac.webkit.org/changeset/254788&gt;
This seems to have broken 6 JSC tests, as also indicated by EWS.

JSC stress test failures: 
- mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla
- mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-baseline
- mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-no-ftl
- mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-llint
- mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-dfg-eager-no-cjit-validate-phases
- mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-ftl-eager-no-cjit-validate-phases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608799</commentid>
    <comment_count>16</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-20 10:37:21 -0800</bug_when>
    <thetext>(In reply to Aakash Jain from comment #15)
&gt; &gt; Committed r254788: &lt;https://trac.webkit.org/changeset/254788&gt;
&gt; This seems to have broken 6 JSC tests, as also indicated by EWS.
&gt; 
&gt; JSC stress test failures: 
&gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla
&gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-baseline
&gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-no-ftl
&gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-llint
&gt; -
&gt; mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-dfg-eager-no-cjit-
&gt; validate-phases
&gt; -
&gt; mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-ftl-eager-no-cjit-
&gt; validate-phases

This seems super unlikely. These aren&apos;t wasm tests, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608800</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-20 10:41:31 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #16)
&gt; (In reply to Aakash Jain from comment #15)
&gt; &gt; &gt; Committed r254788: &lt;https://trac.webkit.org/changeset/254788&gt;
&gt; &gt; This seems to have broken 6 JSC tests, as also indicated by EWS.
&gt; &gt; 
&gt; &gt; JSC stress test failures: 
&gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla
&gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-baseline
&gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-no-ftl
&gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-llint
&gt; &gt; -
&gt; &gt; mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-dfg-eager-no-cjit-
&gt; &gt; validate-phases
&gt; &gt; -
&gt; &gt; mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-ftl-eager-no-cjit-
&gt; &gt; validate-phases
&gt; 
&gt; This seems super unlikely. These aren&apos;t wasm tests, right?

Also, a lot of these tests can&apos;t even hit this code path. Are you sure it wasn&apos;t a patch before mine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608801</commentid>
    <comment_count>18</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-20 10:43:43 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #17)
&gt; (In reply to Saam Barati from comment #16)
&gt; &gt; (In reply to Aakash Jain from comment #15)
&gt; &gt; &gt; &gt; Committed r254788: &lt;https://trac.webkit.org/changeset/254788&gt;
&gt; &gt; &gt; This seems to have broken 6 JSC tests, as also indicated by EWS.
&gt; &gt; &gt; 
&gt; &gt; &gt; JSC stress test failures: 
&gt; &gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla
&gt; &gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-baseline
&gt; &gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-no-ftl
&gt; &gt; &gt; - mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-llint
&gt; &gt; &gt; -
&gt; &gt; &gt; mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-dfg-eager-no-cjit-
&gt; &gt; &gt; validate-phases
&gt; &gt; &gt; -
&gt; &gt; &gt; mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-ftl-eager-no-cjit-
&gt; &gt; &gt; validate-phases
&gt; &gt; 
&gt; &gt; This seems super unlikely. These aren&apos;t wasm tests, right?
&gt; 
&gt; Also, a lot of these tests can&apos;t even hit this code path. Are you sure it
&gt; wasn&apos;t a patch before mine?

Ugh, maybe it was my use of &quot;requireOptions&quot;. I wonder if we forgot to clear that value and then we end up running this test with a super small stack height.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608802</commentid>
    <comment_count>19</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-01-20 10:47:08 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #17)
&gt; Also, a lot of these tests can&apos;t even hit this code path. Are you sure it wasn&apos;t a patch before mine?
r254787 passed in https://build.webkit.org/builders/Apple-Catalina-Release-JSC-Tests/builds/145

254788 failed in https://build.webkit.org/builders/Apple-Catalina-Release-JSC-Tests/builds/146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608803</commentid>
    <comment_count>20</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-01-20 10:48:17 -0800</bug_when>
    <thetext>From https://build.webkit.org/builders/Apple-Catalina-Release-JSC-Tests/builds/146/steps/jscore-test/logs/stdio

mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-no-ftl: Exception: RangeError: Maximum call stack size exceeded.

mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-llint: Exception: RangeError: Maximum call stack size exceeded.

mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-baseline: Exception: RangeError: Maximum call stack size exceeded.

mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-dfg-eager-no-cjit-validate-phases: Exception: RangeError: Maximum call stack size exceeded.

mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla-ftl-eager-no-cjit-validate-phases: Exception: RangeError: Maximum call stack size exceeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608836</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-20 12:52:17 -0800</bug_when>
    <thetext>The regression is tracked in bug 206477.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612808</commentid>
    <comment_count>22</comment_count>
    <who name="Joey Krug">joeykrug</who>
    <bug_when>2020-01-29 18:55:25 -0800</bug_when>
    <thetext>Noticed this is still happening, getting RangeError: Maximum call stack size exceeded. upon instantiation of WASM code. If I refresh, it tends to fix it, but only if I refresh things. On older safari (13.0) it doesn&apos;t work at all, so this is an improvement, but it doesn&apos;t seem to be totally fixed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388084</attachid>
            <date>2020-01-17 13:42:57 -0800</date>
            <delta_ts>2020-01-17 14:31:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>12134</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQ3NjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTAxLTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEFpciBPMCBzaG91bGQgaGF2ZSBiZXR0ZXIgc3RhY2sgYWxsb2NhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNt
L3N0cmVzcy9kb250LXN0YWNrLW92ZXJmbG93LWluLWFpci5qczogQWRkZWQuCisKIDIwMjAtMDEt
MTcgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEpT
T04ucGFyc2Ugc2hvdWxkIGxvb2t1cCBwcm90b3R5cGUgY2hhaW5zIGR1cmluZyByZXZpdmFsCklu
ZGV4OiBKU1Rlc3RzL3dhc20vc3RyZXNzL2RvbnQtc3RhY2stb3ZlcmZsb3ctaW4tYWlyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvd2FzbS9zdHJlc3MvZG9udC1zdGFjay1vdmVyZmxvdy1pbi1h
aXIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy93YXNtL3N0cmVzcy9kb250LXN0YWNrLW92
ZXJmbG93LWluLWFpci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQg
QnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4u
L2Fzc2VydC5qcycKKworeworICAgIGNvbnN0IGxvY2FscyA9IFtdOworICAgIGNvbnN0IG51bUxv
Y2FscyA9IDEwMDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Mb2NhbHM7ICsraSkKKyAg
ICAgICAgbG9jYWxzW2ldID0gImY2NCI7CisKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsK
KyAgICBiLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAu
RXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigidGVzdCIpCisgICAgICAgIC5FbmQoKQor
ICAgICAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbigidGVzdCIsIHsgcGFyYW1zOiBbImkz
MiJdLCByZXQ6ICJ2b2lkIiB9LCBsb2NhbHMpCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAg
IC5CcklmKDApCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5JMzJDb25z
dCgxKQorICAgICAgICAgICAgLkkzMlN1YigpCisgICAgICAgICAgICAuQ2FsbCgwKQorICAgICAg
ICAuRW5kKCkKKyAgICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJs
eSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUp
OworCisgICAgLy8gVGhpcyBzaG91bGQgbm90IHN0YWNrIG92ZXJmbG93CisgICAgaW5zdGFuY2Uu
ZXhwb3J0cy50ZXN0KDI3NSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1NDcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMS0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBaXIgTzAgc2hvdWxkIGhhdmUgYmV0dGVyIHN0YWNrIGFs
bG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBzdGFjayBzbG90IGFsbG9jYXRvciB0byBBaXIgTzAg
dG8gYWRkcmVzcyB0aGF0CisgICAgICAgIGNvZGUgY3JlYXRpbmcgaHVnZSBzdGFjayBmcmFtZXMg
YW5kIGNhdXNpbmcgc2ltcGxlIFdhc20gY29kZSB0byBzdGFjaworICAgICAgICBvdmVyZmxvdy4g
QmVmb3JlLCBlYWNoIFRtcCBnb3QgaXRzIG93biBzdGFjayBzbG90LiBUaGlzIHdvcmtzIHNpbWls
YXIKKyAgICAgICAgdG8gdGhlIHJlZ2lzdGVyIGFsbG9jYXRvci4gVGhpcyBzdGFjayBhbGxvY2F0
b3IgbGluZWFyaXplcyB0aGUgcHJvZ3JhbQorICAgICAgICBhbmQgdXNlcyBsaXZlIHJhbmdlIGVu
ZCBhcyBhbiBvcHBvcnR1bml0eSB0byBwbGFjZSB0aGUgc3RhY2sgc2xvdAorICAgICAgICBvbiBh
IGZyZWUgbGlzdCBvZiBzdGFjayBzbG90cy4gVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGFuIGlzc3Vl
IGluIG91cgorICAgICAgICBsaW5lYXJpemF0aW9uIGNvZGUgd2hlcmUgdGhlIGhlYWQgb2YgYSBi
bG9jayBhbmQgdGhlIHRhaWwgb2YgYW5vdGhlcgorICAgICAgICBibG9jayB3b3VsZCBzaGFyZSB0
aGUgc2FtZSBsaW5lYXJpemF0aW9uIGluZGV4LiBUaGlzIGRpZG4ndCBtYXR0ZXIKKyAgICAgICAg
Zm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24sIGJ1dCBkb2VzIG1hdHRlciBmb3IgdGhlIHN0YWNrIGFs
bG9jYXRvci4gU28KKyAgICAgICAgImxpdmUgYXQgaGVhZCIsIGFuZCAibGl2ZSBhdCB0YWlsIiBu
b3cgZ2V0IHRoZWlyIG93biBsaW5lYXJpemF0aW9uIGluZGV4LgorCisgICAgICAgICogYjMvYWly
L0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpidWlsZExpdmVS
YW5nZXMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0
ZXJzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9haXIvQWly
QWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5oOgorICAgICAgICAqIGIz
L2Fpci9BaXJMaXZlbmVzcy5oOgorCiAyMDIwLTAxLTE2ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jp
c3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBE
RkdTbG93UGF0aEdlbmVyYXRvci5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNB
bmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJKHJldmlzaW9uIDI1NDcxMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVy
YXRlQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBHZW5lcmF0
ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpidWlsZAogICAgICAgICAgICAgaWYgKCF0bXAuaXNSZWco
KSkKICAgICAgICAgICAgICAgICBtX2xpdmVSYW5nZUVuZFt0bXBdID0gbV9nbG9iYWxJbnN0SW5k
ZXg7CiAgICAgICAgIH0KKyAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKICAgICAgICAgZm9y
IChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CiAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0
KFsmXSAoVG1wIHRtcCkgewogICAgICAgICAgICAgICAgIGlmICghdG1wLmlzUmVnKCkpCkBAIC05
NSw2ICs5Niw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6YnVpbGQKICAg
ICAgICAgICAgIGlmICghdG1wLmlzUmVnKCkpCiAgICAgICAgICAgICAgICAgbV9saXZlUmFuZ2VF
bmRbdG1wXSA9IG1fZ2xvYmFsSW5zdEluZGV4OwogICAgICAgICB9CisgICAgICAgICsrbV9nbG9i
YWxJbnN0SW5kZXg7CiAgICAgfQogfQogCkBAIC0yODAsMjEgKzI4Miw3NCBAQCB2b2lkIEdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMobV9j
b2RlLCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICBhbGxvY2F0ZUVz
Y2FwZWRTdGFja1Nsb3RzKG1fY29kZSk7CiAKLSAgICAvLyBFYWNoIFRtcCBnZXRzIGl0cyBvd24g
c3RhY2sgc2xvdC4KLSAgICBhdXRvIGNyZWF0ZVN0YWNrU2xvdCA9IFsmXSAoY29uc3QgVG1wJiB0
bXApIHsKLSAgICAgICAgVG1wRGF0YSBkYXRhOwotICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1f
Y29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwpOwotICAgICAgICBkYXRh
LnJlZyA9IFJlZygpOwotICAgICAgICBtX21hcFt0bXBdID0gZGF0YTsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgICAgICBtX2FsbFRtcHNbdG1wLmJhbmsoKV0uYXBwZW5kKHRtcCk7Ci0jZW5kaWYK
LSAgICB9OworICAgIGluc2VydEJsb2Nrc0ZvckZsdXNoQWZ0ZXJUZXJtaW5hbFBhdGNocG9pbnRz
KCk7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY29kZS5mb3JFYWNoVG1wKFsmXSAoVG1w
IHRtcCkgewogICAgICAgICBBU1NFUlQoIXRtcC5pc1JlZygpKTsKLSAgICAgICAgY3JlYXRlU3Rh
Y2tTbG90KHRtcCk7CisgICAgICAgIG1fYWxsVG1wc1t0bXAuYmFuaygpXS5hcHBlbmQodG1wKTsK
ICAgICB9KTsKKyNlbmRpZgorCisgICAgbV9saXZlbmVzcyA9IG1ha2VVbmlxdWU8VW5pZmllZFRt
cExpdmVuZXNzPihtX2NvZGUpOworCisgICAgeworICAgICAgICBidWlsZExpdmVSYW5nZXMoKm1f
bGl2ZW5lc3MpOworCisgICAgICAgIFZlY3RvcjxTdGFja1Nsb3QqLCAxNj4gZnJlZVNsb3RzOwor
ICAgICAgICBWZWN0b3I8U3RhY2tTbG90KiwgND4gdG9GcmVlOworICAgICAgICBtX2dsb2JhbElu
c3RJbmRleCA9IDA7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsK
KyAgICAgICAgICAgIGF1dG8gYXNzaWduU3RhY2tTbG90VG9UbXAgPSBbJl0gKFRtcCB0bXApIHsK
KyAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIFRtcERhdGEmIGRhdGEgPSBtX21hcFt0bXBdOworICAg
ICAgICAgICAgICAgIGlmIChkYXRhLnNwaWxsU2xvdCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAobV9saXZlUmFuZ2VFbmRbdG1wXSA9PSBtX2dsb2JhbEluc3RJbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRvRnJlZS5hcHBlbmQoZGF0YS5zcGlsbFNsb3QpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KGZyZWVTbG90cy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0g
ZnJlZVNsb3RzLnRha2VMYXN0KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90
S2luZDo6U3BpbGwpOworICAgICAgICAgICAgICAgIGRhdGEucmVnID0gUmVnKCk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICBhdXRvIGZsdXNoVG9GcmVlTGlzdCA9IFsmXSB7CisgICAg
ICAgICAgICAgICAgZm9yIChhdXRvKiBzdGFja1Nsb3QgOiB0b0ZyZWUpCisgICAgICAgICAgICAg
ICAgICAgIGZyZWVTbG90cy5hcHBlbmQoc3RhY2tTbG90KTsKKyAgICAgICAgICAgICAgICB0b0Zy
ZWUuY2xlYXIoKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGZvciAoVG1wIHRtcCA6
IG1fbGl2ZW5lc3MtPmxpdmVBdEhlYWQoYmxvY2spKQorICAgICAgICAgICAgICAgIGFzc2lnblN0
YWNrU2xvdFRvVG1wKHRtcCk7CisgICAgICAgICAgICBmbHVzaFRvRnJlZUxpc3QoKTsKKworICAg
ICAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKKworICAgICAgICAgICAgZm9yIChJbnN0JiBp
bnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPFRtcCwgND4gc2VlblRtcHM7
CisgICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wRmFzdChbJl0gKFRtcCB0bXApIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNlZW5UbXBzLmNvbnRhaW5zKHRtcCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHNlZW5UbXBzLmFwcGVu
ZCh0bXApOworICAgICAgICAgICAgICAgICAgICBhc3NpZ25TdGFja1Nsb3RUb1RtcCh0bXApOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZmx1c2hUb0ZyZWVMaXN0KCk7
CisgICAgICAgICAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbV9saXZlbmVzcy0+bGl2ZUF0VGFpbChibG9jaykp
CisgICAgICAgICAgICAgICAgYXNzaWduU3RhY2tTbG90VG9UbXAodG1wKTsKKyAgICAgICAgICAg
IGZsdXNoVG9GcmVlTGlzdCgpOworCisgICAgICAgICAgICArK21fZ2xvYmFsSW5zdEluZGV4Owor
ICAgICAgICB9CisgICAgfSAKIAogICAgIG1fYWxsb3dlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
KCk7CiAKQEAgLTMwMyw3ICszNTgsOSBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM6OnByZXBhCiAKICAgICAgICAgZm9yIChSZWcgcmVnIDogbV9yZWdpc3RlcnNbYmFua10pIHsK
ICAgICAgICAgICAgIG1fYWxsb3dlZFJlZ2lzdGVycy5zZXQocmVnKTsKLSAgICAgICAgICAgIGNy
ZWF0ZVN0YWNrU2xvdChUbXAocmVnKSk7CisgICAgICAgICAgICBUbXBEYXRhJiBkYXRhID0gbV9t
YXBbVG1wKHJlZyldOworICAgICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBtX2NvZGUuYWRkU3Rh
Y2tTbG90KDgsIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgIGRhdGEucmVnID0g
UmVnKCk7CiAgICAgICAgIH0KICAgICB9KTsKIApAQCAtMzIzLDExICszODAsMzcgQEAgdm9pZCBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpwcmVwYQogCiAgICAgbG93ZXJTdGFja0FyZ3Mo
bV9jb2RlKTsKIAotICAgIC8vIFZlcmlmeSBub25lIG9mIHRoZXNlIHBhc3NlcyBhZGQgYW55IHRt
cHMuCiAjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAvLyBWZXJpZnkgbm9uZSBvZiB0aGVzZSBwYXNz
ZXMgYWRkIGFueSB0bXBzLgogICAgIGZvckVhY2hCYW5rKFsmXSAoQmFuayBiYW5rKSB7Ci0gICAg
ICAgIEFTU0VSVChtX2FsbFRtcHNbYmFua10uc2l6ZSgpIC0gbV9yZWdpc3RlcnNbYmFua10uc2l6
ZSgpID09IG1fY29kZS5udW1UbXBzKGJhbmspKTsKKyAgICAgICAgQVNTRVJUKG1fYWxsVG1wc1ti
YW5rXS5zaXplKCkgPT0gbV9jb2RlLm51bVRtcHMoYmFuaykpOwogICAgIH0pOworCisgICAgewor
ICAgICAgICAvLyBWZXJpZnkgdGhhdCBsb3dlclN0YWNrQXJncyBkaWRuJ3QgY2hhbmdlIFRtcCBs
aXZlbmVzcyBhdCB0aGUgYm91bmRhcmllcyBmb3IgdGhlIFRtcHMgYW5kIFJlZ2lzdGVycyB3ZSBt
b2RlbC4KKyAgICAgICAgVW5pZmllZFRtcExpdmVuZXNzIGxpdmVuZXNzKG1fY29kZSk7CisgICAg
ICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsKKyAgICAgICAgICAgIGF1dG8g
YXNzZXJ0TGl2ZW5lc3NBcmVFcXVhbCA9IFsmXSAoYXV0byBhLCBhdXRvIGIpIHsKKyAgICAgICAg
ICAgICAgICBIYXNoU2V0PFRtcD4gbGl2ZW5lc3NBOworICAgICAgICAgICAgICAgIEhhc2hTZXQ8
VG1wPiBsaXZlbmVzc0I7CisgICAgICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogYSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkgJiYgaXNEaXNhbGxvd2VkUmVnaXN0ZXIo
dG1wLnJlZygpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICBsaXZlbmVzc0EuYWRkKHRtcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGZvciAoVG1wIHRtcCA6IGIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRt
cC5pc1JlZygpICYmIGlzRGlzYWxsb3dlZFJlZ2lzdGVyKHRtcC5yZWcoKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NCLmFk
ZCh0bXApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEFTU0VSVChsaXZl
bmVzc0EgPT0gbGl2ZW5lc3NCKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGFzc2Vy
dExpdmVuZXNzQXJlRXF1YWwobV9saXZlbmVzcy0+bGl2ZUF0SGVhZChibG9jayksIGxpdmVuZXNz
LmxpdmVBdEhlYWQoYmxvY2spKTsKKyAgICAgICAgICAgIGFzc2VydExpdmVuZXNzQXJlRXF1YWwo
bV9saXZlbmVzcy0+bGl2ZUF0VGFpbChibG9jayksIGxpdmVuZXNzLmxpdmVBdFRhaWwoYmxvY2sp
KTsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZgogfQogCkBAIC0zMzcsMTIgKzQyMCw5IEBAIHZv
aWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXIKIAogICAgIFRpbWluZ1Njb3Bl
IHRpbWluZ1Njb3BlKCJBaXI6OmdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMiKTsKIAotICAg
IGluc2VydEJsb2Nrc0ZvckZsdXNoQWZ0ZXJUZXJtaW5hbFBhdGNocG9pbnRzKCk7Ci0KICAgICBE
aXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgZGlzYWxsb3dTY3JhdGNoKCptX2ppdCk7
CiAKLSAgICBVbmlmaWVkVG1wTGl2ZW5lc3MgbGl2ZW5lc3MobV9jb2RlKTsKLSAgICBidWlsZExp
dmVSYW5nZXMobGl2ZW5lc3MpOworICAgIGJ1aWxkTGl2ZVJhbmdlcygqbV9saXZlbmVzcyk7CiAK
ICAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgSW5kZXhNYXA8UmVnLCBUbXA+PiBjdXJyZW50QWxs
b2NhdGlvbk1hcChtX2NvZGUuc2l6ZSgpKTsKICAgICB7CkBAIC0zNTUsNyArNDM1LDcgQEAgdm9p
ZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fY29kZS5udW1FbnRyeXBvaW50cygpOyBpLS07KSB7CiAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gbV9jb2RlLmVudHJ5cG9pbnQoaSkuYmxvY2soKTsKLSAg
ICAgICAgICAgIGZvciAoVG1wIHRtcCA6IGxpdmVuZXNzLmxpdmVBdEhlYWQoZW50cnlwb2ludCkp
IHsKKyAgICAgICAgICAgIGZvciAoVG1wIHRtcCA6IG1fbGl2ZW5lc3MtPmxpdmVBdEhlYWQoZW50
cnlwb2ludCkpIHsKICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRBbGxvY2F0aW9uTWFwW2VudHJ5cG9pbnRdW3RtcC5yZWcoKV0gPSB0
bXA7CiAgICAgICAgICAgICB9CkBAIC00NDMsNiArNTIzLDggQEAgdm9pZCBHZW5lcmF0ZUFuZEFs
bG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogICAgICAgICAgICAgbV9hdmFpbGFibGVSZWdzW3RtcC5i
YW5rKCldLmNsZWFyKHJlZyk7CiAgICAgICAgIH0KIAorICAgICAgICArK21fZ2xvYmFsSW5zdElu
ZGV4OworCiAgICAgICAgIGJvb2wgaXNSZXBsYXlpbmdTYW1lSW5zdCA9IGZhbHNlOwogICAgICAg
ICBmb3IgKHNpemVfdCBpbnN0SW5kZXggPSAwOyBpbnN0SW5kZXggPCBibG9jay0+c2l6ZSgpOyAr
K2luc3RJbmRleCkgewogICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtNjczLDcg
Kzc1NSw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXIKICAgICAg
ICAgICAgICAgICAgICAgICAgIGV2ZXJ5U3VjY2Vzc29yR2V0c091clJlZ2lzdGVyU3RhdGUgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFldmVyeVN1Y2Nl
c3NvckdldHNPdXJSZWdpc3RlclN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoVG1w
IHRtcCA6IGxpdmVuZXNzLmxpdmVBdFRhaWwoYmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAg
IGZvciAoVG1wIHRtcCA6IG1fbGl2ZW5lc3MtPmxpdmVBdFRhaWwoYmxvY2spKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkgJiYgaXNEaXNhbGxvd2VkUmVnaXN0ZXIo
dG1wLnJlZygpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChSZWcgcmVnID0gbV9tYXBbdG1wXS5yZWcpCkBAIC03NTIs
NiArODM0LDggQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogICAg
ICAgICAgICAgaWYgKFRtcCB0bXAgPSBjdXJyZW50QWxsb2NhdGlvbltpXSkKICAgICAgICAgICAg
ICAgICBtX21hcFt0bXBdLnJlZyA9IFJlZygpOwogICAgICAgICB9CisKKyAgICAgICAgKyttX2ds
b2JhbEluc3RJbmRleDsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9ibG9ja3NB
ZnRlclRlcm1pbmFsUGF0Y2hGb3JTcGlsbGluZykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJl
Z2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgJKHJldmlzaW9uIDI1NDcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0Fu
ZEdlbmVyYXRlQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEdl
bmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgewogICAgIFdURl9NQUtFX05PTk1PVkFCTEUoR2Vu
ZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyk7CiAKICAgICBzdHJ1Y3QgVG1wRGF0YSB7Ci0gICAg
ICAgIFN0YWNrU2xvdCogc3BpbGxTbG90OworICAgICAgICBTdGFja1Nsb3QqIHNwaWxsU2xvdCB7
IG51bGxwdHIgfTsKICAgICAgICAgUmVnIHJlZzsKICAgICB9OwogCkBAIC04NCw2ICs4NCw3IEBA
IHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV9uYW1lZFVzZWRSZWdzOwogICAgIFJlZ2lzdGVy
U2V0IG1fbmFtZWREZWZkUmVnczsKICAgICBSZWdpc3RlclNldCBtX2FsbG93ZWRSZWdpc3RlcnM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFVuaWZpZWRUbXBMaXZlbmVzcz4gbV9saXZlbmVzczsKIAog
ICAgIHN0cnVjdCBQYXRjaFNwaWxsRGF0YSB7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBq
dW1wOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAko
cmV2aXNpb24gMjU0NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZl
bmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRlcj4KIGNs
YXNzIExpdmVuZXNzIDogcHVibGljIFdURjo6TGl2ZW5lc3M8QWRhcHRlcj4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpdmVuZXNzKENvZGUmIGNvZGUpCiAg
ICAgICAgIDogV1RGOjpMaXZlbmVzczxBZGFwdGVyPihjb2RlLmNmZygpLCBjb2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388090</attachid>
            <date>2020-01-17 14:31:57 -0800</date>
            <delta_ts>2020-01-17 14:33:45 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>12109</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQ3NjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTAxLTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEFpciBPMCBzaG91bGQgaGF2ZSBiZXR0ZXIgc3RhY2sgYWxsb2NhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNt
L3N0cmVzcy9kb250LXN0YWNrLW92ZXJmbG93LWluLWFpci5qczogQWRkZWQuCisKIDIwMjAtMDEt
MTcgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEpT
T04ucGFyc2Ugc2hvdWxkIGxvb2t1cCBwcm90b3R5cGUgY2hhaW5zIGR1cmluZyByZXZpdmFsCklu
ZGV4OiBKU1Rlc3RzL3dhc20vc3RyZXNzL2RvbnQtc3RhY2stb3ZlcmZsb3ctaW4tYWlyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvd2FzbS9zdHJlc3MvZG9udC1zdGFjay1vdmVyZmxvdy1pbi1h
aXIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy93YXNtL3N0cmVzcy9kb250LXN0YWNrLW92
ZXJmbG93LWluLWFpci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQg
QnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4u
L2Fzc2VydC5qcycKKworeworICAgIGNvbnN0IGxvY2FscyA9IFtdOworICAgIGNvbnN0IG51bUxv
Y2FscyA9IDEwMDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Mb2NhbHM7ICsraSkKKyAg
ICAgICAgbG9jYWxzW2ldID0gImY2NCI7CisKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsK
KyAgICBiLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAu
RXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigidGVzdCIpCisgICAgICAgIC5FbmQoKQor
ICAgICAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbigidGVzdCIsIHsgcGFyYW1zOiBbImkz
MiJdLCByZXQ6ICJ2b2lkIiB9LCBsb2NhbHMpCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAg
IC5CcklmKDApCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5JMzJDb25z
dCgxKQorICAgICAgICAgICAgLkkzMlN1YigpCisgICAgICAgICAgICAuQ2FsbCgwKQorICAgICAg
ICAuRW5kKCkKKyAgICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJs
eSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUp
OworCisgICAgLy8gVGhpcyBzaG91bGQgbm90IHN0YWNrIG92ZXJmbG93CisgICAgaW5zdGFuY2Uu
ZXhwb3J0cy50ZXN0KDE1MCk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1NDcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMS0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBaXIgTzAgc2hvdWxkIGhhdmUgYmV0dGVyIHN0YWNrIGFs
bG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBzdGFjayBzbG90IGFsbG9jYXRvciB0byBBaXIgTzAg
dG8gYWRkcmVzcyB0aGF0CisgICAgICAgIGNvZGUgY3JlYXRpbmcgaHVnZSBzdGFjayBmcmFtZXMg
YW5kIGNhdXNpbmcgc2ltcGxlIFdhc20gY29kZSB0byBzdGFjaworICAgICAgICBvdmVyZmxvdy4g
QmVmb3JlLCBlYWNoIFRtcCBnb3QgaXRzIG93biBzdGFjayBzbG90LiBUaGlzIHdvcmtzIHNpbWls
YXIKKyAgICAgICAgdG8gdGhlIHJlZ2lzdGVyIGFsbG9jYXRvci4gVGhpcyBzdGFjayBhbGxvY2F0
b3IgbGluZWFyaXplcyB0aGUgcHJvZ3JhbQorICAgICAgICBhbmQgdXNlcyBsaXZlIHJhbmdlIGVu
ZCBhcyBhbiBvcHBvcnR1bml0eSB0byBwbGFjZSB0aGUgc3RhY2sgc2xvdAorICAgICAgICBvbiBh
IGZyZWUgbGlzdCBvZiBzdGFjayBzbG90cy4gVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGFuIGlzc3Vl
IGluIG91cgorICAgICAgICBsaW5lYXJpemF0aW9uIGNvZGUgd2hlcmUgdGhlIGhlYWQgb2YgYSBi
bG9jayBhbmQgdGhlIHRhaWwgb2YgYW5vdGhlcgorICAgICAgICBibG9jayB3b3VsZCBzaGFyZSB0
aGUgc2FtZSBsaW5lYXJpemF0aW9uIGluZGV4LiBUaGlzIGRpZG4ndCBtYXR0ZXIKKyAgICAgICAg
Zm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24sIGJ1dCBkb2VzIG1hdHRlciBmb3IgdGhlIHN0YWNrIGFs
bG9jYXRvci4gU28KKyAgICAgICAgImxpdmUgYXQgaGVhZCIsIGFuZCAibGl2ZSBhdCB0YWlsIiBu
b3cgZ2V0IHRoZWlyIG93biBsaW5lYXJpemF0aW9uIGluZGV4LgorCisgICAgICAgICogYjMvYWly
L0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpidWlsZExpdmVS
YW5nZXMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0
ZXJzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9haXIvQWly
QWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5oOgorICAgICAgICAqIGIz
L2Fpci9BaXJMaXZlbmVzcy5oOgorCiAyMDIwLTAxLTE2ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jp
c3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBE
RkdTbG93UGF0aEdlbmVyYXRvci5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNB
bmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJKHJldmlzaW9uIDI1NDcxMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVy
YXRlQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBHZW5lcmF0
ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpidWlsZAogICAgICAgICAgICAgaWYgKCF0bXAuaXNSZWco
KSkKICAgICAgICAgICAgICAgICBtX2xpdmVSYW5nZUVuZFt0bXBdID0gbV9nbG9iYWxJbnN0SW5k
ZXg7CiAgICAgICAgIH0KKyAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKICAgICAgICAgZm9y
IChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CiAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0
KFsmXSAoVG1wIHRtcCkgewogICAgICAgICAgICAgICAgIGlmICghdG1wLmlzUmVnKCkpCkBAIC05
NSw2ICs5Niw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6YnVpbGQKICAg
ICAgICAgICAgIGlmICghdG1wLmlzUmVnKCkpCiAgICAgICAgICAgICAgICAgbV9saXZlUmFuZ2VF
bmRbdG1wXSA9IG1fZ2xvYmFsSW5zdEluZGV4OwogICAgICAgICB9CisgICAgICAgICsrbV9nbG9i
YWxJbnN0SW5kZXg7CiAgICAgfQogfQogCkBAIC0yODAsMjEgKzI4Miw3NCBAQCB2b2lkIEdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMobV9j
b2RlLCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICBhbGxvY2F0ZUVz
Y2FwZWRTdGFja1Nsb3RzKG1fY29kZSk7CiAKLSAgICAvLyBFYWNoIFRtcCBnZXRzIGl0cyBvd24g
c3RhY2sgc2xvdC4KLSAgICBhdXRvIGNyZWF0ZVN0YWNrU2xvdCA9IFsmXSAoY29uc3QgVG1wJiB0
bXApIHsKLSAgICAgICAgVG1wRGF0YSBkYXRhOwotICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1f
Y29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwpOwotICAgICAgICBkYXRh
LnJlZyA9IFJlZygpOwotICAgICAgICBtX21hcFt0bXBdID0gZGF0YTsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgICAgICBtX2FsbFRtcHNbdG1wLmJhbmsoKV0uYXBwZW5kKHRtcCk7Ci0jZW5kaWYK
LSAgICB9OworICAgIGluc2VydEJsb2Nrc0ZvckZsdXNoQWZ0ZXJUZXJtaW5hbFBhdGNocG9pbnRz
KCk7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY29kZS5mb3JFYWNoVG1wKFsmXSAoVG1w
IHRtcCkgewogICAgICAgICBBU1NFUlQoIXRtcC5pc1JlZygpKTsKLSAgICAgICAgY3JlYXRlU3Rh
Y2tTbG90KHRtcCk7CisgICAgICAgIG1fYWxsVG1wc1t0bXAuYmFuaygpXS5hcHBlbmQodG1wKTsK
ICAgICB9KTsKKyNlbmRpZgorCisgICAgbV9saXZlbmVzcyA9IG1ha2VVbmlxdWU8VW5pZmllZFRt
cExpdmVuZXNzPihtX2NvZGUpOworCisgICAgeworICAgICAgICBidWlsZExpdmVSYW5nZXMoKm1f
bGl2ZW5lc3MpOworCisgICAgICAgIFZlY3RvcjxTdGFja1Nsb3QqLCAxNj4gZnJlZVNsb3RzOwor
ICAgICAgICBWZWN0b3I8U3RhY2tTbG90KiwgND4gdG9GcmVlOworICAgICAgICBtX2dsb2JhbElu
c3RJbmRleCA9IDA7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsK
KyAgICAgICAgICAgIGF1dG8gYXNzaWduU3RhY2tTbG90VG9UbXAgPSBbJl0gKFRtcCB0bXApIHsK
KyAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIFRtcERhdGEmIGRhdGEgPSBtX21hcFt0bXBdOworICAg
ICAgICAgICAgICAgIGlmIChkYXRhLnNwaWxsU2xvdCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAobV9saXZlUmFuZ2VFbmRbdG1wXSA9PSBtX2dsb2JhbEluc3RJbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRvRnJlZS5hcHBlbmQoZGF0YS5zcGlsbFNsb3QpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KGZyZWVTbG90cy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0g
ZnJlZVNsb3RzLnRha2VMYXN0KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90
S2luZDo6U3BpbGwpOworICAgICAgICAgICAgICAgIGRhdGEucmVnID0gUmVnKCk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICBhdXRvIGZsdXNoVG9GcmVlTGlzdCA9IFsmXSB7CisgICAg
ICAgICAgICAgICAgZm9yIChhdXRvKiBzdGFja1Nsb3QgOiB0b0ZyZWUpCisgICAgICAgICAgICAg
ICAgICAgIGZyZWVTbG90cy5hcHBlbmQoc3RhY2tTbG90KTsKKyAgICAgICAgICAgICAgICB0b0Zy
ZWUuY2xlYXIoKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGZvciAoVG1wIHRtcCA6
IG1fbGl2ZW5lc3MtPmxpdmVBdEhlYWQoYmxvY2spKQorICAgICAgICAgICAgICAgIGFzc2lnblN0
YWNrU2xvdFRvVG1wKHRtcCk7CisgICAgICAgICAgICBmbHVzaFRvRnJlZUxpc3QoKTsKKworICAg
ICAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKKworICAgICAgICAgICAgZm9yIChJbnN0JiBp
bnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPFRtcCwgND4gc2VlblRtcHM7
CisgICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wRmFzdChbJl0gKFRtcCB0bXApIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNlZW5UbXBzLmNvbnRhaW5zKHRtcCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHNlZW5UbXBzLmFwcGVu
ZCh0bXApOworICAgICAgICAgICAgICAgICAgICBhc3NpZ25TdGFja1Nsb3RUb1RtcCh0bXApOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZmx1c2hUb0ZyZWVMaXN0KCk7
CisgICAgICAgICAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbV9saXZlbmVzcy0+bGl2ZUF0VGFpbChibG9jaykp
CisgICAgICAgICAgICAgICAgYXNzaWduU3RhY2tTbG90VG9UbXAodG1wKTsKKyAgICAgICAgICAg
IGZsdXNoVG9GcmVlTGlzdCgpOworCisgICAgICAgICAgICArK21fZ2xvYmFsSW5zdEluZGV4Owor
ICAgICAgICB9CisgICAgfSAKIAogICAgIG1fYWxsb3dlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
KCk7CiAKQEAgLTMwMyw3ICszNTgsOSBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM6OnByZXBhCiAKICAgICAgICAgZm9yIChSZWcgcmVnIDogbV9yZWdpc3RlcnNbYmFua10pIHsK
ICAgICAgICAgICAgIG1fYWxsb3dlZFJlZ2lzdGVycy5zZXQocmVnKTsKLSAgICAgICAgICAgIGNy
ZWF0ZVN0YWNrU2xvdChUbXAocmVnKSk7CisgICAgICAgICAgICBUbXBEYXRhJiBkYXRhID0gbV9t
YXBbVG1wKHJlZyldOworICAgICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBtX2NvZGUuYWRkU3Rh
Y2tTbG90KDgsIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgIGRhdGEucmVnID0g
UmVnKCk7CiAgICAgICAgIH0KICAgICB9KTsKIApAQCAtMzIzLDExICszODAsMzcgQEAgdm9pZCBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpwcmVwYQogCiAgICAgbG93ZXJTdGFja0FyZ3Mo
bV9jb2RlKTsKIAorI2lmIEFTU0VSVF9FTkFCTEVEICYmIDAKICAgICAvLyBWZXJpZnkgbm9uZSBv
ZiB0aGVzZSBwYXNzZXMgYWRkIGFueSB0bXBzLgotI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgZm9y
RWFjaEJhbmsoWyZdIChCYW5rIGJhbmspIHsKLSAgICAgICAgQVNTRVJUKG1fYWxsVG1wc1tiYW5r
XS5zaXplKCkgLSBtX3JlZ2lzdGVyc1tiYW5rXS5zaXplKCkgPT0gbV9jb2RlLm51bVRtcHMoYmFu
aykpOworICAgICAgICBBU1NFUlQobV9hbGxUbXBzW2JhbmtdLnNpemUoKSA9PSBtX2NvZGUubnVt
VG1wcyhiYW5rKSk7CiAgICAgfSk7CisKKyAgICB7CisgICAgICAgIC8vIFZlcmlmeSB0aGF0IGxv
d2VyU3RhY2tBcmdzIGRpZG4ndCBjaGFuZ2UgVG1wIGxpdmVuZXNzIGF0IHRoZSBib3VuZGFyaWVz
IGZvciB0aGUgVG1wcyBhbmQgUmVnaXN0ZXJzIHdlIG1vZGVsLgorICAgICAgICBVbmlmaWVkVG1w
TGl2ZW5lc3MgbGl2ZW5lc3MobV9jb2RlKTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fY29kZSkgeworICAgICAgICAgICAgYXV0byBhc3NlcnRMaXZlbmVzc0FyZUVxdWFsID0g
WyZdIChhdXRvIGEsIGF1dG8gYikgeworICAgICAgICAgICAgICAgIEhhc2hTZXQ8VG1wPiBsaXZl
bmVzc0E7CisgICAgICAgICAgICAgICAgSGFzaFNldDxUbXA+IGxpdmVuZXNzQjsKKyAgICAgICAg
ICAgICAgICBmb3IgKFRtcCB0bXAgOiBhKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0bXAu
aXNSZWcoKSAmJiBpc0Rpc2FsbG93ZWRSZWdpc3Rlcih0bXAucmVnKCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGxpdmVuZXNzQS5hZGQo
dG1wKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChUbXAgdG1wIDog
YikgeworICAgICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkgJiYgaXNEaXNhbGxvd2Vk
UmVnaXN0ZXIodG1wLnJlZygpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICBsaXZlbmVzc0IuYWRkKHRtcCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgQVNTRVJUKGxpdmVuZXNzQSA9PSBsaXZlbmVzc0IpOworICAg
ICAgICAgICAgfTsKKworICAgICAgICAgICAgYXNzZXJ0TGl2ZW5lc3NBcmVFcXVhbChtX2xpdmVu
ZXNzLT5saXZlQXRIZWFkKGJsb2NrKSwgbGl2ZW5lc3MubGl2ZUF0SGVhZChibG9jaykpOworICAg
ICAgICAgICAgYXNzZXJ0TGl2ZW5lc3NBcmVFcXVhbChtX2xpdmVuZXNzLT5saXZlQXRUYWlsKGJs
b2NrKSwgbGl2ZW5lc3MubGl2ZUF0VGFpbChibG9jaykpOworICAgICAgICB9CisgICAgfQogI2Vu
ZGlmCiB9CiAKQEAgLTMzNywxMiArNDIwLDkgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzOjpnZW5lcgogCiAgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoIkFpcjo6Z2VuZXJh
dGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyIpOwogCi0gICAgaW5zZXJ0QmxvY2tzRm9yRmx1c2hBZnRl
clRlcm1pbmFsUGF0Y2hwb2ludHMoKTsKLQogICAgIERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBkaXNhbGxvd1NjcmF0Y2goKm1faml0KTsKIAotICAgIFVuaWZpZWRUbXBMaXZlbmVz
cyBsaXZlbmVzcyhtX2NvZGUpOwotICAgIGJ1aWxkTGl2ZVJhbmdlcyhsaXZlbmVzcyk7CisgICAg
YnVpbGRMaXZlUmFuZ2VzKCptX2xpdmVuZXNzKTsKIAogICAgIEluZGV4TWFwPEJhc2ljQmxvY2sq
LCBJbmRleE1hcDxSZWcsIFRtcD4+IGN1cnJlbnRBbGxvY2F0aW9uTWFwKG1fY29kZS5zaXplKCkp
OwogICAgIHsKQEAgLTM1NSw3ICs0MzUsNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM6OmdlbmVyCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9jb2RlLm51bUVudHJ5
cG9pbnRzKCk7IGktLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBt
X2NvZGUuZW50cnlwb2ludChpKS5ibG9jaygpOwotICAgICAgICAgICAgZm9yIChUbXAgdG1wIDog
bGl2ZW5lc3MubGl2ZUF0SGVhZChlbnRyeXBvaW50KSkgeworICAgICAgICAgICAgZm9yIChUbXAg
dG1wIDogbV9saXZlbmVzcy0+bGl2ZUF0SGVhZChlbnRyeXBvaW50KSkgewogICAgICAgICAgICAg
ICAgIGlmICh0bXAuaXNSZWcoKSkKICAgICAgICAgICAgICAgICAgICAgY3VycmVudEFsbG9jYXRp
b25NYXBbZW50cnlwb2ludF1bdG1wLnJlZygpXSA9IHRtcDsKICAgICAgICAgICAgIH0KQEAgLTQ0
Myw2ICs1MjMsOCBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyCiAg
ICAgICAgICAgICBtX2F2YWlsYWJsZVJlZ3NbdG1wLmJhbmsoKV0uY2xlYXIocmVnKTsKICAgICAg
ICAgfQogCisgICAgICAgICsrbV9nbG9iYWxJbnN0SW5kZXg7CisKICAgICAgICAgYm9vbCBpc1Jl
cGxheWluZ1NhbWVJbnN0ID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGluc3RJbmRleCA9
IDA7IGluc3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5zdEluZGV4KSB7CiAgICAgICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC02NzMsNyArNzU1LDcgQEAgdm9pZCBHZW5lcmF0ZUFu
ZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogICAgICAgICAgICAgICAgICAgICAgICAgZXZlcnlT
dWNjZXNzb3JHZXRzT3VyUmVnaXN0ZXJTdGF0ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAoIWV2ZXJ5U3VjY2Vzc29yR2V0c091clJlZ2lzdGVyU3RhdGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbGl2ZW5lc3MubGl2ZUF0VGFp
bChibG9jaykpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbV9saXZlbmVz
cy0+bGl2ZUF0VGFpbChibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAu
aXNSZWcoKSAmJiBpc0Rpc2FsbG93ZWRSZWdpc3Rlcih0bXAucmVnKCkpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJl
ZyByZWcgPSBtX21hcFt0bXBdLnJlZykKQEAgLTc1Miw2ICs4MzQsOCBAQCB2b2lkIEdlbmVyYXRl
QW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyCiAgICAgICAgICAgICBpZiAoVG1wIHRtcCA9IGN1
cnJlbnRBbGxvY2F0aW9uW2ldKQogICAgICAgICAgICAgICAgIG1fbWFwW3RtcF0ucmVnID0gUmVn
KCk7CiAgICAgICAgIH0KKworICAgICAgICArK21fZ2xvYmFsSW5zdEluZGV4OwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2Nrc0FmdGVyVGVybWluYWxQYXRjaEZvclNwaWxs
aW5nKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVn
aXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0
ZUNvZGUuaAkocmV2aXNpb24gMjU0NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
cyB7CiAgICAgV1RGX01BS0VfTk9OTU9WQUJMRShHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJz
KTsKIAogICAgIHN0cnVjdCBUbXBEYXRhIHsKLSAgICAgICAgU3RhY2tTbG90KiBzcGlsbFNsb3Q7
CisgICAgICAgIFN0YWNrU2xvdCogc3BpbGxTbG90IHsgbnVsbHB0ciB9OwogICAgICAgICBSZWcg
cmVnOwogICAgIH07CiAKQEAgLTg0LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBSZWdpc3RlclNl
dCBtX25hbWVkVXNlZFJlZ3M7CiAgICAgUmVnaXN0ZXJTZXQgbV9uYW1lZERlZmRSZWdzOwogICAg
IFJlZ2lzdGVyU2V0IG1fYWxsb3dlZFJlZ2lzdGVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5p
ZmllZFRtcExpdmVuZXNzPiBtX2xpdmVuZXNzOwogCiAgICAgc3RydWN0IFBhdGNoU3BpbGxEYXRh
IHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXA7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCShyZXZpc2lvbiAyNTQ3MTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdGVyPgogY2xhc3MgTGl2ZW5lc3MgOiBwdWJsaWMgV1RG
OjpMaXZlbmVzczxBZGFwdGVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgTGl2ZW5lc3MoQ29kZSYgY29kZSkKICAgICAgICAgOiBXVEY6OkxpdmVuZXNzPEFk
YXB0ZXI+KGNvZGUuY2ZnKCksIGNvZGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388091</attachid>
            <date>2020-01-17 14:33:45 -0800</date>
            <delta_ts>2020-01-17 17:30:41 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>12134</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQ3NjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTAxLTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEFpciBPMCBzaG91bGQgaGF2ZSBiZXR0ZXIgc3RhY2sgYWxsb2NhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNt
L3N0cmVzcy9kb250LXN0YWNrLW92ZXJmbG93LWluLWFpci5qczogQWRkZWQuCisKIDIwMjAtMDEt
MTcgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEpT
T04ucGFyc2Ugc2hvdWxkIGxvb2t1cCBwcm90b3R5cGUgY2hhaW5zIGR1cmluZyByZXZpdmFsCklu
ZGV4OiBKU1Rlc3RzL3dhc20vc3RyZXNzL2RvbnQtc3RhY2stb3ZlcmZsb3ctaW4tYWlyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvd2FzbS9zdHJlc3MvZG9udC1zdGFjay1vdmVyZmxvdy1pbi1h
aXIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy93YXNtL3N0cmVzcy9kb250LXN0YWNrLW92
ZXJmbG93LWluLWFpci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQg
QnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4u
L2Fzc2VydC5qcycKKworeworICAgIGNvbnN0IGxvY2FscyA9IFtdOworICAgIGNvbnN0IG51bUxv
Y2FscyA9IDEwMDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Mb2NhbHM7ICsraSkKKyAg
ICAgICAgbG9jYWxzW2ldID0gImY2NCI7CisKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsK
KyAgICBiLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAu
RXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigidGVzdCIpCisgICAgICAgIC5FbmQoKQor
ICAgICAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbigidGVzdCIsIHsgcGFyYW1zOiBbImkz
MiJdLCByZXQ6ICJ2b2lkIiB9LCBsb2NhbHMpCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICAgIC5JMzJDb25zdCgwKQorICAgICAgICAgICAgLkkzMkVxKCkKKyAgICAgICAgICAg
IC5CcklmKDApCisgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5JMzJDb25z
dCgxKQorICAgICAgICAgICAgLkkzMlN1YigpCisgICAgICAgICAgICAuQ2FsbCgwKQorICAgICAg
ICAuRW5kKCkKKyAgICAgICAgLkVuZCgpOworCisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJs
eSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUp
OworCisgICAgLy8gVGhpcyBzaG91bGQgbm90IHN0YWNrIG92ZXJmbG93CisgICAgaW5zdGFuY2Uu
ZXhwb3J0cy50ZXN0KDE1MCk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1NDcxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wMS0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBaXIgTzAgc2hvdWxkIGhhdmUgYmV0dGVyIHN0YWNrIGFs
bG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjQzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBzdGFjayBzbG90IGFsbG9jYXRvciB0byBBaXIgTzAg
dG8gYWRkcmVzcyB0aGF0CisgICAgICAgIGNvZGUgY3JlYXRpbmcgaHVnZSBzdGFjayBmcmFtZXMg
YW5kIGNhdXNpbmcgc2ltcGxlIFdhc20gY29kZSB0byBzdGFjaworICAgICAgICBvdmVyZmxvdy4g
QmVmb3JlLCBlYWNoIFRtcCBnb3QgaXRzIG93biBzdGFjayBzbG90LiBUaGlzIHdvcmtzIHNpbWls
YXIKKyAgICAgICAgdG8gdGhlIHJlZ2lzdGVyIGFsbG9jYXRvci4gVGhpcyBzdGFjayBhbGxvY2F0
b3IgbGluZWFyaXplcyB0aGUgcHJvZ3JhbQorICAgICAgICBhbmQgdXNlcyBsaXZlIHJhbmdlIGVu
ZCBhcyBhbiBvcHBvcnR1bml0eSB0byBwbGFjZSB0aGUgc3RhY2sgc2xvdAorICAgICAgICBvbiBh
IGZyZWUgbGlzdCBvZiBzdGFjayBzbG90cy4gVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGFuIGlzc3Vl
IGluIG91cgorICAgICAgICBsaW5lYXJpemF0aW9uIGNvZGUgd2hlcmUgdGhlIGhlYWQgb2YgYSBi
bG9jayBhbmQgdGhlIHRhaWwgb2YgYW5vdGhlcgorICAgICAgICBibG9jayB3b3VsZCBzaGFyZSB0
aGUgc2FtZSBsaW5lYXJpemF0aW9uIGluZGV4LiBUaGlzIGRpZG4ndCBtYXR0ZXIKKyAgICAgICAg
Zm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24sIGJ1dCBkb2VzIG1hdHRlciBmb3IgdGhlIHN0YWNrIGFs
bG9jYXRvci4gU28KKyAgICAgICAgImxpdmUgYXQgaGVhZCIsIGFuZCAibGl2ZSBhdCB0YWlsIiBu
b3cgZ2V0IHRoZWlyIG93biBsaW5lYXJpemF0aW9uIGluZGV4LgorCisgICAgICAgICogYjMvYWly
L0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpidWlsZExpdmVS
YW5nZXMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0
ZXJzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9haXIvQWly
QWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5oOgorICAgICAgICAqIGIz
L2Fpci9BaXJMaXZlbmVzcy5oOgorCiAyMDIwLTAxLTE2ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jp
c3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBE
RkdTbG93UGF0aEdlbmVyYXRvci5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNB
bmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJKHJldmlzaW9uIDI1NDcxMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVy
YXRlQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBHZW5lcmF0
ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpidWlsZAogICAgICAgICAgICAgaWYgKCF0bXAuaXNSZWco
KSkKICAgICAgICAgICAgICAgICBtX2xpdmVSYW5nZUVuZFt0bXBdID0gbV9nbG9iYWxJbnN0SW5k
ZXg7CiAgICAgICAgIH0KKyAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKICAgICAgICAgZm9y
IChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CiAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0
KFsmXSAoVG1wIHRtcCkgewogICAgICAgICAgICAgICAgIGlmICghdG1wLmlzUmVnKCkpCkBAIC05
NSw2ICs5Niw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6YnVpbGQKICAg
ICAgICAgICAgIGlmICghdG1wLmlzUmVnKCkpCiAgICAgICAgICAgICAgICAgbV9saXZlUmFuZ2VF
bmRbdG1wXSA9IG1fZ2xvYmFsSW5zdEluZGV4OwogICAgICAgICB9CisgICAgICAgICsrbV9nbG9i
YWxJbnN0SW5kZXg7CiAgICAgfQogfQogCkBAIC0yODAsMjEgKzI4Miw3NCBAQCB2b2lkIEdlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMobV9j
b2RlLCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICBhbGxvY2F0ZUVz
Y2FwZWRTdGFja1Nsb3RzKG1fY29kZSk7CiAKLSAgICAvLyBFYWNoIFRtcCBnZXRzIGl0cyBvd24g
c3RhY2sgc2xvdC4KLSAgICBhdXRvIGNyZWF0ZVN0YWNrU2xvdCA9IFsmXSAoY29uc3QgVG1wJiB0
bXApIHsKLSAgICAgICAgVG1wRGF0YSBkYXRhOwotICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1f
Y29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwpOwotICAgICAgICBkYXRh
LnJlZyA9IFJlZygpOwotICAgICAgICBtX21hcFt0bXBdID0gZGF0YTsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgICAgICBtX2FsbFRtcHNbdG1wLmJhbmsoKV0uYXBwZW5kKHRtcCk7Ci0jZW5kaWYK
LSAgICB9OworICAgIGluc2VydEJsb2Nrc0ZvckZsdXNoQWZ0ZXJUZXJtaW5hbFBhdGNocG9pbnRz
KCk7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY29kZS5mb3JFYWNoVG1wKFsmXSAoVG1w
IHRtcCkgewogICAgICAgICBBU1NFUlQoIXRtcC5pc1JlZygpKTsKLSAgICAgICAgY3JlYXRlU3Rh
Y2tTbG90KHRtcCk7CisgICAgICAgIG1fYWxsVG1wc1t0bXAuYmFuaygpXS5hcHBlbmQodG1wKTsK
ICAgICB9KTsKKyNlbmRpZgorCisgICAgbV9saXZlbmVzcyA9IG1ha2VVbmlxdWU8VW5pZmllZFRt
cExpdmVuZXNzPihtX2NvZGUpOworCisgICAgeworICAgICAgICBidWlsZExpdmVSYW5nZXMoKm1f
bGl2ZW5lc3MpOworCisgICAgICAgIFZlY3RvcjxTdGFja1Nsb3QqLCAxNj4gZnJlZVNsb3RzOwor
ICAgICAgICBWZWN0b3I8U3RhY2tTbG90KiwgND4gdG9GcmVlOworICAgICAgICBtX2dsb2JhbElu
c3RJbmRleCA9IDA7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsK
KyAgICAgICAgICAgIGF1dG8gYXNzaWduU3RhY2tTbG90VG9UbXAgPSBbJl0gKFRtcCB0bXApIHsK
KyAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIFRtcERhdGEmIGRhdGEgPSBtX21hcFt0bXBdOworICAg
ICAgICAgICAgICAgIGlmIChkYXRhLnNwaWxsU2xvdCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAobV9saXZlUmFuZ2VFbmRbdG1wXSA9PSBtX2dsb2JhbEluc3RJbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRvRnJlZS5hcHBlbmQoZGF0YS5zcGlsbFNsb3QpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KGZyZWVTbG90cy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0g
ZnJlZVNsb3RzLnRha2VMYXN0KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBkYXRhLnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90
S2luZDo6U3BpbGwpOworICAgICAgICAgICAgICAgIGRhdGEucmVnID0gUmVnKCk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICBhdXRvIGZsdXNoVG9GcmVlTGlzdCA9IFsmXSB7CisgICAg
ICAgICAgICAgICAgZm9yIChhdXRvKiBzdGFja1Nsb3QgOiB0b0ZyZWUpCisgICAgICAgICAgICAg
ICAgICAgIGZyZWVTbG90cy5hcHBlbmQoc3RhY2tTbG90KTsKKyAgICAgICAgICAgICAgICB0b0Zy
ZWUuY2xlYXIoKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGZvciAoVG1wIHRtcCA6
IG1fbGl2ZW5lc3MtPmxpdmVBdEhlYWQoYmxvY2spKQorICAgICAgICAgICAgICAgIGFzc2lnblN0
YWNrU2xvdFRvVG1wKHRtcCk7CisgICAgICAgICAgICBmbHVzaFRvRnJlZUxpc3QoKTsKKworICAg
ICAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKKworICAgICAgICAgICAgZm9yIChJbnN0JiBp
bnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPFRtcCwgND4gc2VlblRtcHM7
CisgICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wRmFzdChbJl0gKFRtcCB0bXApIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNlZW5UbXBzLmNvbnRhaW5zKHRtcCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHNlZW5UbXBzLmFwcGVu
ZCh0bXApOworICAgICAgICAgICAgICAgICAgICBhc3NpZ25TdGFja1Nsb3RUb1RtcCh0bXApOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZmx1c2hUb0ZyZWVMaXN0KCk7
CisgICAgICAgICAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbV9saXZlbmVzcy0+bGl2ZUF0VGFpbChibG9jaykp
CisgICAgICAgICAgICAgICAgYXNzaWduU3RhY2tTbG90VG9UbXAodG1wKTsKKyAgICAgICAgICAg
IGZsdXNoVG9GcmVlTGlzdCgpOworCisgICAgICAgICAgICArK21fZ2xvYmFsSW5zdEluZGV4Owor
ICAgICAgICB9CisgICAgfSAKIAogICAgIG1fYWxsb3dlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
KCk7CiAKQEAgLTMwMyw3ICszNTgsOSBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM6OnByZXBhCiAKICAgICAgICAgZm9yIChSZWcgcmVnIDogbV9yZWdpc3RlcnNbYmFua10pIHsK
ICAgICAgICAgICAgIG1fYWxsb3dlZFJlZ2lzdGVycy5zZXQocmVnKTsKLSAgICAgICAgICAgIGNy
ZWF0ZVN0YWNrU2xvdChUbXAocmVnKSk7CisgICAgICAgICAgICBUbXBEYXRhJiBkYXRhID0gbV9t
YXBbVG1wKHJlZyldOworICAgICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBtX2NvZGUuYWRkU3Rh
Y2tTbG90KDgsIFN0YWNrU2xvdEtpbmQ6OlNwaWxsKTsKKyAgICAgICAgICAgIGRhdGEucmVnID0g
UmVnKCk7CiAgICAgICAgIH0KICAgICB9KTsKIApAQCAtMzIzLDExICszODAsMzcgQEAgdm9pZCBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpwcmVwYQogCiAgICAgbG93ZXJTdGFja0FyZ3Mo
bV9jb2RlKTsKIAotICAgIC8vIFZlcmlmeSBub25lIG9mIHRoZXNlIHBhc3NlcyBhZGQgYW55IHRt
cHMuCiAjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAvLyBWZXJpZnkgbm9uZSBvZiB0aGVzZSBwYXNz
ZXMgYWRkIGFueSB0bXBzLgogICAgIGZvckVhY2hCYW5rKFsmXSAoQmFuayBiYW5rKSB7Ci0gICAg
ICAgIEFTU0VSVChtX2FsbFRtcHNbYmFua10uc2l6ZSgpIC0gbV9yZWdpc3RlcnNbYmFua10uc2l6
ZSgpID09IG1fY29kZS5udW1UbXBzKGJhbmspKTsKKyAgICAgICAgQVNTRVJUKG1fYWxsVG1wc1ti
YW5rXS5zaXplKCkgPT0gbV9jb2RlLm51bVRtcHMoYmFuaykpOwogICAgIH0pOworCisgICAgewor
ICAgICAgICAvLyBWZXJpZnkgdGhhdCBsb3dlclN0YWNrQXJncyBkaWRuJ3QgY2hhbmdlIFRtcCBs
aXZlbmVzcyBhdCB0aGUgYm91bmRhcmllcyBmb3IgdGhlIFRtcHMgYW5kIFJlZ2lzdGVycyB3ZSBt
b2RlbC4KKyAgICAgICAgVW5pZmllZFRtcExpdmVuZXNzIGxpdmVuZXNzKG1fY29kZSk7CisgICAg
ICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsKKyAgICAgICAgICAgIGF1dG8g
YXNzZXJ0TGl2ZW5lc3NBcmVFcXVhbCA9IFsmXSAoYXV0byBhLCBhdXRvIGIpIHsKKyAgICAgICAg
ICAgICAgICBIYXNoU2V0PFRtcD4gbGl2ZW5lc3NBOworICAgICAgICAgICAgICAgIEhhc2hTZXQ8
VG1wPiBsaXZlbmVzc0I7CisgICAgICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogYSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkgJiYgaXNEaXNhbGxvd2VkUmVnaXN0ZXIo
dG1wLnJlZygpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICBsaXZlbmVzc0EuYWRkKHRtcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGZvciAoVG1wIHRtcCA6IGIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRt
cC5pc1JlZygpICYmIGlzRGlzYWxsb3dlZFJlZ2lzdGVyKHRtcC5yZWcoKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NCLmFk
ZCh0bXApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEFTU0VSVChsaXZl
bmVzc0EgPT0gbGl2ZW5lc3NCKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGFzc2Vy
dExpdmVuZXNzQXJlRXF1YWwobV9saXZlbmVzcy0+bGl2ZUF0SGVhZChibG9jayksIGxpdmVuZXNz
LmxpdmVBdEhlYWQoYmxvY2spKTsKKyAgICAgICAgICAgIGFzc2VydExpdmVuZXNzQXJlRXF1YWwo
bV9saXZlbmVzcy0+bGl2ZUF0VGFpbChibG9jayksIGxpdmVuZXNzLmxpdmVBdFRhaWwoYmxvY2sp
KTsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZgogfQogCkBAIC0zMzcsMTIgKzQyMCw5IEBAIHZv
aWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXIKIAogICAgIFRpbWluZ1Njb3Bl
IHRpbWluZ1Njb3BlKCJBaXI6OmdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMiKTsKIAotICAg
IGluc2VydEJsb2Nrc0ZvckZsdXNoQWZ0ZXJUZXJtaW5hbFBhdGNocG9pbnRzKCk7Ci0KICAgICBE
aXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgZGlzYWxsb3dTY3JhdGNoKCptX2ppdCk7
CiAKLSAgICBVbmlmaWVkVG1wTGl2ZW5lc3MgbGl2ZW5lc3MobV9jb2RlKTsKLSAgICBidWlsZExp
dmVSYW5nZXMobGl2ZW5lc3MpOworICAgIGJ1aWxkTGl2ZVJhbmdlcygqbV9saXZlbmVzcyk7CiAK
ICAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgSW5kZXhNYXA8UmVnLCBUbXA+PiBjdXJyZW50QWxs
b2NhdGlvbk1hcChtX2NvZGUuc2l6ZSgpKTsKICAgICB7CkBAIC0zNTUsNyArNDM1LDcgQEAgdm9p
ZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fY29kZS5udW1FbnRyeXBvaW50cygpOyBpLS07KSB7CiAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gbV9jb2RlLmVudHJ5cG9pbnQoaSkuYmxvY2soKTsKLSAg
ICAgICAgICAgIGZvciAoVG1wIHRtcCA6IGxpdmVuZXNzLmxpdmVBdEhlYWQoZW50cnlwb2ludCkp
IHsKKyAgICAgICAgICAgIGZvciAoVG1wIHRtcCA6IG1fbGl2ZW5lc3MtPmxpdmVBdEhlYWQoZW50
cnlwb2ludCkpIHsKICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRBbGxvY2F0aW9uTWFwW2VudHJ5cG9pbnRdW3RtcC5yZWcoKV0gPSB0
bXA7CiAgICAgICAgICAgICB9CkBAIC00NDMsNiArNTIzLDggQEAgdm9pZCBHZW5lcmF0ZUFuZEFs
bG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogICAgICAgICAgICAgbV9hdmFpbGFibGVSZWdzW3RtcC5i
YW5rKCldLmNsZWFyKHJlZyk7CiAgICAgICAgIH0KIAorICAgICAgICArK21fZ2xvYmFsSW5zdElu
ZGV4OworCiAgICAgICAgIGJvb2wgaXNSZXBsYXlpbmdTYW1lSW5zdCA9IGZhbHNlOwogICAgICAg
ICBmb3IgKHNpemVfdCBpbnN0SW5kZXggPSAwOyBpbnN0SW5kZXggPCBibG9jay0+c2l6ZSgpOyAr
K2luc3RJbmRleCkgewogICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtNjczLDcg
Kzc1NSw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXIKICAgICAg
ICAgICAgICAgICAgICAgICAgIGV2ZXJ5U3VjY2Vzc29yR2V0c091clJlZ2lzdGVyU3RhdGUgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFldmVyeVN1Y2Nl
c3NvckdldHNPdXJSZWdpc3RlclN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoVG1w
IHRtcCA6IGxpdmVuZXNzLmxpdmVBdFRhaWwoYmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAg
IGZvciAoVG1wIHRtcCA6IG1fbGl2ZW5lc3MtPmxpdmVBdFRhaWwoYmxvY2spKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkgJiYgaXNEaXNhbGxvd2VkUmVnaXN0ZXIo
dG1wLnJlZygpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChSZWcgcmVnID0gbV9tYXBbdG1wXS5yZWcpCkBAIC03NTIs
NiArODM0LDggQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogICAg
ICAgICAgICAgaWYgKFRtcCB0bXAgPSBjdXJyZW50QWxsb2NhdGlvbltpXSkKICAgICAgICAgICAg
ICAgICBtX21hcFt0bXBdLnJlZyA9IFJlZygpOwogICAgICAgICB9CisKKyAgICAgICAgKyttX2ds
b2JhbEluc3RJbmRleDsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9ibG9ja3NB
ZnRlclRlcm1pbmFsUGF0Y2hGb3JTcGlsbGluZykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJl
Z2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgJKHJldmlzaW9uIDI1NDcxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0Fu
ZEdlbmVyYXRlQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEdl
bmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgewogICAgIFdURl9NQUtFX05PTk1PVkFCTEUoR2Vu
ZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyk7CiAKICAgICBzdHJ1Y3QgVG1wRGF0YSB7Ci0gICAg
ICAgIFN0YWNrU2xvdCogc3BpbGxTbG90OworICAgICAgICBTdGFja1Nsb3QqIHNwaWxsU2xvdCB7
IG51bGxwdHIgfTsKICAgICAgICAgUmVnIHJlZzsKICAgICB9OwogCkBAIC04NCw2ICs4NCw3IEBA
IHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV9uYW1lZFVzZWRSZWdzOwogICAgIFJlZ2lzdGVy
U2V0IG1fbmFtZWREZWZkUmVnczsKICAgICBSZWdpc3RlclNldCBtX2FsbG93ZWRSZWdpc3RlcnM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFVuaWZpZWRUbXBMaXZlbmVzcz4gbV9saXZlbmVzczsKIAog
ICAgIHN0cnVjdCBQYXRjaFNwaWxsRGF0YSB7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBq
dW1wOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAko
cmV2aXNpb24gMjU0NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZl
bmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRlcj4KIGNs
YXNzIExpdmVuZXNzIDogcHVibGljIFdURjo6TGl2ZW5lc3M8QWRhcHRlcj4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpdmVuZXNzKENvZGUmIGNvZGUpCiAg
ICAgICAgIDogV1RGOjpMaXZlbmVzczxBZGFwdGVyPihjb2RlLmNmZygpLCBjb2RlKQo=
</data>
<flag name="review"
          id="403867"
          type_id="1"
          status="+"
          setter="tzagallo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388122</attachid>
            <date>2020-01-17 17:30:41 -0800</date>
            <delta_ts>2020-01-17 19:24:35 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>12265</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQ3NjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTAxLTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEFpciBPMCBzaG91bGQgaGF2ZSBiZXR0ZXIgc3RhY2sgYWxsb2NhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGFkZXUgWmFnYWxsby4KKworICAgICAgICAqIHdhc20v
c3RyZXNzL2RvbnQtc3RhY2stb3ZlcmZsb3ctaW4tYWlyLmpzOiBBZGRlZC4KKwogMjAyMC0wMS0x
NyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgSlNP
Ti5wYXJzZSBzaG91bGQgbG9va3VwIHByb3RvdHlwZSBjaGFpbnMgZHVyaW5nIHJldml2YWwKSW5k
ZXg6IEpTVGVzdHMvd2FzbS9zdHJlc3MvZG9udC1zdGFjay1vdmVyZmxvdy1pbi1haXIuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy93YXNtL3N0cmVzcy9kb250LXN0YWNrLW92ZXJmbG93LWluLWFp
ci5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3dhc20vc3RyZXNzL2RvbnQtc3RhY2stb3Zl
cmZsb3ctaW4tYWlyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS1tYXhQZXJUaHJlYWRTdGFja1VzYWdlPTUxMjAwMCIpCisKK2ltcG9ydCBC
dWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4v
YXNzZXJ0LmpzJworCit7CisgICAgY29uc3QgbG9jYWxzID0gW107CisgICAgY29uc3QgbnVtTG9j
YWxzID0gMTAwMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUxvY2FsczsgKytpKQorICAg
ICAgICBsb2NhbHNbaV0gPSAiZjY0IjsKKworICAgIGNvbnN0IGIgPSBuZXcgQnVpbGRlcigpOwor
ICAgIGIuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5F
eHBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0IikKKyAgICAgICAgLkVuZCgpCisg
ICAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0IiwgeyBwYXJhbXM6IFsiaTMy
Il0sIHJldDogInZvaWQiIH0sIGxvY2FscykKKyAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAg
ICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAgICAuSTMyRXEoKQorICAgICAgICAgICAg
LkJySWYoMCkKKyAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgLkkzMkNvbnN0
KDEpCisgICAgICAgICAgICAuSTMyU3ViKCkKKyAgICAgICAgICAgIC5DYWxsKDApCisgICAgICAg
IC5FbmQoKQorICAgICAgICAuRW5kKCk7CisKKyAgICBjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5
KCkuZ2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4p
OworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7
CisKKyAgICAvLyBUaGlzIHNob3VsZCBub3Qgc3RhY2sgb3ZlcmZsb3cKKyAgICBpbnN0YW5jZS5l
eHBvcnRzLnRlc3QoMjUpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTQ3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDEtMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWlyIE8wIHNob3VsZCBoYXZlIGJldHRlciBzdGFjayBhbGxv
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBUYWRldSBaYWdhbGxvLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhIHNpbXBsZSBzdGFjayBzbG90IGFsbG9jYXRvciB0byBBaXIgTzAgdG8g
bWFrZSBjb2RlCisgICAgICAgIHVzZSBzbWFsbGVyIHN0YWNrIGZyYW1lcy4gVGhlIGh1Z2Ugc3Rh
Y2sgZnJhbWVzIGZyb20gdGhlIG9sZCBzdGFjaworICAgICAgICBhbGxvY2F0b3Igd2VyZSBsZWFk
aW5nIHRvIHN0YWNrIG92ZXJmbG93cyBpbiBzb21lIHByb2dyYW1zLiBCZWZvcmUsCisgICAgICAg
IGVhY2ggVG1wIGdvdCBpdHMgb3duIHN0YWNrIHNsb3QuIFRoZSBuZXcgYWxsb2NhdG9yIHdvcmtz
IHNpbWlsYXIgdG8gTzAncworICAgICAgICByZWdpc3RlciBhbGxvY2F0b3IuIFRoaXMgc3RhY2sg
YWxsb2NhdG9yIGxpbmVhcml6ZXMgdGhlIHByb2dyYW0gYW5kIHVzZXMgbGl2ZQorICAgICAgICBy
YW5nZSBlbmQgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGxhY2UgdGhlIHN0YWNrIHNsb3Qgb24gYSBm
cmVlIGxpc3Qgb2YKKyAgICAgICAgYXZhaWxhYmxlIHN0YWNrIHNsb3RzLiBUaGlzIHBhdGNoIGFs
c28gZml4ZXMgYW4gaXNzdWUgaW4gb3VyIGxpbmVhcml6YXRpb24gY29kZQorICAgICAgICB3aGVy
ZSB0aGUgaGVhZCBvZiBhIGJsb2NrIGFuZCB0aGUgdGFpbCBvZiBhbm90aGVyIGJsb2NrIHdvdWxk
IHNoYXJlIHRoZQorICAgICAgICBzYW1lIGxpbmVhcml6YXRpb24gaW5kZXguIFRoaXMgZGlkbid0
IG1hdHRlciBmb3IgcmVnaXN0ZXIgYWxsb2NhdGlvbiwgYnV0CisgICAgICAgIGRvZXMgbWF0dGVy
IGZvciB0aGUgc3RhY2sgYWxsb2NhdG9yLiBTbyAibGl2ZSBhdCBoZWFkIiwgYW5kICJsaXZlIGF0
IHRhaWwiCisgICAgICAgIG5vdyBnZXQgdGhlaXIgb3duIGxpbmVhcml6YXRpb24gaW5kZXguCisK
KyAgICAgICAgKiBiMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRl
Q29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM6OmJ1aWxkTGl2ZVJhbmdlcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVyYXRl
QW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhcmVGb3JHZW5lcmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUpOgorICAg
ICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2Rl
Lmg6CisgICAgICAgICogYjMvYWlyL0FpckxpdmVuZXNzLmg6CisKIDIwMjAtMDEtMTYgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgdGhlIGNv
ZGUgZ2VuZXJhdGVkIGJ5IERGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRl
Q29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
bGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAkocmV2aXNpb24gMjU0
NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVy
c0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQs
NyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmJ1aWxkCiAgICAgICAgICAg
ICBpZiAoIXRtcC5pc1JlZygpKQogICAgICAgICAgICAgICAgIG1fbGl2ZVJhbmdlRW5kW3RtcF0g
PSBtX2dsb2JhbEluc3RJbmRleDsKICAgICAgICAgfQorICAgICAgICArK21fZ2xvYmFsSW5zdElu
ZGV4OwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKICAgICAgICAgICAgIGlu
c3QuZm9yRWFjaFRtcEZhc3QoWyZdIChUbXAgdG1wKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0
bXAuaXNSZWcoKSkKQEAgLTk1LDYgKzk2LDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVn
aXN0ZXJzOjpidWlsZAogICAgICAgICAgICAgaWYgKCF0bXAuaXNSZWcoKSkKICAgICAgICAgICAg
ICAgICBtX2xpdmVSYW5nZUVuZFt0bXBdID0gbV9nbG9iYWxJbnN0SW5kZXg7CiAgICAgICAgIH0K
KyAgICAgICAgKyttX2dsb2JhbEluc3RJbmRleDsKICAgICB9CiB9CiAKQEAgLTI4MCwyMSArMjgy
LDc0IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGEKICAgICBoYW5k
bGVDYWxsZWVTYXZlcyhtX2NvZGUsIFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OwogICAgIGFsbG9jYXRlRXNjYXBlZFN0YWNrU2xvdHMobV9jb2RlKTsKIAotICAgIC8vIEVhY2gg
VG1wIGdldHMgaXRzIG93biBzdGFjayBzbG90LgotICAgIGF1dG8gY3JlYXRlU3RhY2tTbG90ID0g
WyZdIChjb25zdCBUbXAmIHRtcCkgewotICAgICAgICBUbXBEYXRhIGRhdGE7Ci0gICAgICAgIGRh
dGEuc3BpbGxTbG90ID0gbV9jb2RlLmFkZFN0YWNrU2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGls
bCk7Ci0gICAgICAgIGRhdGEucmVnID0gUmVnKCk7Ci0gICAgICAgIG1fbWFwW3RtcF0gPSBkYXRh
OwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIG1fYWxsVG1wc1t0bXAuYmFuaygpXS5hcHBl
bmQodG1wKTsKLSNlbmRpZgotICAgIH07CisgICAgaW5zZXJ0QmxvY2tzRm9yRmx1c2hBZnRlclRl
cm1pbmFsUGF0Y2hwb2ludHMoKTsKIAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jb2RlLmZv
ckVhY2hUbXAoWyZdIChUbXAgdG1wKSB7CiAgICAgICAgIEFTU0VSVCghdG1wLmlzUmVnKCkpOwot
ICAgICAgICBjcmVhdGVTdGFja1Nsb3QodG1wKTsKKyAgICAgICAgbV9hbGxUbXBzW3RtcC5iYW5r
KCldLmFwcGVuZCh0bXApOwogICAgIH0pOworI2VuZGlmCisKKyAgICBtX2xpdmVuZXNzID0gbWFr
ZVVuaXF1ZTxVbmlmaWVkVG1wTGl2ZW5lc3M+KG1fY29kZSk7CisKKyAgICB7CisgICAgICAgIGJ1
aWxkTGl2ZVJhbmdlcygqbV9saXZlbmVzcyk7CisKKyAgICAgICAgVmVjdG9yPFN0YWNrU2xvdCos
IDE2PiBmcmVlU2xvdHM7CisgICAgICAgIFZlY3RvcjxTdGFja1Nsb3QqLCA0PiB0b0ZyZWU7Cisg
ICAgICAgIG1fZ2xvYmFsSW5zdEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fY29kZSkgeworICAgICAgICAgICAgYXV0byBhc3NpZ25TdGFja1Nsb3RUb1RtcCA9
IFsmXSAoVG1wIHRtcCkgeworICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWcoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgVG1wRGF0YSYgZGF0YSA9
IG1fbWFwW3RtcF07CisgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3BpbGxTbG90KSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2xpdmVSYW5nZUVuZFt0bXBdID09IG1fZ2xvYmFsSW5zdElu
ZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgdG9GcmVlLmFwcGVuZChkYXRhLnNwaWxsU2xv
dCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoZnJlZVNsb3RzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YS5zcGlsbFNsb3QgPSBmcmVlU2xvdHMudGFrZUxhc3QoKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGRhdGEuc3BpbGxTbG90ID0gbV9jb2RlLmFkZFN0YWNr
U2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGlsbCk7CisgICAgICAgICAgICAgICAgZGF0YS5yZWcg
PSBSZWcoKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gZmx1c2hUb0ZyZWVM
aXN0ID0gWyZdIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIHN0YWNrU2xvdCA6IHRvRnJl
ZSkKKyAgICAgICAgICAgICAgICAgICAgZnJlZVNsb3RzLmFwcGVuZChzdGFja1Nsb3QpOworICAg
ICAgICAgICAgICAgIHRvRnJlZS5jbGVhcigpOworICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgZm9yIChUbXAgdG1wIDogbV9saXZlbmVzcy0+bGl2ZUF0SGVhZChibG9jaykpCisgICAgICAg
ICAgICAgICAgYXNzaWduU3RhY2tTbG90VG9UbXAodG1wKTsKKyAgICAgICAgICAgIGZsdXNoVG9G
cmVlTGlzdCgpOworCisgICAgICAgICAgICArK21fZ2xvYmFsSW5zdEluZGV4OworCisgICAgICAg
ICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8
VG1wLCA0PiBzZWVuVG1wczsKKyAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KFsm
XSAoVG1wIHRtcCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc2VlblRtcHMuY29udGFpbnMo
dG1wKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgc2VlblRtcHMuYXBwZW5kKHRtcCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2lnblN0YWNr
U2xvdFRvVG1wKHRtcCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBm
bHVzaFRvRnJlZUxpc3QoKTsKKyAgICAgICAgICAgICAgICArK21fZ2xvYmFsSW5zdEluZGV4Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKFRtcCB0bXAgOiBtX2xpdmVuZXNzLT5s
aXZlQXRUYWlsKGJsb2NrKSkKKyAgICAgICAgICAgICAgICBhc3NpZ25TdGFja1Nsb3RUb1RtcCh0
bXApOworICAgICAgICAgICAgZmx1c2hUb0ZyZWVMaXN0KCk7CisKKyAgICAgICAgICAgICsrbV9n
bG9iYWxJbnN0SW5kZXg7CisgICAgICAgIH0KKyAgICB9IAogCiAgICAgbV9hbGxvd2VkUmVnaXN0
ZXJzID0gUmVnaXN0ZXJTZXQoKTsKIApAQCAtMzAzLDcgKzM1OCw5IEBAIHZvaWQgR2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGEKIAogICAgICAgICBmb3IgKFJlZyByZWcgOiBtX3Jl
Z2lzdGVyc1tiYW5rXSkgewogICAgICAgICAgICAgbV9hbGxvd2VkUmVnaXN0ZXJzLnNldChyZWcp
OwotICAgICAgICAgICAgY3JlYXRlU3RhY2tTbG90KFRtcChyZWcpKTsKKyAgICAgICAgICAgIFRt
cERhdGEmIGRhdGEgPSBtX21hcFtUbXAocmVnKV07CisgICAgICAgICAgICBkYXRhLnNwaWxsU2xv
dCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwpOworICAgICAg
ICAgICAgZGF0YS5yZWcgPSBSZWcoKTsKICAgICAgICAgfQogICAgIH0pOwogCkBAIC0zMjMsMTEg
KzM4MCwzNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhCiAKICAg
ICBsb3dlclN0YWNrQXJncyhtX2NvZGUpOwogCi0gICAgLy8gVmVyaWZ5IG5vbmUgb2YgdGhlc2Ug
cGFzc2VzIGFkZCBhbnkgdG1wcy4KICNpZiBBU1NFUlRfRU5BQkxFRAorICAgIC8vIFZlcmlmeSBu
b25lIG9mIHRoZXNlIHBhc3NlcyBhZGQgYW55IHRtcHMuCiAgICAgZm9yRWFjaEJhbmsoWyZdIChC
YW5rIGJhbmspIHsKLSAgICAgICAgQVNTRVJUKG1fYWxsVG1wc1tiYW5rXS5zaXplKCkgLSBtX3Jl
Z2lzdGVyc1tiYW5rXS5zaXplKCkgPT0gbV9jb2RlLm51bVRtcHMoYmFuaykpOworICAgICAgICBB
U1NFUlQobV9hbGxUbXBzW2JhbmtdLnNpemUoKSA9PSBtX2NvZGUubnVtVG1wcyhiYW5rKSk7CiAg
ICAgfSk7CisKKyAgICB7CisgICAgICAgIC8vIFZlcmlmeSB0aGF0IGxvd2VyU3RhY2tBcmdzIGRp
ZG4ndCBjaGFuZ2UgVG1wIGxpdmVuZXNzIGF0IHRoZSBib3VuZGFyaWVzIGZvciB0aGUgVG1wcyBh
bmQgUmVnaXN0ZXJzIHdlIG1vZGVsLgorICAgICAgICBVbmlmaWVkVG1wTGl2ZW5lc3MgbGl2ZW5l
c3MobV9jb2RlKTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fY29kZSkgewor
ICAgICAgICAgICAgYXV0byBhc3NlcnRMaXZlbmVzc0FyZUVxdWFsID0gWyZdIChhdXRvIGEsIGF1
dG8gYikgeworICAgICAgICAgICAgICAgIEhhc2hTZXQ8VG1wPiBsaXZlbmVzc0E7CisgICAgICAg
ICAgICAgICAgSGFzaFNldDxUbXA+IGxpdmVuZXNzQjsKKyAgICAgICAgICAgICAgICBmb3IgKFRt
cCB0bXAgOiBhKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWcoKSAmJiBpc0Rp
c2FsbG93ZWRSZWdpc3Rlcih0bXAucmVnKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgICAgIGxpdmVuZXNzQS5hZGQodG1wKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogYikgeworICAgICAgICAg
ICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkgJiYgaXNEaXNhbGxvd2VkUmVnaXN0ZXIodG1wLnJl
ZygpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
ICAgICBsaXZlbmVzc0IuYWRkKHRtcCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgQVNTRVJUKGxpdmVuZXNzQSA9PSBsaXZlbmVzc0IpOworICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgYXNzZXJ0TGl2ZW5lc3NBcmVFcXVhbChtX2xpdmVuZXNzLT5saXZlQXRIZWFk
KGJsb2NrKSwgbGl2ZW5lc3MubGl2ZUF0SGVhZChibG9jaykpOworICAgICAgICAgICAgYXNzZXJ0
TGl2ZW5lc3NBcmVFcXVhbChtX2xpdmVuZXNzLT5saXZlQXRUYWlsKGJsb2NrKSwgbGl2ZW5lc3Mu
bGl2ZUF0VGFpbChibG9jaykpOworICAgICAgICB9CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTMz
NywxMiArNDIwLDkgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgog
CiAgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoIkFpcjo6Z2VuZXJhdGVBbmRBbGxvY2F0ZVJl
Z2lzdGVycyIpOwogCi0gICAgaW5zZXJ0QmxvY2tzRm9yRmx1c2hBZnRlclRlcm1pbmFsUGF0Y2hw
b2ludHMoKTsKLQogICAgIERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBkaXNhbGxv
d1NjcmF0Y2goKm1faml0KTsKIAotICAgIFVuaWZpZWRUbXBMaXZlbmVzcyBsaXZlbmVzcyhtX2Nv
ZGUpOwotICAgIGJ1aWxkTGl2ZVJhbmdlcyhsaXZlbmVzcyk7CisgICAgYnVpbGRMaXZlUmFuZ2Vz
KCptX2xpdmVuZXNzKTsKIAogICAgIEluZGV4TWFwPEJhc2ljQmxvY2sqLCBJbmRleE1hcDxSZWcs
IFRtcD4+IGN1cnJlbnRBbGxvY2F0aW9uTWFwKG1fY29kZS5zaXplKCkpOwogICAgIHsKQEAgLTM1
NSw3ICs0MzUsNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyCiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9jb2RlLm51bUVudHJ5cG9pbnRzKCk7IGktLTsp
IHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBtX2NvZGUuZW50cnlwb2lu
dChpKS5ibG9jaygpOwotICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbGl2ZW5lc3MubGl2ZUF0
SGVhZChlbnRyeXBvaW50KSkgeworICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbV9saXZlbmVz
cy0+bGl2ZUF0SGVhZChlbnRyeXBvaW50KSkgewogICAgICAgICAgICAgICAgIGlmICh0bXAuaXNS
ZWcoKSkKICAgICAgICAgICAgICAgICAgICAgY3VycmVudEFsbG9jYXRpb25NYXBbZW50cnlwb2lu
dF1bdG1wLnJlZygpXSA9IHRtcDsKICAgICAgICAgICAgIH0KQEAgLTQ0Myw2ICs1MjMsOCBAQCB2
b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyCiAgICAgICAgICAgICBtX2F2
YWlsYWJsZVJlZ3NbdG1wLmJhbmsoKV0uY2xlYXIocmVnKTsKICAgICAgICAgfQogCisgICAgICAg
ICsrbV9nbG9iYWxJbnN0SW5kZXg7CisKICAgICAgICAgYm9vbCBpc1JlcGxheWluZ1NhbWVJbnN0
ID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGluc3RJbmRleCA9IDA7IGluc3RJbmRleCA8
IGJsb2NrLT5zaXplKCk7ICsraW5zdEluZGV4KSB7CiAgICAgICAgICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CkBAIC02NzMsNyArNzU1LDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0
ZXJzOjpnZW5lcgogICAgICAgICAgICAgICAgICAgICAgICAgZXZlcnlTdWNjZXNzb3JHZXRzT3Vy
UmVnaXN0ZXJTdGF0ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBpZiAoIWV2ZXJ5U3VjY2Vzc29yR2V0c091clJlZ2lzdGVyU3RhdGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZm9yIChUbXAgdG1wIDogbGl2ZW5lc3MubGl2ZUF0VGFpbChibG9jaykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbV9saXZlbmVzcy0+bGl2ZUF0VGFpbChi
bG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWcoKSAmJiBpc0Rp
c2FsbG93ZWRSZWdpc3Rlcih0bXAucmVnKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZyByZWcgPSBtX21hcFt0
bXBdLnJlZykKQEAgLTc1Miw2ICs4MzQsOCBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM6OmdlbmVyCiAgICAgICAgICAgICBpZiAoVG1wIHRtcCA9IGN1cnJlbnRBbGxvY2F0aW9u
W2ldKQogICAgICAgICAgICAgICAgIG1fbWFwW3RtcF0ucmVnID0gUmVnKCk7CiAgICAgICAgIH0K
KworICAgICAgICArK21fZ2xvYmFsSW5zdEluZGV4OwogICAgIH0KIAogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX2Jsb2Nrc0FmdGVyVGVybWluYWxQYXRjaEZvclNwaWxsaW5nKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tB
bmRHZW5lcmF0ZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaAkocmV2aXNp
b24gMjU0NzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJl
Z2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDcgQEAgY2xhc3MgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyB7CiAgICAgV1RGX01B
S0VfTk9OTU9WQUJMRShHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzKTsKIAogICAgIHN0cnVj
dCBUbXBEYXRhIHsKLSAgICAgICAgU3RhY2tTbG90KiBzcGlsbFNsb3Q7CisgICAgICAgIFN0YWNr
U2xvdCogc3BpbGxTbG90IHsgbnVsbHB0ciB9OwogICAgICAgICBSZWcgcmVnOwogICAgIH07CiAK
QEAgLTg0LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBSZWdpc3RlclNldCBtX25hbWVkVXNlZFJl
Z3M7CiAgICAgUmVnaXN0ZXJTZXQgbV9uYW1lZERlZmRSZWdzOwogICAgIFJlZ2lzdGVyU2V0IG1f
YWxsb3dlZFJlZ2lzdGVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5pZmllZFRtcExpdmVuZXNz
PiBtX2xpdmVuZXNzOwogCiAgICAgc3RydWN0IFBhdGNoU3BpbGxEYXRhIHsKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGp1bXA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckxpdmVuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJMaXZlbmVzcy5oCShyZXZpc2lvbiAyNTQ3MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckxpdmVuZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdGVyPgogY2xhc3MgTGl2ZW5lc3MgOiBwdWJsaWMgV1RGOjpMaXZlbmVzczxBZGFw
dGVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGl2ZW5l
c3MoQ29kZSYgY29kZSkKICAgICAgICAgOiBXVEY6OkxpdmVuZXNzPEFkYXB0ZXI+KGNvZGUuY2Zn
KCksIGNvZGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>