<?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>208504</bug_id>
          
          <creation_ts>2020-03-03 01:24:17 -0800</creation_ts>
          <short_desc>Avoid full style resolution on Element::focus()</short_desc>
          <delta_ts>2021-01-12 23:04:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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=220580</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>emilio</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1624981</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-03 01:24:17 -0800</bug_when>
    <thetext>It can be costly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624983</commentid>
    <comment_count>1</comment_count>
      <attachid>392254</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-03 01:25:48 -0800</bug_when>
    <thetext>Created attachment 392254
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624989</commentid>
    <comment_count>2</comment_count>
      <attachid>392258</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-03 03:20:12 -0800</bug_when>
    <thetext>Created attachment 392258
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625029</commentid>
    <comment_count>3</comment_count>
      <attachid>392270</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-03 06:33:20 -0800</bug_when>
    <thetext>Created attachment 392270
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625121</commentid>
    <comment_count>4</comment_count>
      <attachid>392295</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-03 10:37:00 -0800</bug_when>
    <thetext>Created attachment 392295
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625186</commentid>
    <comment_count>5</comment_count>
      <attachid>392312</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-03 12:47:50 -0800</bug_when>
    <thetext>Created attachment 392312
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625187</commentid>
    <comment_count>6</comment_count>
      <attachid>392313</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-03 12:49:27 -0800</bug_when>
    <thetext>Created attachment 392313
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625190</commentid>
    <comment_count>7</comment_count>
      <attachid>392313</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-03-03 12:55:36 -0800</bug_when>
    <thetext>Comment on attachment 392313
patch

I&apos;ve got a bit of a compat/regression concern here, but let&apos;s see what happens...also YAY.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625230</commentid>
    <comment_count>8</comment_count>
      <attachid>392313</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-03 13:56:05 -0800</bug_when>
    <thetext>Comment on attachment 392313
patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        This appears to be 3-4% Speedometer progression.

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625440</commentid>
    <comment_count>9</comment_count>
      <attachid>392385</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 00:29:15 -0800</bug_when>
    <thetext>Created attachment 392385
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625453</commentid>
    <comment_count>10</comment_count>
      <attachid>392393</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 01:22:10 -0800</bug_when>
    <thetext>Created attachment 392393
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625464</commentid>
    <comment_count>11</comment_count>
      <attachid>392399</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 02:25:36 -0800</bug_when>
    <thetext>Created attachment 392399
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625476</commentid>
    <comment_count>12</comment_count>
      <attachid>392399</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 04:11:19 -0800</bug_when>
    <thetext>Comment on attachment 392399
patch

Clearing flags on attachment: 392399

Committed r257839: &lt;https://trac.webkit.org/changeset/257839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625477</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 04:11:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625478</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-04 04:12:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/60035288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625481</commentid>
    <comment_count>15</comment_count>
      <attachid>392399</attachid>
    <who name="Emilio Cobos Álvarez (:emilio)">emilio</who>
    <bug_when>2020-03-04 05:36:54 -0800</bug_when>
    <thetext>Comment on attachment 392399
patch

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

&gt; Source/WebCore/dom/Element.cpp:3352
&gt; +    for (auto&amp; element : ancestorsOfType&lt;Element&gt;(*this)) {

This should probably be the flat / composed tree ancestors, right? I suspect this would crash otherwise in some shadow DOM situations involving slotting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625485</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 06:15:02 -0800</bug_when>
    <thetext>Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625488</commentid>
    <comment_count>17</comment_count>
      <attachid>392406</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 06:26:38 -0800</bug_when>
    <thetext>Created attachment 392406
followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625496</commentid>
    <comment_count>18</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 06:54:48 -0800</bug_when>
    <thetext>Reopening for a followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625497</commentid>
    <comment_count>19</comment_count>
      <attachid>392410</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 06:55:12 -0800</bug_when>
    <thetext>Created attachment 392410
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625498</commentid>
    <comment_count>20</comment_count>
      <attachid>392411</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-04 07:05:30 -0800</bug_when>
    <thetext>Created attachment 392411
followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625526</commentid>
    <comment_count>21</comment_count>
      <attachid>392411</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 08:34:47 -0800</bug_when>
    <thetext>Comment on attachment 392411
followup

Clearing flags on attachment: 392411

Committed r257846: &lt;https://trac.webkit.org/changeset/257846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625527</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-04 08:34:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392254</attachid>
            <date>2020-03-03 01:25:48 -0800</date>
            <delta_ts>2020-03-03 03:20:25 -0800</delta_ts>
            <desc>wip</desc>
            <filename>focus-no-style-resolution.patch</filename>
            <type>text/plain</type>
            <size>6422</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDYwZjVmYTZjMmY1Li43OWRmODVkY2M4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MzMyLDkgKzQzMzIsNiBAQCBib29sIERvY3VtZW50
OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIEZvYwogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4ob2xkRm9jdXNlZEVs
ZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBIVE1MSW5wdXRFbGVtZW50OjpkaWRCbHVyIGp1c3Qg
c2Nyb2xscyB0ZXh0IGZpZWxkcyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBjb3VsZCBiZSBkb25lIGFzeW5jaHJvbnVzbHkuCi0gICAgICAgICAgICAv
LyBVcGRhdGluZyBzdHlsZSBtYXkgZGlzcGF0Y2ggZXZlbnRzIGR1ZSB0byBQb3N0UmVzb2x1dGlv
bkNhbGxiYWNrCi0gICAgICAgICAgICBpZiAoZXZlbnRzTW9kZSA9PSBGb2N1c1JlbW92YWxFdmVu
dHNNb2RlOjpEaXNwYXRjaCkKLSAgICAgICAgICAgICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7
CiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqb2xkRm9jdXNlZEVsZW1l
bnQpLmRpZEJsdXIoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0MjIsMTAgKzQ0MTksNiBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIEZvYwogICAgICAgICBwYWdlKCktPmNocm9tZSgpLmZvY3VzZWRF
bGVtZW50Q2hhbmdlZChtX2ZvY3VzZWRFbGVtZW50LmdldCgpKTsKIAogU2V0Rm9jdXNlZE5vZGVE
b25lOgotICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVlIHRvIFBv
c3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAvLyBGSVhNRTogV2h5IGlzIHN5bmNocm9ub3VzIHN0
eWxlIHVwZGF0ZSBuZWVkZWQgaGVyZSBhdCBhbGw/Ci0gICAgaWYgKGV2ZW50c01vZGUgPT0gRm9j
dXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpCi0gICAgICAgIHVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICAgICByZXR1cm4gIWZvY3VzQ2hhbmdlQmxvY2tlZDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IGNlMmQ3MWFlY2Q5Li42NWVlOTgwNGRhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtNjA3LDIzICs2MDcsMTMgQEAgYm9vbCBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewotICAg
ICAgICAvLyBJZiB0aGUgbm9kZSBpcyBpbiBhIGRpc3BsYXk6bm9uZSB0cmVlIGl0IG1pZ2h0IHNh
eSBpdCBuZWVkcyBzdHlsZSByZWNhbGMgYnV0Ci0gICAgICAgIC8vIHRoZSB3aG9sZSBkb2N1bWVu
dCBpcyBhY3R1YWxseSB1cCB0byBkYXRlLgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gYXNzZXJ0ICFuZWVkc1N0eWxlUmVjYWxjKCkgfHwgIWRvY3VtZW50KCkuY2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCkKLSAgICAgICAgLy8gYnV0IGl0IGhpdHMgdG9vIGZyZXF1ZW50bHkg
b24gd2Vic2l0ZXMgbGlrZSBHbWFpbCBhbmQgTWljcm9zb2Z0IEV4Y2hhbmdlLgotCiAgICAgICAg
IC8vIEVsZW1lbnRzIGluIGNhbnZhcyBmYWxsYmFjayBjb250ZW50IGFyZSBub3QgcmVuZGVyZWQs
IGJ1dCB0aGV5IGFyZSBhbGxvd2VkIHRvIGJlCiAgICAgICAgIC8vIGZvY3VzYWJsZSBhcyBsb25n
IGFzIHRoZWlyIGNhbnZhcyBpcyBkaXNwbGF5ZWQgYW5kIHZpc2libGUuCiAgICAgICAgIGlmIChh
dXRvKiBjYW52YXMgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCp0aGlzKS5m
aXJzdCgpKQotICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyZXIoKSAmJiBjYW52YXMt
PnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7
CisgICAgICAgICAgICByZXR1cm4gY2FudmFzLT5pc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nU3R5
bGUoKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogRXZlbiBpZiB3ZSBhcmUgbm90IHZpc2libGUs
IHdlIG1pZ2h0IGhhdmUgYSBjaGlsZCB0aGF0IGlzIHZpc2libGUuCi0gICAgLy8gSHlhdHQgd2Fu
dHMgdG8gZml4IHRoYXQgc29tZSBkYXkgd2l0aCBhICJoYXMgdmlzaWJsZSBjb250ZW50IiBmbGFn
IG9yIHRoZSBsaWtlLgotICAgIGlmICghcmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaXNWaXNpYmxlV2l0aG91dFJlc29s
dmluZ1N0eWxlKCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aXNVc2VyQWN0aW9uRWxlbWVudEluQWN0
aXZlQ2hhaW4oKSBjb25zdApAQCAtMjk4NCw5ICsyOTc0LDE1IEBAIHZvaWQgRWxlbWVudDo6Zm9j
dXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorLy8gICAgaWYgKGRvY3VtZW50LT5uZWVkc1N0
eWxlUmVjYWxjKCkpIHsKKy8vICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImZvY3VzIG5lZWRzU3R5
bGVSZWNhbGMgaWQ9JXNcbiIsIGdldElkQXR0cmlidXRlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisvLyAgICAgICAgZm9yIChhdXRvJiBhbmMgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCp0
aGlzKSkKKy8vICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyAlZCAgcmVuZGVyZXIgJXBc
biIsIGFuYy5sb2NhbE5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAoaW50KWFuYy5zdHls
ZVZhbGlkaXR5KCksIGFuYy5yZW5kZXJlcigpKTsKKy8vICAgIH0KKwogICAgIFJlZlB0cjxFbGVt
ZW50PiBuZXdUYXJnZXQgPSB0aGlzOwotICAgIGlmIChkb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRz
TG9hZGVkKCkpCi0gICAgICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisvLyAg
ICBpZiAoZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQorLy8gICAgICAgIGRvY3Vt
ZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICBpZiAoJm5ld1RhcmdldC0+ZG9jdW1l
bnQoKSAhPSBkb2N1bWVudC5wdHIoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI5MCw3ICszMjg2
LDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJlbmRlck9yRGlzcGxheUNvbnRlbnRz
U3R5bGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBSZW5kZXJTdHls
ZSYgRWxlbWVudDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKQorY29uc3QgUmVuZGVyU3R5bGUqIEVs
ZW1lbnQ6OnJlc29sdmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSBtb2Rl
KQogewogICAgIEFTU0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQoIWV4aXN0aW5nQ29t
cHV0ZWRTdHlsZSgpKTsKQEAgLTMzMTQsOSArMzMxMCw1MCBAQCBjb25zdCBSZW5kZXJTdHlsZSYg
RWxlbWVudDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKQogICAgICAgICBjb21wdXRlZFN0eWxlID0g
c3R5bGUuZ2V0KCk7CiAgICAgICAgIEVsZW1lbnRSYXJlRGF0YSYgcmFyZURhdGEgPSBlbGVtZW50
LT5lbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICAgICAgcmFyZURhdGEuc2V0Q29tcHV0ZWRT
dHlsZShXVEZNb3ZlKHN0eWxlKSk7CisKKyAgICAgICAgaWYgKG1vZGUgPT0gUmVzb2x2ZUNvbXB1
dGVkU3R5bGVNb2RlOjpSZW5kZXJlZE9ubHkgJiYgY29tcHV0ZWRTdHlsZS0+ZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgcmV0dXJuICpjb21wdXRlZFN0eWxlOworICAgIHJldHVybiBjb21wdXRlZFN0eWxlOwor
fQorCitib29sIEVsZW1lbnQ6Omhhc1ZhbGlkU3R5bGUoKSBjb25zdAoreworICAgIGlmICghZG9j
dW1lbnQoKS5uZWVkc1N0eWxlUmVjYWxjKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAor
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7
CisgICAgICAgIGlmIChlbGVtZW50LnN0eWxlVmFsaWRpdHkoKSAhPSBTdHlsZTo6VmFsaWRpdHk6
OlZhbGlkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBFbGVtZW50Ojppc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nU3R5bGUoKSBj
b25zdAoreworICAgIGlmIChoYXNWYWxpZFN0eWxlKCkpCisgICAgICAgIHJldHVybiByZW5kZXJT
dHlsZSgpICYmIHJlbmRlclN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNp
YmxlOworCisgICAgYXV0byogc3R5bGUgPSBleGlzdGluZ0NvbXB1dGVkU3R5bGUoKTsKKyAgICBp
ZiAoIXN0eWxlKQorICAgICAgICBzdHlsZSA9IGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKS5y
ZXNvbHZlQ29tcHV0ZWRTdHlsZShSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGU6OlJlbmRlcmVkT25s
eSk7CisKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
c3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS0+ZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpDb250ZW50cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKHN0eWxlLT52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogYW5jZXN0b3JzT2ZUeXBl
PEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoZWxlbWVudC5leGlzdGluZ0NvbXB1dGVk
U3R5bGUoKS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBSZW5kZXJT
dHlsZSYgRWxlbWVudDo6cmVzb2x2ZVBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKQpAQCAtMzM0OSw3ICszMzg2LDcgQEAgY29uc3QgUmVuZGVyU3R5bGUq
IEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikK
IAogICAgIGF1dG8qIHN0eWxlID0gZXhpc3RpbmdDb21wdXRlZFN0eWxlKCk7CiAgICAgaWYgKCFz
dHlsZSkKLSAgICAgICAgc3R5bGUgPSAmcmVzb2x2ZUNvbXB1dGVkU3R5bGUoKTsKKyAgICAgICAg
c3R5bGUgPSByZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOwogCiAgICAgaWYgKHBzZXVkb0VsZW1lbnRT
cGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUpIHsKICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZFBz
ZXVkb1N0eWxlID0gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRTcGVj
aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNmE3YThlN2VkNWMuLmRjY2FmMWQzOWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKQEAgLTY5Miw4ICs2OTIsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVtb3ZlU2hhZG93Um9vdCgpOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHJlc29sdmVD
b21wdXRlZFN0eWxlKCk7CisgICAgZW51bSBjbGFzcyBSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGUg
eyBOb3JtYWwsIFJlbmRlcmVkT25seSB9OworICAgIGNvbnN0IFJlbmRlclN0eWxlKiByZXNvbHZl
Q29tcHV0ZWRTdHlsZShSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGUgPSBSZXNvbHZlQ29tcHV0ZWRT
dHlsZU1vZGU6Ok5vcm1hbCk7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJlc29sdmVQc2V1ZG9F
bGVtZW50U3R5bGUoUHNldWRvSWQpOworICAgIGJvb2wgaGFzVmFsaWRTdHlsZSgpIGNvbnN0Owor
ICAgIGJvb2wgaXNWaXNpYmxlV2l0aG91dFJlc29sdmluZ1N0eWxlKCkgY29uc3Q7CiAKICAgICB1
bnNpZ25lZCByYXJlRGF0YUNoaWxkSW5kZXgoKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392258</attachid>
            <date>2020-03-03 03:20:12 -0800</date>
            <delta_ts>2020-03-03 06:33:20 -0800</delta_ts>
            <desc>wip</desc>
            <filename>focus-no-style-resolution-2.patch</filename>
            <type>text/plain</type>
            <size>8132</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDYwZjVmYTZjMmY1Li43OWRmODVkY2M4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MzMyLDkgKzQzMzIsNiBAQCBib29sIERvY3VtZW50
OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIEZvYwogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4ob2xkRm9jdXNlZEVs
ZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBIVE1MSW5wdXRFbGVtZW50OjpkaWRCbHVyIGp1c3Qg
c2Nyb2xscyB0ZXh0IGZpZWxkcyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBjb3VsZCBiZSBkb25lIGFzeW5jaHJvbnVzbHkuCi0gICAgICAgICAgICAv
LyBVcGRhdGluZyBzdHlsZSBtYXkgZGlzcGF0Y2ggZXZlbnRzIGR1ZSB0byBQb3N0UmVzb2x1dGlv
bkNhbGxiYWNrCi0gICAgICAgICAgICBpZiAoZXZlbnRzTW9kZSA9PSBGb2N1c1JlbW92YWxFdmVu
dHNNb2RlOjpEaXNwYXRjaCkKLSAgICAgICAgICAgICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7
CiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqb2xkRm9jdXNlZEVsZW1l
bnQpLmRpZEJsdXIoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0MjIsMTAgKzQ0MTksNiBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIEZvYwogICAgICAgICBwYWdlKCktPmNocm9tZSgpLmZvY3VzZWRF
bGVtZW50Q2hhbmdlZChtX2ZvY3VzZWRFbGVtZW50LmdldCgpKTsKIAogU2V0Rm9jdXNlZE5vZGVE
b25lOgotICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVlIHRvIFBv
c3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAvLyBGSVhNRTogV2h5IGlzIHN5bmNocm9ub3VzIHN0
eWxlIHVwZGF0ZSBuZWVkZWQgaGVyZSBhdCBhbGw/Ci0gICAgaWYgKGV2ZW50c01vZGUgPT0gRm9j
dXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpCi0gICAgICAgIHVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICAgICByZXR1cm4gIWZvY3VzQ2hhbmdlQmxvY2tlZDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IGNlMmQ3MWFlY2Q5Li5lMmM2Yzg5NWI1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtNjA3LDIzICs2MDcsMTMgQEAgYm9vbCBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewotICAg
ICAgICAvLyBJZiB0aGUgbm9kZSBpcyBpbiBhIGRpc3BsYXk6bm9uZSB0cmVlIGl0IG1pZ2h0IHNh
eSBpdCBuZWVkcyBzdHlsZSByZWNhbGMgYnV0Ci0gICAgICAgIC8vIHRoZSB3aG9sZSBkb2N1bWVu
dCBpcyBhY3R1YWxseSB1cCB0byBkYXRlLgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gYXNzZXJ0ICFuZWVkc1N0eWxlUmVjYWxjKCkgfHwgIWRvY3VtZW50KCkuY2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCkKLSAgICAgICAgLy8gYnV0IGl0IGhpdHMgdG9vIGZyZXF1ZW50bHkg
b24gd2Vic2l0ZXMgbGlrZSBHbWFpbCBhbmQgTWljcm9zb2Z0IEV4Y2hhbmdlLgotCiAgICAgICAg
IC8vIEVsZW1lbnRzIGluIGNhbnZhcyBmYWxsYmFjayBjb250ZW50IGFyZSBub3QgcmVuZGVyZWQs
IGJ1dCB0aGV5IGFyZSBhbGxvd2VkIHRvIGJlCiAgICAgICAgIC8vIGZvY3VzYWJsZSBhcyBsb25n
IGFzIHRoZWlyIGNhbnZhcyBpcyBkaXNwbGF5ZWQgYW5kIHZpc2libGUuCiAgICAgICAgIGlmIChh
dXRvKiBjYW52YXMgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCp0aGlzKS5m
aXJzdCgpKQotICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyZXIoKSAmJiBjYW52YXMt
PnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7
CisgICAgICAgICAgICByZXR1cm4gY2FudmFzLT5pc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVs
bFN0eWxlKCk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNp
YmxlLCB3ZSBtaWdodCBoYXZlIGEgY2hpbGQgdGhhdCBpcyB2aXNpYmxlLgotICAgIC8vIEh5YXR0
IHdhbnRzIHRvIGZpeCB0aGF0IHNvbWUgZGF5IHdpdGggYSAiaGFzIHZpc2libGUgY29udGVudCIg
ZmxhZyBvciB0aGUgbGlrZS4KLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzVmlzaWJsZVdpdGhvdXRS
ZXNvbHZpbmdGdWxsU3R5bGUoKTsKIH0KIAogYm9vbCBFbGVtZW50Ojppc1VzZXJBY3Rpb25FbGVt
ZW50SW5BY3RpdmVDaGFpbigpIGNvbnN0CkBAIC0yOTg0LDkgKzI5NzQsMTUgQEAgdm9pZCBFbGVt
ZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisvLyAgICBpZiAoZG9jdW1lbnQt
Pm5lZWRzU3R5bGVSZWNhbGMoKSkgeworLy8gICAgICAgIGZwcmludGYoc3RkZXJyLCAiZm9jdXMg
bmVlZHNTdHlsZVJlY2FsYyBpZD0lc1xuIiwgZ2V0SWRBdHRyaWJ1dGUoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKy8vICAgICAgICBmb3IgKGF1dG8mIGFuYyA6IGxpbmVhZ2VPZlR5cGU8RWxl
bWVudD4oKnRoaXMpKQorLy8gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVkICByZW5k
ZXJlciAlcFxuIiwgYW5jLmxvY2FsTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIChpbnQp
YW5jLnN0eWxlVmFsaWRpdHkoKSwgYW5jLnJlbmRlcmVyKCkpOworLy8gICAgfQorCiAgICAgUmVm
UHRyPEVsZW1lbnQ+IG5ld1RhcmdldCA9IHRoaXM7Ci0gICAgaWYgKGRvY3VtZW50LT5oYXZlU3R5
bGVzaGVldHNMb2FkZWQoKSkKLSAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKKy8vICAgIGlmIChkb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCisvLyAgICAg
ICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIGlmICgmbmV3VGFyZ2V0
LT5kb2N1bWVudCgpICE9IGRvY3VtZW50LnB0cigpKQogICAgICAgICByZXR1cm47CkBAIC0zMjkw
LDcgKzMyODYsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6cmVuZGVyT3JEaXNwbGF5
Q29udGVudHNTdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0IFJl
bmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCitjb25zdCBSZW5kZXJT
dHlsZSogRWxlbWVudDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5bGVN
b2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOwogICAgIEFTU0VSVCghZXhp
c3RpbmdDb21wdXRlZFN0eWxlKCkpOwpAQCAtMzMxNCw5ICszMzEwLDUwIEBAIGNvbnN0IFJlbmRl
clN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCiAgICAgICAgIGNvbXB1dGVk
U3R5bGUgPSBzdHlsZS5nZXQoKTsKICAgICAgICAgRWxlbWVudFJhcmVEYXRhJiByYXJlRGF0YSA9
IGVsZW1lbnQtPmVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgICAgICByYXJlRGF0YS5zZXRD
b21wdXRlZFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKKworICAgICAgICBpZiAobW9kZSA9PSBSZXNv
bHZlQ29tcHV0ZWRTdHlsZU1vZGU6OlJlbmRlcmVkT25seSAmJiBjb21wdXRlZFN0eWxlLT5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gKmNvbXB1dGVkU3R5bGU7CisgICAgcmV0dXJuIGNvbXB1dGVk
U3R5bGU7Cit9CisKK2Jvb2wgRWxlbWVudDo6aGFzVmFsaWRTdHlsZSgpIGNvbnN0Cit7CisgICAg
aWYgKCFkb2N1bWVudCgpLm5lZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigq
dGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGVWYWxpZGl0eSgpICE9IFN0eWxlOjpW
YWxpZGl0eTo6VmFsaWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdG
dWxsU3R5bGUoKSBjb25zdAoreworICAgIGlmIChoYXNWYWxpZFN0eWxlKCkpCisgICAgICAgIHJl
dHVybiByZW5kZXJTdHlsZSgpICYmIHJlbmRlclN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpWaXNpYmxlOworCisgICAgYXV0byogc3R5bGUgPSBleGlzdGluZ0NvbXB1dGVkU3R5
bGUoKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICBzdHlsZSA9IGNvbnN0X2Nhc3Q8RWxlbWVu
dCY+KCp0aGlzKS5yZXNvbHZlQ29tcHV0ZWRTdHlsZShSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGU6
OlJlbmRlcmVkT25seSk7CisKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHls
ZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKHN0eWxlLT52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogYW5j
ZXN0b3JzT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoZWxlbWVudC5leGlz
dGluZ0NvbXB1dGVkU3R5bGUoKS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiBj
b25zdCBSZW5kZXJTdHlsZSYgRWxlbWVudDo6cmVzb2x2ZVBzZXVkb0VsZW1lbnRTdHlsZShQc2V1
ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQpAQCAtMzM0OSw3ICszMzg2LDcgQEAgY29uc3Qg
UmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVu
dFNwZWNpZmllcikKIAogICAgIGF1dG8qIHN0eWxlID0gZXhpc3RpbmdDb21wdXRlZFN0eWxlKCk7
CiAgICAgaWYgKCFzdHlsZSkKLSAgICAgICAgc3R5bGUgPSAmcmVzb2x2ZUNvbXB1dGVkU3R5bGUo
KTsKKyAgICAgICAgc3R5bGUgPSByZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOwogCiAgICAgaWYgKHBz
ZXVkb0VsZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUpIHsKICAgICAgICAgaWYgKGF1
dG8qIGNhY2hlZFBzZXVkb1N0eWxlID0gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNmE3YThlN2VkNWMuLjI4
Y2FkODkxMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM0Myw2ICszNDMsOSBAQCBwdWJsaWM6
CiAKICAgICBib29sIG5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSBjb25zdDsKIAorICAgIGJvb2wg
aGFzVmFsaWRTdHlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNWaXNpYmxlV2l0aG91dFJlc29sdmlu
Z0Z1bGxTdHlsZSgpIGNvbnN0OworCiAgICAgLy8gTWV0aG9kcyBmb3IgaW5kaWNhdGluZyB0aGUg
c3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHluYW1pYyB1cGRhdGVzIChlLmcuLCBjaGlsZHJlbiBjaGFu
Z2luZywgb3VyIHBvc2l0aW9uIGNoYW5naW5nIGluIG91ciBzaWJsaW5nIGxpc3QsIGV0Yy4pCiAg
ICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNTdHlsZUZs
YWcoRWxlbWVudFN0eWxlRmxhZzo6U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKTsgfQogICAgIGJvb2wg
c3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdCB7IHJldHVybiBoYXNTdHlsZUZsYWcoRWxlbWVu
dFN0eWxlRmxhZzo6U3R5bGVBZmZlY3RlZEJ5RW1wdHkpOyB9CkBAIC02OTIsNyArNjk1LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOwogCi0gICAgY29uc3QgUmVu
ZGVyU3R5bGUmIHJlc29sdmVDb21wdXRlZFN0eWxlKCk7CisgICAgZW51bSBjbGFzcyBSZXNvbHZl
Q29tcHV0ZWRTdHlsZU1vZGUgeyBOb3JtYWwsIFJlbmRlcmVkT25seSB9OworICAgIGNvbnN0IFJl
bmRlclN0eWxlKiByZXNvbHZlQ29tcHV0ZWRTdHlsZShSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGUg
PSBSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGU6Ok5vcm1hbCk7CiAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIHJlc29sdmVQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRvSWQpOwogCiAgICAgdW5zaWduZWQg
cmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5jcHAKaW5kZXggNTExNGIyMDM3NDIuLjY4OGFlODE2MjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgYm9vbCBIVE1MQXJl
YUVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogYm9vbCBIVE1MQXJlYUVsZW1lbnQ6
OmlzRm9jdXNhYmxlKCkgY29uc3QKIHsKICAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1h
Z2UgPSBpbWFnZUVsZW1lbnQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+cmVuZGVyZXIo
KSB8fCBpbWFnZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNWaXNpYmxlV2l0aG91dFJl
c29sdmluZ0Z1bGxTdHlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
c3VwcG9ydHNGb2N1cygpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlT3IoMCkgPj0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggMzg1MTk5Y2JhNjguLjRhYWUxYTQ2
ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtMjc5LDYgKzI3OSw4IEBAIHZv
aWQqIFdLQWNjZXNzaWJpbGl0eUZvY3VzZWRPYmplY3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYp
CiAKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CiAK
KyAgICBmb2N1c2VkRG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwogICAgIGF1dG8q
IGF4T2JqZWN0Q2FjaGUgPSBmb2N1c2VkRG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBp
ZiAoIWF4T2JqZWN0Q2FjaGUpCiAgICAgICAgIHJldHVybiAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392270</attachid>
            <date>2020-03-03 06:33:20 -0800</date>
            <delta_ts>2020-03-03 10:37:00 -0800</delta_ts>
            <desc>wip</desc>
            <filename>focus-no-style-resolution-3.patch</filename>
            <type>text/plain</type>
            <size>11213</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9k
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVk
LW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDc2OGViZTNlY2Q2Li43ZDRkMTgwNDA3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5v
ZGUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
YSBub2RlIGRvZXMgbm90IHJldGFpbiBrZXlib2FyZCBmb2N1cyBhZnRlciBpdCBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gdGhlIERPTS4KIAotIFBBU1M6IGRpZCBub3QgZ2V0IGtleWJvYXJkIGV2ZW50
LgorUEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS5odG1sCmluZGV4IGFlOTVhOTM5N2E1
Li5hNjU3MmYzNjE4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJl
c3MtcmVtb3ZlZC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJl
c3MtcmVtb3ZlZC1ub2RlLmh0bWwKQEAgLTEsOCArMSw2IEBACiA8cD5UaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCBhIG5vZGUgZG9lcyBub3QgcmV0YWluIGtleWJvYXJkIGZvY3VzIGFmdGVyIGl0IGhh
cwogYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS48L3A+Ci08aHI+Ci08aW5wdXQgdHlwZT0idGV4
dCI+Ci08cHJlIGlkPSJjb25zb2xlIj5QQVNTOiBkaWQgbm90IGdldCBrZXlib2FyZCBldmVudC48
L3ByZT4KKzxocj48aW5wdXQgdHlwZT0idGV4dCI+PHByZSBpZD0iY29uc29sZSI+UEFTUzogZGlk
IG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuPC9wcmU+CiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LnRl
c3RSdW5uZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1p
bnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9m
b2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwKaW5kZXggYTIwZTU1YWYxOGUuLjZhY2Zm
YWYzMjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1
dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRv
Zm9jdXMtaW5wdXQtY3NzLXN0eWxlLWNoYW5nZS5odG1sCkBAIC0xMyw5ICsxMywxMSBAQCBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAot
dmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwotaWYgKGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGVzdCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMTI4LCAwKSIpCi0gICAgcmVzdWx0Lmlu
bmVySFRNTCA9ICJQQVNTIjsKK3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+eworICAgIGlmIChn
ZXRDb21wdXRlZFN0eWxlKHRlc3QsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQt
Y29sb3InKSA9PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0g
IlBBU1MiOworfSk7CisKIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggM2YxODU0NGE3NGIu
LmZjYTgyYTRiYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKQEAgLTQyNyw2ICs0MjcsOCBAQCBBWENvcmVPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFm
b2N1c2VkRG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgZm9jdXNlZERv
Y3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQogICAgIGlmIChjbGllbnRTdXBwb3J0c0lzb2xhdGVkVHJlZSgpKQog
ICAgICAgICByZXR1cm4gaXNvbGF0ZWRUcmVlRm9jdXNlZE9iamVjdCgqZm9jdXNlZERvY3VtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDYwZjVmYTZjMmY1Li43OWRmODVkY2M4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MzMyLDkgKzQzMzIsNiBAQCBib29sIERvY3Vt
ZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24sIEZvYwogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4ob2xkRm9jdXNl
ZEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBIVE1MSW5wdXRFbGVtZW50OjpkaWRCbHVyIGp1
c3Qgc2Nyb2xscyB0ZXh0IGZpZWxkcyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBkb25lIGFzeW5jaHJvbnVzbHkuCi0gICAgICAgICAg
ICAvLyBVcGRhdGluZyBzdHlsZSBtYXkgZGlzcGF0Y2ggZXZlbnRzIGR1ZSB0byBQb3N0UmVzb2x1
dGlvbkNhbGxiYWNrCi0gICAgICAgICAgICBpZiAoZXZlbnRzTW9kZSA9PSBGb2N1c1JlbW92YWxF
dmVudHNNb2RlOjpEaXNwYXRjaCkKLSAgICAgICAgICAgICAgICB1cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqb2xkRm9jdXNlZEVs
ZW1lbnQpLmRpZEJsdXIoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0MjIsMTAgKzQ0MTksNiBA
QCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEZvYwogICAgICAgICBwYWdlKCktPmNocm9tZSgpLmZvY3Vz
ZWRFbGVtZW50Q2hhbmdlZChtX2ZvY3VzZWRFbGVtZW50LmdldCgpKTsKIAogU2V0Rm9jdXNlZE5v
ZGVEb25lOgotICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVlIHRv
IFBvc3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAvLyBGSVhNRTogV2h5IGlzIHN5bmNocm9ub3Vz
IHN0eWxlIHVwZGF0ZSBuZWVkZWQgaGVyZSBhdCBhbGw/Ci0gICAgaWYgKGV2ZW50c01vZGUgPT0g
Rm9jdXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpCi0gICAgICAgIHVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICByZXR1cm4gIWZvY3VzQ2hhbmdlQmxvY2tlZDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCmluZGV4IGNlMmQ3MWFlY2Q5Li5mMTdjZTU1ZDMzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNjA3LDIzICs2MDcsMTMgQEAgYm9vbCBFbGVtZW50Ojppc0ZvY3VzYWJsZSgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewot
ICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBpbiBhIGRpc3BsYXk6bm9uZSB0cmVlIGl0IG1pZ2h0
IHNheSBpdCBuZWVkcyBzdHlsZSByZWNhbGMgYnV0Ci0gICAgICAgIC8vIHRoZSB3aG9sZSBkb2N1
bWVudCBpcyBhY3R1YWxseSB1cCB0byBkYXRlLgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIGFibGUgdG8gYXNzZXJ0ICFuZWVkc1N0eWxlUmVjYWxjKCkgfHwgIWRvY3VtZW50KCkuY2hp
bGROZWVkc1N0eWxlUmVjYWxjKCkKLSAgICAgICAgLy8gYnV0IGl0IGhpdHMgdG9vIGZyZXF1ZW50
bHkgb24gd2Vic2l0ZXMgbGlrZSBHbWFpbCBhbmQgTWljcm9zb2Z0IEV4Y2hhbmdlLgotCiAgICAg
ICAgIC8vIEVsZW1lbnRzIGluIGNhbnZhcyBmYWxsYmFjayBjb250ZW50IGFyZSBub3QgcmVuZGVy
ZWQsIGJ1dCB0aGV5IGFyZSBhbGxvd2VkIHRvIGJlCiAgICAgICAgIC8vIGZvY3VzYWJsZSBhcyBs
b25nIGFzIHRoZWlyIGNhbnZhcyBpcyBkaXNwbGF5ZWQgYW5kIHZpc2libGUuCiAgICAgICAgIGlm
IChhdXRvKiBjYW52YXMgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCp0aGlz
KS5maXJzdCgpKQotICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyZXIoKSAmJiBjYW52
YXMtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGU7CisgICAgICAgICAgICByZXR1cm4gY2FudmFzLT5pc1Zpc2libGVXaXRob3V0UmVzb2x2aW5n
RnVsbFN0eWxlKCk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEV2ZW4gaWYgd2UgYXJlIG5vdCB2
aXNpYmxlLCB3ZSBtaWdodCBoYXZlIGEgY2hpbGQgdGhhdCBpcyB2aXNpYmxlLgotICAgIC8vIEh5
YXR0IHdhbnRzIHRvIGZpeCB0aGF0IHNvbWUgZGF5IHdpdGggYSAiaGFzIHZpc2libGUgY29udGVu
dCIgZmxhZyBvciB0aGUgbGlrZS4KLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzVmlzaWJsZVdpdGhv
dXRSZXNvbHZpbmdGdWxsU3R5bGUoKTsKIH0KIAogYm9vbCBFbGVtZW50Ojppc1VzZXJBY3Rpb25F
bGVtZW50SW5BY3RpdmVDaGFpbigpIGNvbnN0CkBAIC0yOTg0LDkgKzI5NzQsMTUgQEAgdm9pZCBF
bGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisvLyAgICBpZiAoZG9jdW1l
bnQtPm5lZWRzU3R5bGVSZWNhbGMoKSkgeworLy8gICAgICAgIGZwcmludGYoc3RkZXJyLCAiZm9j
dXMgbmVlZHNTdHlsZVJlY2FsYyBpZD0lc1xuIiwgZ2V0SWRBdHRyaWJ1dGUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKy8vICAgICAgICBmb3IgKGF1dG8mIGFuYyA6IGxpbmVhZ2VPZlR5cGU8
RWxlbWVudD4oKnRoaXMpKQorLy8gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICVkICBy
ZW5kZXJlciAlcFxuIiwgYW5jLmxvY2FsTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIChp
bnQpYW5jLnN0eWxlVmFsaWRpdHkoKSwgYW5jLnJlbmRlcmVyKCkpOworLy8gICAgfQorCiAgICAg
UmVmUHRyPEVsZW1lbnQ+IG5ld1RhcmdldCA9IHRoaXM7Ci0gICAgaWYgKGRvY3VtZW50LT5oYXZl
U3R5bGVzaGVldHNMb2FkZWQoKSkKLSAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKKy8vICAgIGlmIChkb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCisvLyAg
ICAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIGlmICgmbmV3VGFy
Z2V0LT5kb2N1bWVudCgpICE9IGRvY3VtZW50LnB0cigpKQogICAgICAgICByZXR1cm47CkBAIC0z
MjkwLDcgKzMyODYsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6cmVuZGVyT3JEaXNw
bGF5Q29udGVudHNTdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0
IFJlbmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCitjb25zdCBSZW5k
ZXJTdHlsZSogRWxlbWVudDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5
bGVNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOwogICAgIEFTU0VSVCgh
ZXhpc3RpbmdDb21wdXRlZFN0eWxlKCkpOwpAQCAtMzMxNCw5ICszMzEwLDUzIEBAIGNvbnN0IFJl
bmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCiAgICAgICAgIGNvbXB1
dGVkU3R5bGUgPSBzdHlsZS5nZXQoKTsKICAgICAgICAgRWxlbWVudFJhcmVEYXRhJiByYXJlRGF0
YSA9IGVsZW1lbnQtPmVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgICAgICByYXJlRGF0YS5z
ZXRDb21wdXRlZFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKKworICAgICAgICBpZiAobW9kZSA9PSBS
ZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGU6OlJlbmRlcmVkT25seSAmJiBjb21wdXRlZFN0eWxlLT5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICByZXR1cm4gKmNvbXB1dGVkU3R5bGU7CisgICAgcmV0dXJuIGNvbXB1
dGVkU3R5bGU7Cit9CisKK2Jvb2wgRWxlbWVudDo6aGFzVmFsaWRTdHlsZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFkb2N1bWVudCgpLm5lZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBpZiAoZG9jdW1lbnQoKS5oYXNQZW5kaW5nRnVsbFN0eWxlUmVidWlsZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGlu
ZWFnZU9mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGVW
YWxpZGl0eSgpICE9IFN0eWxlOjpWYWxpZGl0eTo6VmFsaWQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVsZW1lbnQ6OmlzVmlz
aWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUoKSBjb25zdAoreworICAgIGlmIChoYXNWYWxp
ZFN0eWxlKCkpCisgICAgICAgIHJldHVybiByZW5kZXJTdHlsZSgpICYmIHJlbmRlclN0eWxlKCkt
PnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOworCisgICAgYXV0byogc3R5bGUg
PSBleGlzdGluZ0NvbXB1dGVkU3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICBzdHls
ZSA9IGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKS5yZXNvbHZlQ29tcHV0ZWRTdHlsZShSZXNv
bHZlQ29tcHV0ZWRTdHlsZU1vZGU6OlJlbmRlcmVkT25seSk7CisKKyAgICBpZiAoIXN0eWxlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHN0eWxlLT52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAg
ICAgICBpZiAoZWxlbWVudC5leGlzdGluZ0NvbXB1dGVkU3R5bGUoKS0+ZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOwogfQogCiBjb25zdCBSZW5kZXJTdHlsZSYgRWxlbWVudDo6cmVzb2x2ZVBz
ZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQpAQCAtMzM0
OSw3ICszMzg5LDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUo
UHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIAogICAgIGF1dG8qIHN0eWxlID0gZXhp
c3RpbmdDb21wdXRlZFN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZSkKLSAgICAgICAgc3R5bGUgPSAm
cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKTsKKyAgICAgICAgc3R5bGUgPSByZXNvbHZlQ29tcHV0ZWRT
dHlsZSgpOwogCiAgICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5v
bmUpIHsKICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZFBzZXVkb1N0eWxlID0gc3R5bGUtPmdldENh
Y2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggNmE3YThlN2VkNWMuLjI4Y2FkODkxMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM0
Myw2ICszNDMsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIG5lZWRzU3R5bGVJbnZhbGlkYXRpb24o
KSBjb25zdDsKIAorICAgIGJvb2wgaGFzVmFsaWRTdHlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNW
aXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpIGNvbnN0OworCiAgICAgLy8gTWV0aG9k
cyBmb3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHluYW1pYyB1cGRhdGVz
IChlLmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNoYW5naW5nIGluIG91ciBz
aWJsaW5nIGxpc3QsIGV0Yy4pCiAgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBoYXNTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6U3R5bGVBZmZlY3RlZEJ5
QWN0aXZlKTsgfQogICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdCB7IHJldHVy
biBoYXNTdHlsZUZsYWcoRWxlbWVudFN0eWxlRmxhZzo6U3R5bGVBZmZlY3RlZEJ5RW1wdHkpOyB9
CkBAIC02OTIsNyArNjk1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9v
dCgpOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHJlc29sdmVDb21wdXRlZFN0eWxlKCk7Cisg
ICAgZW51bSBjbGFzcyBSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGUgeyBOb3JtYWwsIFJlbmRlcmVk
T25seSB9OworICAgIGNvbnN0IFJlbmRlclN0eWxlKiByZXNvbHZlQ29tcHV0ZWRTdHlsZShSZXNv
bHZlQ29tcHV0ZWRTdHlsZU1vZGUgPSBSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGU6Ok5vcm1hbCk7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJlc29sdmVQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRv
SWQpOwogCiAgICAgdW5zaWduZWQgcmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggNTExNGIyMDM3NDIuLjY4OGFlODE2
MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0yMTAsNyAr
MjEwLDcgQEAgYm9vbCBIVE1MQXJlYUVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAog
Ym9vbCBIVE1MQXJlYUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKIHsKICAgICBSZWZQdHI8
SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBpbWFnZUVsZW1lbnQoKTsKLSAgICBpZiAoIWltYWdl
IHx8ICFpbWFnZS0+cmVuZGVyZXIoKSB8fCBpbWFnZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFn
ZS0+aXNWaXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1cygpICYmIHRhYkluZGV4U2V0RXhwbGlj
aXRseSgpLnZhbHVlT3IoMCkgPj0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTI4YjM3YzNiYTQuLjI4YjQyZGIwMzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMjQyLDcgKzI0MiwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZQogCiAg
ICAgc2V0SW5uZXJUZXh0VmFsdWUodGV4dCk7CiAKLSAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQg
aGFwcGVuIHRvIHRoZSB2YWx1ZSAoYXMgaW4gdmFsdWUoKSkgaWYgdGhlcmUncyBubyByZW5kZXJl
cj8KKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgbmVlZCBzeW5jaHJvbm91cyBzdHlsZSB1
cGRhdGUsIG9yIHJlbmRlcmVyIGF0IGFsbC4KKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAg
IGRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAgICAgaWYgKCFyZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjYwNTQ4MzQ0NWUuLjdmMjI4ODk2OTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3Bw
CkBAIC0xNTcsOSArMTU3LDYgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6d2lsbE9wZW5Qb3B1
cCgpCiAKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQp
CiB7Ci0gICAgaWYgKCFyZW5kZXJCb3goKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFp
czxXaGVlbEV2ZW50PihldmVudCkpCiAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392295</attachid>
            <date>2020-03-03 10:37:00 -0800</date>
            <delta_ts>2020-03-03 12:47:50 -0800</delta_ts>
            <desc>wip</desc>
            <filename>focus-no-style-resolution-5.patch</filename>
            <type>text/plain</type>
            <size>12450</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9k
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVk
LW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDc2OGViZTNlY2Q2Li43ZDRkMTgwNDA3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5v
ZGUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
YSBub2RlIGRvZXMgbm90IHJldGFpbiBrZXlib2FyZCBmb2N1cyBhZnRlciBpdCBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gdGhlIERPTS4KIAotIFBBU1M6IGRpZCBub3QgZ2V0IGtleWJvYXJkIGV2ZW50
LgorUEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS5odG1sCmluZGV4IGFlOTVhOTM5N2E1
Li5hNjU3MmYzNjE4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJl
c3MtcmVtb3ZlZC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJl
c3MtcmVtb3ZlZC1ub2RlLmh0bWwKQEAgLTEsOCArMSw2IEBACiA8cD5UaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCBhIG5vZGUgZG9lcyBub3QgcmV0YWluIGtleWJvYXJkIGZvY3VzIGFmdGVyIGl0IGhh
cwogYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS48L3A+Ci08aHI+Ci08aW5wdXQgdHlwZT0idGV4
dCI+Ci08cHJlIGlkPSJjb25zb2xlIj5QQVNTOiBkaWQgbm90IGdldCBrZXlib2FyZCBldmVudC48
L3ByZT4KKzxocj48aW5wdXQgdHlwZT0idGV4dCI+PHByZSBpZD0iY29uc29sZSI+UEFTUzogZGlk
IG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuPC9wcmU+CiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LnRl
c3RSdW5uZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1p
bnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9m
b2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwKaW5kZXggYTIwZTU1YWYxOGUuLjZhY2Zm
YWYzMjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1
dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRv
Zm9jdXMtaW5wdXQtY3NzLXN0eWxlLWNoYW5nZS5odG1sCkBAIC0xMyw5ICsxMywxMSBAQCBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAot
dmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwotaWYgKGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGVzdCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMTI4LCAwKSIpCi0gICAgcmVzdWx0Lmlu
bmVySFRNTCA9ICJQQVNTIjsKK3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+eworICAgIGlmIChn
ZXRDb21wdXRlZFN0eWxlKHRlc3QsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQt
Y29sb3InKSA9PSAicmdiKDAsIDEyOCwgMCkiKQorICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0g
IlBBU1MiOworfSk7CisKIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggM2YxODU0NGE3NGIu
LmZjYTgyYTRiYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKQEAgLTQyNyw2ICs0MjcsOCBAQCBBWENvcmVPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OmZvY3VzZWRVSUVsZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFm
b2N1c2VkRG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgZm9jdXNlZERv
Y3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQogICAgIGlmIChjbGllbnRTdXBwb3J0c0lzb2xhdGVkVHJlZSgpKQog
ICAgICAgICByZXR1cm4gaXNvbGF0ZWRUcmVlRm9jdXNlZE9iamVjdCgqZm9jdXNlZERvY3VtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDYwZjVmYTZjMmY1Li43OWRmODVkY2M4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MzMyLDkgKzQzMzIsNiBAQCBib29sIERvY3Vt
ZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24sIEZvYwogICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4ob2xkRm9jdXNl
ZEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBIVE1MSW5wdXRFbGVtZW50OjpkaWRCbHVyIGp1
c3Qgc2Nyb2xscyB0ZXh0IGZpZWxkcyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBkb25lIGFzeW5jaHJvbnVzbHkuCi0gICAgICAgICAg
ICAvLyBVcGRhdGluZyBzdHlsZSBtYXkgZGlzcGF0Y2ggZXZlbnRzIGR1ZSB0byBQb3N0UmVzb2x1
dGlvbkNhbGxiYWNrCi0gICAgICAgICAgICBpZiAoZXZlbnRzTW9kZSA9PSBGb2N1c1JlbW92YWxF
dmVudHNNb2RlOjpEaXNwYXRjaCkKLSAgICAgICAgICAgICAgICB1cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqb2xkRm9jdXNlZEVs
ZW1lbnQpLmRpZEJsdXIoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0MjIsMTAgKzQ0MTksNiBA
QCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEZvYwogICAgICAgICBwYWdlKCktPmNocm9tZSgpLmZvY3Vz
ZWRFbGVtZW50Q2hhbmdlZChtX2ZvY3VzZWRFbGVtZW50LmdldCgpKTsKIAogU2V0Rm9jdXNlZE5v
ZGVEb25lOgotICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVlIHRv
IFBvc3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAvLyBGSVhNRTogV2h5IGlzIHN5bmNocm9ub3Vz
IHN0eWxlIHVwZGF0ZSBuZWVkZWQgaGVyZSBhdCBhbGw/Ci0gICAgaWYgKGV2ZW50c01vZGUgPT0g
Rm9jdXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpCi0gICAgICAgIHVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICByZXR1cm4gIWZvY3VzQ2hhbmdlQmxvY2tlZDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCmluZGV4IGNlMmQ3MWFlY2Q5Li5lZjQ1Y2M5MmZhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNjA3LDIzICs2MDcsMTMgQEAgYm9vbCBFbGVtZW50Ojppc0ZvY3VzYWJsZSgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewot
ICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBpbiBhIGRpc3BsYXk6bm9uZSB0cmVlIGl0IG1pZ2h0
IHNheSBpdCBuZWVkcyBzdHlsZSByZWNhbGMgYnV0Ci0gICAgICAgIC8vIHRoZSB3aG9sZSBkb2N1
bWVudCBpcyBhY3R1YWxseSB1cCB0byBkYXRlLgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIGFibGUgdG8gYXNzZXJ0ICFuZWVkc1N0eWxlUmVjYWxjKCkgfHwgIWRvY3VtZW50KCkuY2hp
bGROZWVkc1N0eWxlUmVjYWxjKCkKLSAgICAgICAgLy8gYnV0IGl0IGhpdHMgdG9vIGZyZXF1ZW50
bHkgb24gd2Vic2l0ZXMgbGlrZSBHbWFpbCBhbmQgTWljcm9zb2Z0IEV4Y2hhbmdlLgotCiAgICAg
ICAgIC8vIEVsZW1lbnRzIGluIGNhbnZhcyBmYWxsYmFjayBjb250ZW50IGFyZSBub3QgcmVuZGVy
ZWQsIGJ1dCB0aGV5IGFyZSBhbGxvd2VkIHRvIGJlCiAgICAgICAgIC8vIGZvY3VzYWJsZSBhcyBs
b25nIGFzIHRoZWlyIGNhbnZhcyBpcyBkaXNwbGF5ZWQgYW5kIHZpc2libGUuCiAgICAgICAgIGlm
IChhdXRvKiBjYW52YXMgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCp0aGlz
KS5maXJzdCgpKQotICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyZXIoKSAmJiBjYW52
YXMtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGU7CisgICAgICAgICAgICByZXR1cm4gY2FudmFzLT5pc1Zpc2libGVXaXRob3V0UmVzb2x2aW5n
RnVsbFN0eWxlKCk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEV2ZW4gaWYgd2UgYXJlIG5vdCB2
aXNpYmxlLCB3ZSBtaWdodCBoYXZlIGEgY2hpbGQgdGhhdCBpcyB2aXNpYmxlLgotICAgIC8vIEh5
YXR0IHdhbnRzIHRvIGZpeCB0aGF0IHNvbWUgZGF5IHdpdGggYSAiaGFzIHZpc2libGUgY29udGVu
dCIgZmxhZyBvciB0aGUgbGlrZS4KLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzVmlzaWJsZVdpdGhv
dXRSZXNvbHZpbmdGdWxsU3R5bGUoKTsKIH0KIAogYm9vbCBFbGVtZW50Ojppc1VzZXJBY3Rpb25F
bGVtZW50SW5BY3RpdmVDaGFpbigpIGNvbnN0CkBAIC0yOTg1LDExICsyOTc1LDYgQEAgdm9pZCBF
bGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uKQogICAgIH0KIAogICAgIFJlZlB0cjxFbGVtZW50PiBuZXdUYXJnZXQgPSB0
aGlzOwotICAgIGlmIChkb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCi0gICAgICAg
IGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7Ci0KLSAgICBpZiAoJm5ld1RhcmdldC0+
ZG9jdW1lbnQoKSAhPSBkb2N1bWVudC5wdHIoKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGF1dG8gcm9vdCA9IHNoYWRvd1Jvb3RXaXRoRGVsZWdhdGVzRm9jdXMoKnRoaXMpKSB7CiAgICAg
ICAgIGF1dG8gY3VycmVudGx5Rm9jdXNlZEVsZW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50LT5m
b2N1c2VkRWxlbWVudCgpKTsKQEAgLTMyOTAsNyArMzI3NSw3IEBAIGNvbnN0IFJlbmRlclN0eWxl
KiBFbGVtZW50OjpyZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCkgY29uc3QKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgUmVuZGVyU3R5bGUmIEVsZW1lbnQ6OnJlc29sdmVDb21w
dXRlZFN0eWxlKCkKK2NvbnN0IFJlbmRlclN0eWxlKiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRT
dHlsZShSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoaXNDb25u
ZWN0ZWQoKSk7CiAgICAgQVNTRVJUKCFleGlzdGluZ0NvbXB1dGVkU3R5bGUoKSk7CkBAIC0zMzE0
LDkgKzMyOTksNTMgQEAgY29uc3QgUmVuZGVyU3R5bGUmIEVsZW1lbnQ6OnJlc29sdmVDb21wdXRl
ZFN0eWxlKCkKICAgICAgICAgY29tcHV0ZWRTdHlsZSA9IHN0eWxlLmdldCgpOwogICAgICAgICBF
bGVtZW50UmFyZURhdGEmIHJhcmVEYXRhID0gZWxlbWVudC0+ZW5zdXJlRWxlbWVudFJhcmVEYXRh
KCk7CiAgICAgICAgIHJhcmVEYXRhLnNldENvbXB1dGVkU3R5bGUoV1RGTW92ZShzdHlsZSkpOwor
CisgICAgICAgIGlmIChtb2RlID09IFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZTo6UmVuZGVyZWRP
bmx5ICYmIGNvbXB1dGVkU3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiAqY29tcHV0ZWRT
dHlsZTsKKyAgICByZXR1cm4gY29tcHV0ZWRTdHlsZTsKK30KKworYm9vbCBFbGVtZW50OjpoYXNW
YWxpZFN0eWxlKCkgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50KCkubmVlZHNTdHlsZVJlY2Fs
YygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChkb2N1bWVudCgpLmhhc1BlbmRp
bmdGdWxsU3R5bGVSZWJ1aWxkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBsaW5lYWdlT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgeworICAg
ICAgICBpZiAoZWxlbWVudC5zdHlsZVZhbGlkaXR5KCkgIT0gU3R5bGU6OlZhbGlkaXR5OjpWYWxp
ZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgRWxlbWVudDo6aXNWaXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpIGNv
bnN0Cit7CisgICAgaWYgKGhhc1ZhbGlkU3R5bGUoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlclN0
eWxlKCkgJiYgcmVuZGVyU3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGU7CisKKyAgICBhdXRvKiBzdHlsZSA9IGV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpOworICAgIGlm
ICghc3R5bGUpCisgICAgICAgIHN0eWxlID0gY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpLnJl
c29sdmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZTo6UmVuZGVyZWRPbmx5
KTsKKworICAgIGlmICghc3R5bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChz
dHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLT5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBhbmNlc3RvcnNPZlR5cGU8
RWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50LmV4aXN0aW5nQ29tcHV0ZWRT
dHlsZSgpLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNvbnN0IFJlbmRlclN0
eWxlJiBFbGVtZW50OjpyZXNvbHZlUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkIHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpCkBAIC0zMzQ5LDcgKzMzNzgsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSog
RWxlbWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQog
CiAgICAgYXV0byogc3R5bGUgPSBleGlzdGluZ0NvbXB1dGVkU3R5bGUoKTsKICAgICBpZiAoIXN0
eWxlKQotICAgICAgICBzdHlsZSA9ICZyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOworICAgICAgICBz
dHlsZSA9IHJlc29sdmVDb21wdXRlZFN0eWxlKCk7CiAKICAgICBpZiAocHNldWRvRWxlbWVudFNw
ZWNpZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSkgewogICAgICAgICBpZiAoYXV0byogY2FjaGVkUHNl
dWRvU3R5bGUgPSBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNp
ZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2YTdhOGU3ZWQ1Yy4uMjhjYWQ4OTEyMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtMzQzLDYgKzM0Myw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
bmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0OwogCisgICAgYm9vbCBoYXNWYWxpZFN0eWxl
KCkgY29uc3Q7CisgICAgYm9vbCBpc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlKCkg
Y29uc3Q7CisKICAgICAvLyBNZXRob2RzIGZvciBpbmRpY2F0aW5nIHRoZSBzdHlsZSBpcyBhZmZl
Y3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4sIGNoaWxkcmVuIGNoYW5naW5nLCBvdXIgcG9z
aXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcgbGlzdCwgZXRjLikKICAgICBib29sIHN0eWxl
QWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5
bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlBY3RpdmUpOyB9CiAgICAgYm9vbCBzdHlsZUFmZmVjdGVk
QnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpT
dHlsZUFmZmVjdGVkQnlFbXB0eSk7IH0KQEAgLTY5Miw3ICs2OTUsOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmVz
b2x2ZUNvbXB1dGVkU3R5bGUoKTsKKyAgICBlbnVtIGNsYXNzIFJlc29sdmVDb21wdXRlZFN0eWxl
TW9kZSB7IE5vcm1hbCwgUmVuZGVyZWRPbmx5IH07CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHJl
c29sdmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSA9IFJlc29sdmVDb21w
dXRlZFN0eWxlTW9kZTo6Tm9ybWFsKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmVzb2x2ZVBz
ZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZCk7CiAKICAgICB1bnNpZ25lZCByYXJlRGF0YUNoaWxk
SW5kZXgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRl
eCA1MTE0YjIwMzc0Mi4uNjg4YWU4MTYyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVh
RWxlbWVudC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIEhUTUxBcmVhRWxlbWVudDo6aXNN
b3VzZUZvY3VzYWJsZSgpIGNvbnN0CiBib29sIEhUTUxBcmVhRWxlbWVudDo6aXNGb2N1c2FibGUo
KSBjb25zdAogewogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IGltYWdlRWxl
bWVudCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5yZW5kZXJlcigpIHx8IGltYWdlLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQor
ICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0
eWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzdXBwb3J0c0ZvY3Vz
KCkgJiYgdGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkudmFsdWVPcigwKSA+PSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA0MDcwZjdkMjZkOS4uMzc1MzJm
ZDFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0x
MTAwLDYgKzExMDAsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtl
eWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoIWlzU3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKGRvY3VtZW50KCkuZnJhbWUoKSkpIHsKICAgICAgICAgaWYgKGV2ZW50LT5r
ZXlJZGVudGlmaWVyKCkgPT0gIkRvd24iIHx8IGV2ZW50LT5rZXlJZGVudGlmaWVyKCkgPT0gIlVw
IikgewogICAgICAgICAgICAgZm9jdXMoKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkudXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIG1heSBjYXVz
ZSB1cyB0byBsb3NlIG91ciByZW5kZXJlci4gUmV0dXJuIHRydWUgc28KICAgICAgICAgICAgIC8v
IHRoYXQgb3VyIGNhbGxlciBkb2Vzbid0IHByb2Nlc3MgdGhlIGV2ZW50IGZ1cnRoZXIsIGJ1dCBk
b24ndCBzZXQKICAgICAgICAgICAgIC8vIHRoZSBldmVudCBhcyBoYW5kbGVkLgpAQCAtMTIxNSw2
ICsxMjE2LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgfSBlbHNlIGlmIChSZW5kZXJUaGVtZTo6c2lu
Z2xldG9uKCkucG9wc01lbnVCeUFycm93S2V5cygpKSB7CiAgICAgICAgICAgICBpZiAoa2V5Q29k
ZSA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBmb2N1cygpOworICAgICAgICAgICAgICAgIGRv
Y3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAgICAgICAgICAgICAgLy8gQ2Fs
bGluZyBmb2N1cygpIG1heSByZW1vdmUgdGhlIHJlbmRlcmVyIG9yIGNoYW5nZSB0aGUgcmVuZGVy
ZXIgdHlwZS4KICAgICAgICAgICAgICAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCk7CkBAIC0xMjQyLDYgKzEyNDQsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlz
dERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogCiAgICAgaWYgKGV2ZW50LnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VFdmVudD4oZXZlbnQp
ICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7
CiAgICAgICAgIGZvY3VzKCk7CisgICAgICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChpczxSZW5kZXJNZW51TGlzdD4ocmVuZGVy
ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IDkyOGIzN2MzYmE0Li4yOGI0MmRiMDM1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI0Miw3
ICsyNDIsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldFJhbmdlVGV4dChjb25zdCBTdHJpbmcmIHJlcGxhY2UKIAogICAgIHNldElubmVyVGV4dFZh
bHVlKHRleHQpOwogCi0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdmFs
dWUgKGFzIGluIHZhbHVlKCkpIGlmIHRoZXJlJ3Mgbm8gcmVuZGVyZXI/CisgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkbid0IG5lZWQgc3luY2hyb25vdXMgc3R5bGUgdXBkYXRlLCBvciByZW5kZXJl
ciBhdCBhbGwuCisgICAgaWYgKCFyZW5kZXJlcigpKQorICAgICAgICBkb2N1bWVudCgpLnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKKwogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuY3BwCmluZGV4IGY2MDU0ODM0NDVlLi43ZjIyODg5Njk3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcApAQCAtMTU3LDkgKzE1Nyw2
IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OndpbGxPcGVuUG9wdXAoKQogCiB2b2lkIFNwaW5C
dXR0b25FbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogewotICAgIGlmICghcmVu
ZGVyQm94KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghaXM8V2hlZWxFdmVudD4oZXZl
bnQpKQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392312</attachid>
            <date>2020-03-03 12:47:50 -0800</date>
            <delta_ts>2020-03-03 12:49:27 -0800</delta_ts>
            <desc>patch</desc>
            <filename>focus-no-style-resolution-6.patch</filename>
            <type>text/plain</type>
            <size>15995</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYTJhNzBjN2RmMS4uYzJhMDFiMzVkYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wMy0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3VzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMva2V5
cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9r
ZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbDoKKworICAgICAgICBNb2RpZnkgdGhlIHRlc3Qgc28g
aXQgaXMgbm90IHNlbnNpdGl2ZSB0byBub24tcmVuZGVyZWQgd2hpdGVzcGFjZSBjaGFuZ2VzCisg
ICAgICAgIChjYXVzZWQgYnkgdGltaW5nIG9mIHJlbmRlciB0cmVlIHVwZGF0ZXMpLgorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtaW5wdXQtY3NzLXN0eWxlLWNoYW5nZS5odG1sOgor
CisgICAgICAgIFJlYWQgdGhlIDxpbnB1dCBhdXRvZm9jdXM+IDpmb2N1cyBzdHlsZSBpbiByQUYg
YXMgZm9jdXNpbmcgaGFwcGVucyBhc3luY2hyb25vdXNseS4gVGhpcyBtYXRjaGVzIG90aGVyIGJy
b3dzZXJzLgorCiAyMDIwLTAyLTI3ICBEb3VnIEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBhdGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQg
Y2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQKaW5kZXggNzY4ZWJl
M2VjZDYuLjdkNGQxODA0MDdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9r
ZXlwcmVzcy1yZW1vdmVkLW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBA
CiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIG5vZGUgZG9lcyBub3QgcmV0YWluIGtleWJvYXJk
IGZvY3VzIGFmdGVyIGl0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLgogCi0gUEFTUzog
ZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuCitQQVNTOiBkaWQgbm90IGdldCBrZXlib2FyZCBl
dmVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92
ZWQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1u
b2RlLmh0bWwKaW5kZXggYWU5NWE5Mzk3YTUuLmE2NTcyZjM2MTgzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbApAQCAtMSw4ICsx
LDYgQEAKIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgbm9kZSBkb2VzIG5vdCByZXRhaW4g
a2V5Ym9hcmQgZm9jdXMgYWZ0ZXIgaXQgaGFzCiBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLjwv
cD4KLTxocj4KLTxpbnB1dCB0eXBlPSJ0ZXh0Ij4KLTxwcmUgaWQ9ImNvbnNvbGUiPlBBU1M6IGRp
ZCBub3QgZ2V0IGtleWJvYXJkIGV2ZW50LjwvcHJlPgorPGhyPjxpbnB1dCB0eXBlPSJ0ZXh0Ij48
cHJlIGlkPSJjb25zb2xlIj5QQVNTOiBkaWQgbm90IGdldCBrZXlib2FyZCBldmVudC48L3ByZT4K
IAogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRt
bAppbmRleCBhMjBlNTVhZjE4ZS4uNmFjZmZhZjMyNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0
bWwKQEAgLTEzLDkgKzEzLDExIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCi12YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7Ci1pZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXN0LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigw
LCAxMjgsIDApIikKLSAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOworcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKCgpPT57CisgICAgaWYgKGdldENvbXB1dGVkU3R5bGUodGVzdCwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMTI4LCAwKSIpCisg
ICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Cit9KTsKKwogPC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI1YzBlMTVmOTcuLjU4NDFjN2FkOTZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjAtMDMtMDMgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGZ1bGwgc3R5bGUgcmVzb2x1dGlvbiBvbiBF
bGVtZW50Ojpmb2N1cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDg1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFbGVtZW50Ojpmb2N1cygpIGN1cnJlbnRseSB0cmlnZ2VycyBmdWxsIHN0eWxlIHJl
c29sdXRpb24gYm90aCBiZWZvcmUgKHRvIGNvbXB1dGUgZWxlbWVudCB2aXNpYmlsaXR5KQorICAg
ICAgICBhbmQgYWZ0ZXIgKGZvciBubyBwYXJ0aWN1bGFyIHJlYXNvbikuCisKKyAgICAgICAgUmVz
b2x2aW5nIHN0eWxlIGNhbiBiZSBjb3N0bHkgaWYgdGhlcmUgYXJlIGZ1cnRoZXIgRE9NIG11dGF0
aW9ucyB0aGF0IGVuZCB1cCBpbnZhbGlkYXRpbmcgaXQgYWdhaW4uCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIGNoZWFwZXIgc2luZ2xlLWVsZW1lbnQgd2F5IHRvIGNvbXB1dGluZyB2aXNpYmls
aXR5IGFuZCB1c2VzIGl0IGZvciBmb2N1cygpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZvY3Vz
ZWRVSUVsZW1lbnRGb3JQYWdlKToKKworICAgICAgICBBWCBjb2RlIGFzc3VtZXMgcmVuZGVyZXJz
IGhhdmUgZXhpc3QgZm9yIGZvY3VzZWQgZWxlbWVudCBzbyBlbnN1cmUgc3R5bGUgaXMgdXAgdG8g
ZGF0ZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQpOgorCisgICAgICAgIFJlbW92ZSBzdHlsZSByZXNv
bHV0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorCisgICAgICAgIFVzZSBpc1Zpc2libGVXaXRo
b3V0UmVzb2x2aW5nRnVsbFN0eWxlIGhlbHBlci4KKworICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Zm9jdXMpOgorCisgICAgICAgIFJlbW92ZSBzdHlsZSByZXNvbHV0aW9uLgorCisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSk6CisKKyAgICAgICAgQWRk
IGEgbW9kZSB3aGVyZSB3ZSBiYWlsIG91dCB3aGVuIHdlIGZpZ3VyZSBvdXQgd2UgYXJlIGluIGRp
c3BsYXk6bm9uZSBzdWJ0cmVlLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNWYWxp
ZFN0eWxlIGNvbnN0KToKKworICAgICAgICBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHZhbGlkIHN0
eWxlLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc1Zpc2libGVXaXRob3V0UmVzb2x2
aW5nRnVsbFN0eWxlIGNvbnN0KToKKworICAgICAgICBVc2UgY29tcHV0ZWQgc3R5bGUgbWVjaGFu
aXNtIGlmIHRoZSByZW5kZXIgc3R5bGUgaXMgbm90IHVwIHRvIGRhdGUuCisKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFyZWFFbGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6CisKKyAgICAgICAgVXNlIGlzVmlz
aWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUgaGVyZSB0b28uCisKKyAgICAgICAgKiBodG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVt
ZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKToKKworICAgICAgICBV
cGRhdGUgc3R5bGUgYWZ0ZXIgZXhwbGljaXQgZm9jdXMoKSBjYWxscyB0byBrZWVwIHRoZSBleGlz
dGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dFJhbmdlVGV4dCk6CisKKyAgICAgICAgRW5zdXJlIHRoZSByZW5kZXJlciBpcyBjcmVhdGVkLgor
CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmZvcndhcmRFdmVudCk6CisKKyAgICAgICAgUmVt
b3ZlIHVubmVlZGVkIHJlbmRlcmVyIHRlc3QuCisKIDIwMjAtMDItMjcgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IHVzZSBv
ZiBkYXJrIG1vZGUgdGhlbWUgaW5kZXBlbmRlbnRseSBmcm9tIHN5c3RlbS13aWRlIHRoZW1lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCAz
ZjE4NTQ0YTc0Yi4uZmNhODJhNGJiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtNDI3LDYgKzQyNyw4IEBAIEFYQ29yZU9iamVjdCog
QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkK
ICAgICBpZiAoIWZvY3VzZWREb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAg
ICBmb2N1c2VkRG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgaWYgKGNsaWVudFN1cHBvcnRzSXNvbGF0
ZWRUcmVlKCkpCiAgICAgICAgIHJldHVybiBpc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KCpmb2N1
c2VkRG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNjBmNWZhNmMyZjUuLjc5
ZGY4NWRjYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzMzIsOSArNDMzMiw2IEBA
IGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
PihvbGRGb2N1c2VkRWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIEhUTUxJbnB1dEVsZW1lbnQ6
OmRpZEJsdXIganVzdCBzY3JvbGxzIHRleHQgZmllbGRzIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGRvbmUgYXN5bmNocm9udXNseS4K
LSAgICAgICAgICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVlIHRv
IFBvc3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAgICAgICAgIGlmIChldmVudHNNb2RlID09IEZv
Y3VzUmVtb3ZhbEV2ZW50c01vZGU6OkRpc3BhdGNoKQotICAgICAgICAgICAgICAgIHVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpv
bGRGb2N1c2VkRWxlbWVudCkuZGlkQmx1cigpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQyMiwx
MCArNDQxOSw2IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIHBhZ2UoKS0+Y2hy
b21lKCkuZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKG1fZm9jdXNlZEVsZW1lbnQuZ2V0KCkpOwogCiBT
ZXRGb2N1c2VkTm9kZURvbmU6Ci0gICAgLy8gVXBkYXRpbmcgc3R5bGUgbWF5IGRpc3BhdGNoIGV2
ZW50cyBkdWUgdG8gUG9zdFJlc29sdXRpb25DYWxsYmFjawotICAgIC8vIEZJWE1FOiBXaHkgaXMg
c3luY2hyb25vdXMgc3R5bGUgdXBkYXRlIG5lZWRlZCBoZXJlIGF0IGFsbD8KLSAgICBpZiAoZXZl
bnRzTW9kZSA9PSBGb2N1c1JlbW92YWxFdmVudHNNb2RlOjpEaXNwYXRjaCkKLSAgICAgICAgdXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHJldHVybiAhZm9jdXNDaGFuZ2VCbG9ja2VkOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggY2UyZDcxYWVjZDkuLmVmNDVjYzkyZmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02MDcsMjMgKzYwNywxMyBAQCBib29sIEVsZW1lbnQ6Omlz
Rm9jdXNhYmxlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFyZW5k
ZXJlcigpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBub2RlIGlzIGluIGEgZGlzcGxheTpub25lIHRy
ZWUgaXQgbWlnaHQgc2F5IGl0IG5lZWRzIHN0eWxlIHJlY2FsYyBidXQKLSAgICAgICAgLy8gdGhl
IHdob2xlIGRvY3VtZW50IGlzIGFjdHVhbGx5IHVwIHRvIGRhdGUuCi0gICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBhc3NlcnQgIW5lZWRzU3R5bGVSZWNhbGMoKSB8fCAhZG9j
dW1lbnQoKS5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQotICAgICAgICAvLyBidXQgaXQgaGl0cyB0
b28gZnJlcXVlbnRseSBvbiB3ZWJzaXRlcyBsaWtlIEdtYWlsIGFuZCBNaWNyb3NvZnQgRXhjaGFu
Z2UuCi0KICAgICAgICAgLy8gRWxlbWVudHMgaW4gY2FudmFzIGZhbGxiYWNrIGNvbnRlbnQgYXJl
IG5vdCByZW5kZXJlZCwgYnV0IHRoZXkgYXJlIGFsbG93ZWQgdG8gYmUKICAgICAgICAgLy8gZm9j
dXNhYmxlIGFzIGxvbmcgYXMgdGhlaXIgY2FudmFzIGlzIGRpc3BsYXllZCBhbmQgdmlzaWJsZS4K
ICAgICAgICAgaWYgKGF1dG8qIGNhbnZhcyA9IGFuY2VzdG9yc09mVHlwZTxIVE1MQ2FudmFzRWxl
bWVudD4oKnRoaXMpLmZpcnN0KCkpCi0gICAgICAgICAgICByZXR1cm4gY2FudmFzLT5yZW5kZXJl
cigpICYmIGNhbnZhcy0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZTsKKyAgICAgICAgICAgIHJldHVybiBjYW52YXMtPmlzVmlzaWJsZVdpdGhv
dXRSZXNvbHZpbmdGdWxsU3R5bGUoKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogRXZlbiBpZiB3
ZSBhcmUgbm90IHZpc2libGUsIHdlIG1pZ2h0IGhhdmUgYSBjaGlsZCB0aGF0IGlzIHZpc2libGUu
Ci0gICAgLy8gSHlhdHQgd2FudHMgdG8gZml4IHRoYXQgc29tZSBkYXkgd2l0aCBhICJoYXMgdmlz
aWJsZSBjb250ZW50IiBmbGFnIG9yIHRoZSBsaWtlLgotICAgIGlmICghcmVuZGVyZXIoKSB8fCBy
ZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaXNW
aXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpOwogfQogCiBib29sIEVsZW1lbnQ6Omlz
VXNlckFjdGlvbkVsZW1lbnRJbkFjdGl2ZUNoYWluKCkgY29uc3QKQEAgLTI5ODUsMTEgKzI5NzUs
NiBAQCB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgfQogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG5l
d1RhcmdldCA9IHRoaXM7Ci0gICAgaWYgKGRvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSkKLSAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLQotICAgIGlmICgm
bmV3VGFyZ2V0LT5kb2N1bWVudCgpICE9IGRvY3VtZW50LnB0cigpKQotICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoYXV0byByb290ID0gc2hhZG93Um9vdFdpdGhEZWxlZ2F0ZXNGb2N1cygqdGhp
cykpIHsKICAgICAgICAgYXV0byBjdXJyZW50bHlGb2N1c2VkRWxlbWVudCA9IG1ha2VSZWZQdHIo
ZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkpOwpAQCAtMzI5MCw3ICszMjc1LDcgQEAgY29uc3Qg
UmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKSBjb25z
dAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBSZW5kZXJTdHlsZSYgRWxlbWVudDo6
cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKQorY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJlc29s
dmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSBtb2RlKQogewogICAgIEFT
U0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQoIWV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgp
KTsKQEAgLTMzMTQsOSArMzI5OSw1MyBAQCBjb25zdCBSZW5kZXJTdHlsZSYgRWxlbWVudDo6cmVz
b2x2ZUNvbXB1dGVkU3R5bGUoKQogICAgICAgICBjb21wdXRlZFN0eWxlID0gc3R5bGUuZ2V0KCk7
CiAgICAgICAgIEVsZW1lbnRSYXJlRGF0YSYgcmFyZURhdGEgPSBlbGVtZW50LT5lbnN1cmVFbGVt
ZW50UmFyZURhdGEoKTsKICAgICAgICAgcmFyZURhdGEuc2V0Q29tcHV0ZWRTdHlsZShXVEZNb3Zl
KHN0eWxlKSk7CisKKyAgICAgICAgaWYgKG1vZGUgPT0gUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2Rl
OjpSZW5kZXJlZE9ubHkgJiYgY29tcHV0ZWRTdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJu
ICpjb21wdXRlZFN0eWxlOworICAgIHJldHVybiBjb21wdXRlZFN0eWxlOworfQorCitib29sIEVs
ZW1lbnQ6Omhhc1ZhbGlkU3R5bGUoKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQoKS5uZWVk
c1N0eWxlUmVjYWxjKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGRvY3VtZW50
KCkuaGFzUGVuZGluZ0Z1bGxTdHlsZVJlYnVpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4oKnRo
aXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50LnN0eWxlVmFsaWRpdHkoKSAhPSBTdHlsZTo6VmFs
aWRpdHk6OlZhbGlkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBFbGVtZW50Ojppc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVs
bFN0eWxlKCkgY29uc3QKK3sKKyAgICBpZiAoaGFzVmFsaWRTdHlsZSgpKQorICAgICAgICByZXR1
cm4gcmVuZGVyU3R5bGUoKSAmJiByZW5kZXJTdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZTsKKworICAgIGF1dG8qIHN0eWxlID0gZXhpc3RpbmdDb21wdXRlZFN0eWxl
KCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgc3R5bGUgPSBjb25zdF9jYXN0PEVsZW1lbnQm
PigqdGhpcykucmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlOjpS
ZW5kZXJlZE9ubHkpOworCisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUt
PmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGFuY2Vz
dG9yc09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuZXhpc3Rp
bmdDb21wdXRlZFN0eWxlKCktPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY29u
c3QgUmVuZGVyU3R5bGUmIEVsZW1lbnQ6OnJlc29sdmVQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRv
SWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKQEAgLTMzNDksNyArMzM3OCw3IEBAIGNvbnN0IFJl
bmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRT
cGVjaWZpZXIpCiAKICAgICBhdXRvKiBzdHlsZSA9IGV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpOwog
ICAgIGlmICghc3R5bGUpCi0gICAgICAgIHN0eWxlID0gJnJlc29sdmVDb21wdXRlZFN0eWxlKCk7
CisgICAgICAgIHN0eWxlID0gcmVzb2x2ZUNvbXB1dGVkU3R5bGUoKTsKIAogICAgIGlmIChwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25lKSB7CiAgICAgICAgIGlmIChhdXRv
KiBjYWNoZWRQc2V1ZG9TdHlsZSA9IHN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZhN2E4ZTdlZDVjLi4yOGNh
ZDg5MTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNDMsNiArMzQzLDkgQEAgcHVibGljOgog
CiAgICAgYm9vbCBuZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgY29uc3Q7CiAKKyAgICBib29sIGhh
c1ZhbGlkU3R5bGUoKSBjb25zdDsKKyAgICBib29sIGlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdG
dWxsU3R5bGUoKSBjb25zdDsKKwogICAgIC8vIE1ldGhvZHMgZm9yIGluZGljYXRpbmcgdGhlIHN0
eWxlIGlzIGFmZmVjdGVkIGJ5IGR5bmFtaWMgdXBkYXRlcyAoZS5nLiwgY2hpbGRyZW4gY2hhbmdp
bmcsIG91ciBwb3NpdGlvbiBjaGFuZ2luZyBpbiBvdXIgc2libGluZyBsaXN0LCBldGMuKQogICAg
IGJvb2wgc3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFn
KEVsZW1lbnRTdHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSk7IH0KICAgICBib29sIHN0
eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1lbnRT
dHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUVtcHR5KTsgfQpAQCAtNjkyLDcgKzY5NSw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAotICAgIGNvbnN0IFJlbmRl
clN0eWxlJiByZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOworICAgIGVudW0gY2xhc3MgUmVzb2x2ZUNv
bXB1dGVkU3R5bGVNb2RlIHsgTm9ybWFsLCBSZW5kZXJlZE9ubHkgfTsKKyAgICBjb25zdCBSZW5k
ZXJTdHlsZSogcmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlID0g
UmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlOjpOb3JtYWwpOwogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiByZXNvbHZlUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkKTsKIAogICAgIHVuc2lnbmVkIHJh
cmVEYXRhQ2hpbGRJbmRleCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuY3BwCmluZGV4IDUxMTRiMjAzNzQyLi42ODhhZTgxNjI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgSFRNTEFyZWFF
bGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIGJvb2wgSFRNTEFyZWFFbGVtZW50Ojpp
c0ZvY3VzYWJsZSgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdl
ID0gaW1hZ2VFbGVtZW50KCk7Ci0gICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPnJlbmRlcmVyKCkg
fHwgaW1hZ2UtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzVmlzaWJsZVdpdGhvdXRSZXNv
bHZpbmdGdWxsU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHN1
cHBvcnRzRm9jdXMoKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9yKDApID49IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDQwNzBmN2Qy
NmQ5Li4zNzUzMmZkMWZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKQEAgLTExMDAsNiArMTEwMCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRm
b3JtSGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmICghaXNT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9jdW1lbnQoKS5mcmFtZSgpKSkgewogICAgICAgICBp
ZiAoZXZlbnQtPmtleUlkZW50aWZpZXIoKSA9PSAiRG93biIgfHwgZXZlbnQtPmtleUlkZW50aWZp
ZXIoKSA9PSAiVXAiKSB7CiAgICAgICAgICAgICBmb2N1cygpOworICAgICAgICAgICAgZG9jdW1l
bnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICAvLyBDYWxsaW5nIGZvY3Vz
KCkgbWF5IGNhdXNlIHVzIHRvIGxvc2Ugb3VyIHJlbmRlcmVyLiBSZXR1cm4gdHJ1ZSBzbwogICAg
ICAgICAgICAgLy8gdGhhdCBvdXIgY2FsbGVyIGRvZXNuJ3QgcHJvY2VzcyB0aGUgZXZlbnQgZnVy
dGhlciwgYnV0IGRvbid0IHNldAogICAgICAgICAgICAgLy8gdGhlIGV2ZW50IGFzIGhhbmRsZWQu
CkBAIC0xMjE1LDYgKzEyMTYsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICB9IGVsc2UgaWYgKFJlbmRl
clRoZW1lOjpzaW5nbGV0b24oKS5wb3BzTWVudUJ5QXJyb3dLZXlzKCkpIHsKICAgICAgICAgICAg
IGlmIChrZXlDb2RlID09ICcgJykgewogICAgICAgICAgICAgICAgIGZvY3VzKCk7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICAgICAgICAg
ICAgICAvLyBDYWxsaW5nIGZvY3VzKCkgbWF5IHJlbW92ZSB0aGUgcmVuZGVyZXIgb3IgY2hhbmdl
IHRoZSByZW5kZXJlciB0eXBlLgogICAgICAgICAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKTsKQEAgLTEyNDIsNiArMTI0NCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAKICAgICBpZiAo
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3VzZUV2
ZW50PihldmVudCkgJiYgZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09IExl
ZnRCdXR0b24pIHsKICAgICAgICAgZm9jdXMoKTsKKyAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKGlzPFJlbmRlck1lbnVM
aXN0PihyZW5kZXJlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTI4YjM3YzNiYTQuLjI4YjQyZGIwMzUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cApAQCAtMjQyLDcgKzI0MiwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZQogCiAgICAgc2V0
SW5uZXJUZXh0VmFsdWUodGV4dCk7CiAKLSAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgaGFwcGVu
IHRvIHRoZSB2YWx1ZSAoYXMgaW4gdmFsdWUoKSkgaWYgdGhlcmUncyBubyByZW5kZXJlcj8KKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgbmVlZCBzeW5jaHJvbm91cyBzdHlsZSB1cGRhdGUs
IG9yIHJlbmRlcmVyIGF0IGFsbC4KKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIGRvY3Vt
ZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjYwNTQ4MzQ0NWUuLjdmMjI4ODk2OTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCkBAIC0x
NTcsOSArMTU3LDYgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6d2lsbE9wZW5Qb3B1cCgpCiAK
IHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0g
ICAgaWYgKCFyZW5kZXJCb3goKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFpczxXaGVl
bEV2ZW50PihldmVudCkpCiAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392313</attachid>
            <date>2020-03-03 12:49:27 -0800</date>
            <delta_ts>2020-03-04 00:29:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>focus-no-style-resolution-7.patch</filename>
            <type>text/plain</type>
            <size>16055</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYTJhNzBjN2RmMS4uYzJhMDFiMzVkYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wMy0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3VzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMva2V5
cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9r
ZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbDoKKworICAgICAgICBNb2RpZnkgdGhlIHRlc3Qgc28g
aXQgaXMgbm90IHNlbnNpdGl2ZSB0byBub24tcmVuZGVyZWQgd2hpdGVzcGFjZSBjaGFuZ2VzCisg
ICAgICAgIChjYXVzZWQgYnkgdGltaW5nIG9mIHJlbmRlciB0cmVlIHVwZGF0ZXMpLgorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9hdXRvZm9jdXMtaW5wdXQtY3NzLXN0eWxlLWNoYW5nZS5odG1sOgor
CisgICAgICAgIFJlYWQgdGhlIDxpbnB1dCBhdXRvZm9jdXM+IDpmb2N1cyBzdHlsZSBpbiByQUYg
YXMgZm9jdXNpbmcgaGFwcGVucyBhc3luY2hyb25vdXNseS4gVGhpcyBtYXRjaGVzIG90aGVyIGJy
b3dzZXJzLgorCiAyMDIwLTAyLTI3ICBEb3VnIEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBhdGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQg
Y2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQKaW5kZXggNzY4ZWJl
M2VjZDYuLjdkNGQxODA0MDdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9r
ZXlwcmVzcy1yZW1vdmVkLW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBA
CiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIG5vZGUgZG9lcyBub3QgcmV0YWluIGtleWJvYXJk
IGZvY3VzIGFmdGVyIGl0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLgogCi0gUEFTUzog
ZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuCitQQVNTOiBkaWQgbm90IGdldCBrZXlib2FyZCBl
dmVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92
ZWQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1u
b2RlLmh0bWwKaW5kZXggYWU5NWE5Mzk3YTUuLmE2NTcyZjM2MTgzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbApAQCAtMSw4ICsx
LDYgQEAKIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgbm9kZSBkb2VzIG5vdCByZXRhaW4g
a2V5Ym9hcmQgZm9jdXMgYWZ0ZXIgaXQgaGFzCiBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLjwv
cD4KLTxocj4KLTxpbnB1dCB0eXBlPSJ0ZXh0Ij4KLTxwcmUgaWQ9ImNvbnNvbGUiPlBBU1M6IGRp
ZCBub3QgZ2V0IGtleWJvYXJkIGV2ZW50LjwvcHJlPgorPGhyPjxpbnB1dCB0eXBlPSJ0ZXh0Ij48
cHJlIGlkPSJjb25zb2xlIj5QQVNTOiBkaWQgbm90IGdldCBrZXlib2FyZCBldmVudC48L3ByZT4K
IAogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRt
bAppbmRleCBhMjBlNTVhZjE4ZS4uNmFjZmZhZjMyNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0
bWwKQEAgLTEzLDkgKzEzLDExIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCi12YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7Ci1pZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXN0LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gInJnYigw
LCAxMjgsIDApIikKLSAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOworcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKCgpPT57CisgICAgaWYgKGdldENvbXB1dGVkU3R5bGUodGVzdCwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMTI4LCAwKSIpCisg
ICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Cit9KTsKKwogPC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI1YzBlMTVmOTcuLjkyZDA0MmQwMWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDMtMDMgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGZ1bGwgc3R5bGUgcmVzb2x1dGlvbiBvbiBF
bGVtZW50Ojpmb2N1cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDg1MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFbGVtZW50Ojpmb2N1cygpIGN1cnJlbnRseSB0cmlnZ2VycyBmdWxsIHN0eWxlIHJl
c29sdXRpb24gYm90aCBiZWZvcmUgKHRvIGNvbXB1dGUgZWxlbWVudCB2aXNpYmlsaXR5KQorICAg
ICAgICBhbmQgYWZ0ZXIgKGZvciBubyBwYXJ0aWN1bGFyIHJlYXNvbikuCisKKyAgICAgICAgUmVz
b2x2aW5nIHN0eWxlIGNhbiBiZSBjb3N0bHkgaWYgdGhlcmUgYXJlIGZ1cnRoZXIgRE9NIG11dGF0
aW9ucyB0aGF0IGVuZCB1cCBpbnZhbGlkYXRpbmcgaXQgYWdhaW4uCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIGNoZWFwZXIgc2luZ2xlLWVsZW1lbnQgd2F5IHRvIGNvbXB1dGluZyB2aXNpYmls
aXR5IGFuZCB1c2VzIGl0IGZvciBmb2N1cygpLgorCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBi
ZSAzLTQlIFNwZWVkb21ldGVyIHByb2dyZXNzaW9uLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZv
Y3VzZWRVSUVsZW1lbnRGb3JQYWdlKToKKworICAgICAgICBBWCBjb2RlIGFzc3VtZXMgcmVuZGVy
ZXJzIGhhdmUgZXhpc3QgZm9yIGZvY3VzZWQgZWxlbWVudCBzbyBlbnN1cmUgc3R5bGUgaXMgdXAg
dG8gZGF0ZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQpOgorCisgICAgICAgIFJlbW92ZSBzdHlsZSBy
ZXNvbHV0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorCisgICAgICAgIFVzZSBpc1Zpc2libGVX
aXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlIGhlbHBlci4KKworICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6Zm9jdXMpOgorCisgICAgICAgIFJlbW92ZSBzdHlsZSByZXNvbHV0aW9uLgorCisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSk6CisKKyAgICAgICAg
QWRkIGEgbW9kZSB3aGVyZSB3ZSBiYWlsIG91dCB3aGVuIHdlIGZpZ3VyZSBvdXQgd2UgYXJlIGlu
IGRpc3BsYXk6bm9uZSBzdWJ0cmVlLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNW
YWxpZFN0eWxlIGNvbnN0KToKKworICAgICAgICBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHZhbGlk
IHN0eWxlLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc1Zpc2libGVXaXRob3V0UmVz
b2x2aW5nRnVsbFN0eWxlIGNvbnN0KToKKworICAgICAgICBVc2UgY29tcHV0ZWQgc3R5bGUgbWVj
aGFuaXNtIGlmIHRoZSByZW5kZXIgc3R5bGUgaXMgbm90IHVwIHRvIGRhdGUuCisKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEFyZWFFbGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6CisKKyAgICAgICAgVXNlIGlz
VmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUgaGVyZSB0b28uCisKKyAgICAgICAgKiBo
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKToKKworICAgICAg
ICBVcGRhdGUgc3R5bGUgYWZ0ZXIgZXhwbGljaXQgZm9jdXMoKSBjYWxscyB0byBrZWVwIHRoZSBl
eGlzdGluZyBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldFJhbmdlVGV4dCk6CisKKyAgICAgICAgRW5zdXJlIHRoZSByZW5kZXJlciBpcyBjcmVhdGVk
LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmZvcndhcmRFdmVudCk6CisKKyAgICAgICAg
UmVtb3ZlIHVubmVlZGVkIHJlbmRlcmVyIHRlc3QuCisKIDIwMjAtMDItMjcgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IHVz
ZSBvZiBkYXJrIG1vZGUgdGhlbWUgaW5kZXBlbmRlbnRseSBmcm9tIHN5c3RlbS13aWRlIHRoZW1l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCAzZjE4NTQ0YTc0Yi4uZmNhODJhNGJiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtNDI3LDYgKzQyNyw4IEBAIEFYQ29yZU9iamVj
dCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFn
ZSkKICAgICBpZiAoIWZvY3VzZWREb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
KyAgICBmb2N1c2VkRG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwogI2lmIEVOQUJM
RShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgaWYgKGNsaWVudFN1cHBvcnRzSXNv
bGF0ZWRUcmVlKCkpCiAgICAgICAgIHJldHVybiBpc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KCpm
b2N1c2VkRG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNjBmNWZhNmMyZjUu
Ljc5ZGY4NWRjYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzMzIsOSArNDMzMiw2
IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVt
ZW50PihvbGRGb2N1c2VkRWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIEhUTUxJbnB1dEVsZW1l
bnQ6OmRpZEJsdXIganVzdCBzY3JvbGxzIHRleHQgZmllbGRzIGJhY2sgdG8gdGhlIGJlZ2lubmlu
Zy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGRvbmUgYXN5bmNocm9udXNs
eS4KLSAgICAgICAgICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVl
IHRvIFBvc3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAgICAgICAgIGlmIChldmVudHNNb2RlID09
IEZvY3VzUmVtb3ZhbEV2ZW50c01vZGU6OkRpc3BhdGNoKQotICAgICAgICAgICAgICAgIHVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCpvbGRGb2N1c2VkRWxlbWVudCkuZGlkQmx1cigpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQy
MiwxMCArNDQxOSw2IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQq
IGVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIHBhZ2UoKS0+
Y2hyb21lKCkuZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKG1fZm9jdXNlZEVsZW1lbnQuZ2V0KCkpOwog
CiBTZXRGb2N1c2VkTm9kZURvbmU6Ci0gICAgLy8gVXBkYXRpbmcgc3R5bGUgbWF5IGRpc3BhdGNo
IGV2ZW50cyBkdWUgdG8gUG9zdFJlc29sdXRpb25DYWxsYmFjawotICAgIC8vIEZJWE1FOiBXaHkg
aXMgc3luY2hyb25vdXMgc3R5bGUgdXBkYXRlIG5lZWRlZCBoZXJlIGF0IGFsbD8KLSAgICBpZiAo
ZXZlbnRzTW9kZSA9PSBGb2N1c1JlbW92YWxFdmVudHNNb2RlOjpEaXNwYXRjaCkKLSAgICAgICAg
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHJldHVybiAhZm9jdXNDaGFuZ2VCbG9ja2VkOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggY2UyZDcxYWVjZDkuLmVmNDVjYzkyZmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02MDcsMjMgKzYwNywxMyBAQCBib29sIEVsZW1lbnQ6
OmlzRm9jdXNhYmxlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFy
ZW5kZXJlcigpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBub2RlIGlzIGluIGEgZGlzcGxheTpub25l
IHRyZWUgaXQgbWlnaHQgc2F5IGl0IG5lZWRzIHN0eWxlIHJlY2FsYyBidXQKLSAgICAgICAgLy8g
dGhlIHdob2xlIGRvY3VtZW50IGlzIGFjdHVhbGx5IHVwIHRvIGRhdGUuCi0gICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBhc3NlcnQgIW5lZWRzU3R5bGVSZWNhbGMoKSB8fCAh
ZG9jdW1lbnQoKS5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQotICAgICAgICAvLyBidXQgaXQgaGl0
cyB0b28gZnJlcXVlbnRseSBvbiB3ZWJzaXRlcyBsaWtlIEdtYWlsIGFuZCBNaWNyb3NvZnQgRXhj
aGFuZ2UuCi0KICAgICAgICAgLy8gRWxlbWVudHMgaW4gY2FudmFzIGZhbGxiYWNrIGNvbnRlbnQg
YXJlIG5vdCByZW5kZXJlZCwgYnV0IHRoZXkgYXJlIGFsbG93ZWQgdG8gYmUKICAgICAgICAgLy8g
Zm9jdXNhYmxlIGFzIGxvbmcgYXMgdGhlaXIgY2FudmFzIGlzIGRpc3BsYXllZCBhbmQgdmlzaWJs
ZS4KICAgICAgICAgaWYgKGF1dG8qIGNhbnZhcyA9IGFuY2VzdG9yc09mVHlwZTxIVE1MQ2FudmFz
RWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpCi0gICAgICAgICAgICByZXR1cm4gY2FudmFzLT5yZW5k
ZXJlcigpICYmIGNhbnZhcy0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZTsKKyAgICAgICAgICAgIHJldHVybiBjYW52YXMtPmlzVmlzaWJsZVdp
dGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUoKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogRXZlbiBp
ZiB3ZSBhcmUgbm90IHZpc2libGUsIHdlIG1pZ2h0IGhhdmUgYSBjaGlsZCB0aGF0IGlzIHZpc2li
bGUuCi0gICAgLy8gSHlhdHQgd2FudHMgdG8gZml4IHRoYXQgc29tZSBkYXkgd2l0aCBhICJoYXMg
dmlzaWJsZSBjb250ZW50IiBmbGFnIG9yIHRoZSBsaWtlLgotICAgIGlmICghcmVuZGVyZXIoKSB8
fCByZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
aXNWaXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpOwogfQogCiBib29sIEVsZW1lbnQ6
OmlzVXNlckFjdGlvbkVsZW1lbnRJbkFjdGl2ZUNoYWluKCkgY29uc3QKQEAgLTI5ODUsMTEgKzI5
NzUsNiBAQCB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9u
LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgfQogCiAgICAgUmVmUHRyPEVsZW1lbnQ+
IG5ld1RhcmdldCA9IHRoaXM7Ci0gICAgaWYgKGRvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2Fk
ZWQoKSkKLSAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLQotICAgIGlm
ICgmbmV3VGFyZ2V0LT5kb2N1bWVudCgpICE9IGRvY3VtZW50LnB0cigpKQotICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoYXV0byByb290ID0gc2hhZG93Um9vdFdpdGhEZWxlZ2F0ZXNGb2N1cygq
dGhpcykpIHsKICAgICAgICAgYXV0byBjdXJyZW50bHlGb2N1c2VkRWxlbWVudCA9IG1ha2VSZWZQ
dHIoZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkpOwpAQCAtMzI5MCw3ICszMjc1LDcgQEAgY29u
c3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBSZW5kZXJTdHlsZSYgRWxlbWVu
dDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKQorY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJl
c29sdmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSBtb2RlKQogewogICAg
IEFTU0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQoIWV4aXN0aW5nQ29tcHV0ZWRTdHls
ZSgpKTsKQEAgLTMzMTQsOSArMzI5OSw1MyBAQCBjb25zdCBSZW5kZXJTdHlsZSYgRWxlbWVudDo6
cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKQogICAgICAgICBjb21wdXRlZFN0eWxlID0gc3R5bGUuZ2V0
KCk7CiAgICAgICAgIEVsZW1lbnRSYXJlRGF0YSYgcmFyZURhdGEgPSBlbGVtZW50LT5lbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKICAgICAgICAgcmFyZURhdGEuc2V0Q29tcHV0ZWRTdHlsZShXVEZN
b3ZlKHN0eWxlKSk7CisKKyAgICAgICAgaWYgKG1vZGUgPT0gUmVzb2x2ZUNvbXB1dGVkU3R5bGVN
b2RlOjpSZW5kZXJlZE9ubHkgJiYgY29tcHV0ZWRTdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuICpjb21wdXRlZFN0eWxlOworICAgIHJldHVybiBjb21wdXRlZFN0eWxlOworfQorCitib29s
IEVsZW1lbnQ6Omhhc1ZhbGlkU3R5bGUoKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQoKS5u
ZWVkc1N0eWxlUmVjYWxjKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGRvY3Vt
ZW50KCkuaGFzUGVuZGluZ0Z1bGxTdHlsZVJlYnVpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGxpbmVhZ2VPZlR5cGU8RWxlbWVudD4o
KnRoaXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50LnN0eWxlVmFsaWRpdHkoKSAhPSBTdHlsZTo6
VmFsaWRpdHk6OlZhbGlkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFbGVtZW50Ojppc1Zpc2libGVXaXRob3V0UmVzb2x2aW5n
RnVsbFN0eWxlKCkgY29uc3QKK3sKKyAgICBpZiAoaGFzVmFsaWRTdHlsZSgpKQorICAgICAgICBy
ZXR1cm4gcmVuZGVyU3R5bGUoKSAmJiByZW5kZXJTdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZTsKKworICAgIGF1dG8qIHN0eWxlID0gZXhpc3RpbmdDb21wdXRlZFN0
eWxlKCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgc3R5bGUgPSBjb25zdF9jYXN0PEVsZW1l
bnQmPigqdGhpcykucmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2Rl
OjpSZW5kZXJlZE9ubHkpOworCisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5
bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGFu
Y2VzdG9yc09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuZXhp
c3RpbmdDb21wdXRlZFN0eWxlKCktPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Y29uc3QgUmVuZGVyU3R5bGUmIEVsZW1lbnQ6OnJlc29sdmVQc2V1ZG9FbGVtZW50U3R5bGUoUHNl
dWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKQEAgLTMzNDksNyArMzM3OCw3IEBAIGNvbnN0
IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpCiAKICAgICBhdXRvKiBzdHlsZSA9IGV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgp
OwogICAgIGlmICghc3R5bGUpCi0gICAgICAgIHN0eWxlID0gJnJlc29sdmVDb21wdXRlZFN0eWxl
KCk7CisgICAgICAgIHN0eWxlID0gcmVzb2x2ZUNvbXB1dGVkU3R5bGUoKTsKIAogICAgIGlmIChw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25lKSB7CiAgICAgICAgIGlmIChh
dXRvKiBjYWNoZWRQc2V1ZG9TdHlsZSA9IHN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZhN2E4ZTdlZDVjLi4y
OGNhZDg5MTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNDMsNiArMzQzLDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBuZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgY29uc3Q7CiAKKyAgICBib29s
IGhhc1ZhbGlkU3R5bGUoKSBjb25zdDsKKyAgICBib29sIGlzVmlzaWJsZVdpdGhvdXRSZXNvbHZp
bmdGdWxsU3R5bGUoKSBjb25zdDsKKwogICAgIC8vIE1ldGhvZHMgZm9yIGluZGljYXRpbmcgdGhl
IHN0eWxlIGlzIGFmZmVjdGVkIGJ5IGR5bmFtaWMgdXBkYXRlcyAoZS5nLiwgY2hpbGRyZW4gY2hh
bmdpbmcsIG91ciBwb3NpdGlvbiBjaGFuZ2luZyBpbiBvdXIgc2libGluZyBsaXN0LCBldGMuKQog
ICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVG
bGFnKEVsZW1lbnRTdHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSk7IH0KICAgICBib29s
IHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKEVsZW1l
bnRTdHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUVtcHR5KTsgfQpAQCAtNjkyLDcgKzY5NSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAotICAgIGNvbnN0IFJl
bmRlclN0eWxlJiByZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOworICAgIGVudW0gY2xhc3MgUmVzb2x2
ZUNvbXB1dGVkU3R5bGVNb2RlIHsgTm9ybWFsLCBSZW5kZXJlZE9ubHkgfTsKKyAgICBjb25zdCBS
ZW5kZXJTdHlsZSogcmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2Rl
ID0gUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlOjpOb3JtYWwpOwogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiByZXNvbHZlUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkKTsKIAogICAgIHVuc2lnbmVk
IHJhcmVEYXRhQ2hpbGRJbmRleCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVs
ZW1lbnQuY3BwCmluZGV4IDUxMTRiMjAzNzQyLi42ODhhZTgxNjI2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgSFRNTEFy
ZWFFbGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIGJvb2wgSFRNTEFyZWFFbGVtZW50
Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGlt
YWdlID0gaW1hZ2VFbGVtZW50KCk7Ci0gICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPnJlbmRlcmVy
KCkgfHwgaW1hZ2UtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzVmlzaWJsZVdpdGhvdXRS
ZXNvbHZpbmdGdWxsU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IHN1cHBvcnRzRm9jdXMoKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9yKDApID49
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDQwNzBm
N2QyNmQ5Li4zNzUzMmZkMWZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAKQEAgLTExMDAsNiArMTEwMCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBs
YXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmICgh
aXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9jdW1lbnQoKS5mcmFtZSgpKSkgewogICAgICAg
ICBpZiAoZXZlbnQtPmtleUlkZW50aWZpZXIoKSA9PSAiRG93biIgfHwgZXZlbnQtPmtleUlkZW50
aWZpZXIoKSA9PSAiVXAiKSB7CiAgICAgICAgICAgICBmb2N1cygpOworICAgICAgICAgICAgZG9j
dW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICAvLyBDYWxsaW5nIGZv
Y3VzKCkgbWF5IGNhdXNlIHVzIHRvIGxvc2Ugb3VyIHJlbmRlcmVyLiBSZXR1cm4gdHJ1ZSBzbwog
ICAgICAgICAgICAgLy8gdGhhdCBvdXIgY2FsbGVyIGRvZXNuJ3QgcHJvY2VzcyB0aGUgZXZlbnQg
ZnVydGhlciwgYnV0IGRvbid0IHNldAogICAgICAgICAgICAgLy8gdGhlIGV2ZW50IGFzIGhhbmRs
ZWQuCkBAIC0xMjE1LDYgKzEyMTYsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlz
dERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICB9IGVsc2UgaWYgKFJl
bmRlclRoZW1lOjpzaW5nbGV0b24oKS5wb3BzTWVudUJ5QXJyb3dLZXlzKCkpIHsKICAgICAgICAg
ICAgIGlmIChrZXlDb2RlID09ICcgJykgewogICAgICAgICAgICAgICAgIGZvY3VzKCk7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICAgICAg
ICAgICAgICAvLyBDYWxsaW5nIGZvY3VzKCkgbWF5IHJlbW92ZSB0aGUgcmVuZGVyZXIgb3IgY2hh
bmdlIHRoZSByZW5kZXJlciB0eXBlLgogICAgICAgICAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKQEAgLTEyNDIsNiArMTI0NCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAKICAgICBp
ZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3Vz
ZUV2ZW50PihldmVudCkgJiYgZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09
IExlZnRCdXR0b24pIHsKICAgICAgICAgZm9jdXMoKTsKKyAgICAgICAgZG9jdW1lbnQoKS51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGF1
dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKGlzPFJlbmRlck1l
bnVMaXN0PihyZW5kZXJlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTI4YjM3YzNiYTQuLjI4YjQyZGIwMzUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcApAQCAtMjQyLDcgKzI0MiwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZQogCiAgICAg
c2V0SW5uZXJUZXh0VmFsdWUodGV4dCk7CiAKLSAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgaGFw
cGVuIHRvIHRoZSB2YWx1ZSAoYXMgaW4gdmFsdWUoKSkgaWYgdGhlcmUncyBubyByZW5kZXJlcj8K
KyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgbmVlZCBzeW5jaHJvbm91cyBzdHlsZSB1cGRh
dGUsIG9yIHJlbmRlcmVyIGF0IGFsbC4KKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIGRv
Y3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAgICAgaWYgKCFyZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
cGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjYwNTQ4MzQ0NWUuLjdmMjI4ODk2OTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCkBA
IC0xNTcsOSArMTU3LDYgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6d2lsbE9wZW5Qb3B1cCgp
CiAKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmZvcndhcmRFdmVudChFdmVudCYgZXZlbnQpCiB7
Ci0gICAgaWYgKCFyZW5kZXJCb3goKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFpczxX
aGVlbEV2ZW50PihldmVudCkpCiAgICAgICAgIHJldHVybjsKIAo=
</data>
<flag name="review"
          id="407764"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392385</attachid>
            <date>2020-03-04 00:29:15 -0800</date>
            <delta_ts>2020-03-04 01:22:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>focus-no-style-resolution-8.patch</filename>
            <type>text/plain</type>
            <size>17011</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYTJhNzBjN2RmMS4uOTBjNGVhODQ5NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wMy0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3VzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2tleXBy
ZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMva2V5
cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWw6CisKKyAgICAgICAgTW9kaWZ5IHRoZSB0ZXN0IHNvIGl0
IGlzIG5vdCBzZW5zaXRpdmUgdG8gbm9uLXJlbmRlcmVkIHdoaXRlc3BhY2UgY2hhbmdlcworICAg
ICAgICAoY2F1c2VkIGJ5IHRpbWluZyBvZiByZW5kZXIgdHJlZSB1cGRhdGVzKS4KKworICAgICAg
ICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbDoKKwor
ICAgICAgICBSZWFkIHRoZSA8aW5wdXQgYXV0b2ZvY3VzPiA6Zm9jdXMgc3R5bGUgaW4gckFGIGFz
IGZvY3VzaW5nIGhhcHBlbnMgYXN5bmNocm9ub3VzbHkuIFRoaXMgbWF0Y2hlcyBvdGhlciBicm93
c2Vycy4KKwogMjAyMC0wMi0yNyAgRG91ZyBLZWxseSAgPGRvdWdrQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIaXQgdGVzdCB3aXRoIGNsaXBQYXRoIHJlZmVyZW5jaW5nIHBhcmVudCBlbGVtZW50IGNh
dXNlcyBpbmZpbml0ZSByZWN1cnNpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDc2OGViZTNl
Y2Q2Li43ZDRkMTgwNDA3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5
cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAog
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBub2RlIGRvZXMgbm90IHJldGFpbiBrZXlib2FyZCBm
b2N1cyBhZnRlciBpdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS4KIAotIFBBU1M6IGRp
ZCBub3QgZ2V0IGtleWJvYXJkIGV2ZW50LgorUEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZl
bnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVk
LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9k
ZS5odG1sCmluZGV4IGFlOTVhOTM5N2E1Li5hNjU3MmYzNjE4MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWwKQEAgLTEsOCArMSw2
IEBACiA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIG5vZGUgZG9lcyBub3QgcmV0YWluIGtl
eWJvYXJkIGZvY3VzIGFmdGVyIGl0IGhhcwogYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS48L3A+
Ci08aHI+Ci08aW5wdXQgdHlwZT0idGV4dCI+Ci08cHJlIGlkPSJjb25zb2xlIj5QQVNTOiBkaWQg
bm90IGdldCBrZXlib2FyZCBldmVudC48L3ByZT4KKzxocj48aW5wdXQgdHlwZT0idGV4dCI+PHBy
ZSBpZD0iY29uc29sZSI+UEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuPC9wcmU+CiAK
IDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwK
aW5kZXggYTIwZTU1YWYxOGUuLjZhY2ZmYWYzMjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtaW5wdXQtY3NzLXN0eWxlLWNoYW5nZS5odG1s
CkBAIC0xMyw5ICsxMywxMSBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIH0KIAotdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdCIpOwotaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGVz
dCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwg
MTI4LCAwKSIpCi0gICAgcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKK3JlcXVlc3RBbmltYXRp
b25GcmFtZSgoKT0+eworICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKHRlc3QsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAsIDEyOCwgMCkiKQorICAg
ICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOworfSk7CisKIDwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDViNWMwZTE1Zjk3Li40MDllN2U0NjQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTAzLTAzICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBmdWxsIHN0eWxlIHJlc29sdXRpb24gb24gRWxl
bWVudDo6Zm9jdXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAg
ICAgIEVsZW1lbnQ6OmZvY3VzKCkgY3VycmVudGx5IHRyaWdnZXJzIGZ1bGwgc3R5bGUgcmVzb2x1
dGlvbiBib3RoIGJlZm9yZSAodG8gY29tcHV0ZSBlbGVtZW50IHZpc2liaWxpdHkpCisgICAgICAg
IGFuZCBhZnRlciAoZm9yIG5vIHBhcnRpY3VsYXIgcmVhc29uKS4KKworICAgICAgICBSZXNvbHZp
bmcgc3R5bGUgY2FuIGJlIGNvc3RseSBpZiB0aGVyZSBhcmUgZnVydGhlciBET00gbXV0YXRpb25z
IHRoYXQgZW5kIHVwIGludmFsaWRhdGluZyBpdCBhZ2Fpbi4KKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgY2hlYXBlciBzaW5nbGUtZWxlbWVudCB3YXkgdG8gY29tcHV0aW5nIHZpc2liaWxpdHkg
YW5kIHVzZXMgaXQgZm9yIGZvY3VzKCkuCisKKyAgICAgICAgVGhpcyBhcHBlYXJzIHRvIGJlIDMt
NCUgU3BlZWRvbWV0ZXIgcHJvZ3Jlc3Npb24uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNl
ZFVJRWxlbWVudEZvclBhZ2UpOgorCisgICAgICAgIEFYIGNvZGUgYXNzdW1lcyByZW5kZXJlcnMg
aGF2ZSBleGlzdCBmb3IgZm9jdXNlZCBlbGVtZW50IHNvIGVuc3VyZSBzdHlsZSBpcyB1cCB0byBk
YXRlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCk6CisKKyAgICAgICAgUmVtb3ZlIHN0eWxlIHJlc29s
dXRpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6CisKKyAgICAgICAgVXNlIGlzVmlzaWJsZVdpdGhv
dXRSZXNvbHZpbmdGdWxsU3R5bGUgaGVscGVyLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojpmb2N1cyk6CisKKyAgICAgICAgUmVtb3ZlIHN0eWxlIHJlc29sdXRpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlc29sdmVDb21wdXRlZFN0eWxlKToKKworICAgICAgICBBZGQg
YSBtb2RlIHdoZXJlIHdlIGJhaWwgb3V0IHdoZW4gd2UgZmlndXJlIG91dCB3ZSBhcmUgaW4gZGlz
cGxheTpub25lIHN1YnRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc1ZhbGlk
U3R5bGUgY29uc3QpOgorCisgICAgICAgIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgdmFsaWQgc3R5
bGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZp
bmdGdWxsU3R5bGUgY29uc3QpOgorCisgICAgICAgIFVzZSBjb21wdXRlZCBzdHlsZSBtZWNoYW5p
c20gaWYgdGhlIHJlbmRlciBzdHlsZSBpcyBub3QgdXAgdG8gZGF0ZS4KKworICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQXJlYUVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0KToKKworICAgICAgICBVc2UgaXNWaXNp
YmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSBoZXJlIHRvby4KKworICAgICAgICAqIGh0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOgorCisgICAgICAgIFVw
ZGF0ZSBzdHlsZSBhZnRlciBleHBsaWNpdCBmb2N1cygpIGNhbGxzIHRvIGtlZXAgdGhlIGV4aXN0
aW5nIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0
UmFuZ2VUZXh0KToKKworICAgICAgICBFbnN1cmUgdGhlIHJlbmRlcmVyIGlzIGNyZWF0ZWQuCisK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6Zm9yd2FyZEV2ZW50KToKKworICAgICAgICBSZW1v
dmUgdW5uZWVkZWQgcmVuZGVyZXIgdGVzdC4KKwogMjAyMC0wMi0yNyAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgdXNlIG9m
IGRhcmsgbW9kZSB0aGVtZSBpbmRlcGVuZGVudGx5IGZyb20gc3lzdGVtLXdpZGUgdGhlbWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDNm
MTg1NDRhNzRiLi5mY2E4MmE0YmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC00MjcsNiArNDI3LDggQEAgQVhDb3JlT2JqZWN0KiBB
WE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQog
ICAgIGlmICghZm9jdXNlZERvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAg
IGZvY3VzZWREb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBpZiAoY2xpZW50U3VwcG9ydHNJc29sYXRl
ZFRyZWUoKSkKICAgICAgICAgcmV0dXJuIGlzb2xhdGVkVHJlZUZvY3VzZWRPYmplY3QoKmZvY3Vz
ZWREb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2MGY1ZmE2YzJmNS4uNzlk
Zjg1ZGNjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDMzMiw5ICs0MzMyLDYgQEAg
Ym9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uLCBGb2MKICAgICAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KG9sZEZvY3VzZWRFbGVtZW50KSkgewogICAgICAgICAgICAgLy8gSFRNTElucHV0RWxlbWVudDo6
ZGlkQmx1ciBqdXN0IHNjcm9sbHMgdGV4dCBmaWVsZHMgYmFjayB0byB0aGUgYmVnaW5uaW5nLgog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgZG9uZSBhc3luY2hyb251c2x5Lgot
ICAgICAgICAgICAgLy8gVXBkYXRpbmcgc3R5bGUgbWF5IGRpc3BhdGNoIGV2ZW50cyBkdWUgdG8g
UG9zdFJlc29sdXRpb25DYWxsYmFjawotICAgICAgICAgICAgaWYgKGV2ZW50c01vZGUgPT0gRm9j
dXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpCi0gICAgICAgICAgICAgICAgdXBkYXRlU3R5
bGVJZk5lZWRlZCgpOwogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm9s
ZEZvY3VzZWRFbGVtZW50KS5kaWRCbHVyKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDIyLDEw
ICs0NDE5LDYgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBGb2MKICAgICAgICAgcGFnZSgpLT5jaHJv
bWUoKS5mb2N1c2VkRWxlbWVudENoYW5nZWQobV9mb2N1c2VkRWxlbWVudC5nZXQoKSk7CiAKIFNl
dEZvY3VzZWROb2RlRG9uZToKLSAgICAvLyBVcGRhdGluZyBzdHlsZSBtYXkgZGlzcGF0Y2ggZXZl
bnRzIGR1ZSB0byBQb3N0UmVzb2x1dGlvbkNhbGxiYWNrCi0gICAgLy8gRklYTUU6IFdoeSBpcyBz
eW5jaHJvbm91cyBzdHlsZSB1cGRhdGUgbmVlZGVkIGhlcmUgYXQgYWxsPwotICAgIGlmIChldmVu
dHNNb2RlID09IEZvY3VzUmVtb3ZhbEV2ZW50c01vZGU6OkRpc3BhdGNoKQotICAgICAgICB1cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuICFmb2N1c0NoYW5nZUJsb2NrZWQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjZTJkNzFhZWNkOS4uMTAwMTMwZmRiNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTYwNywyMyArNjA3LDEzIEBAIGJvb2wgRWxlbWVudDo6aXNG
b2N1c2FibGUoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXJlbmRl
cmVyKCkpIHsKLSAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgaW4gYSBkaXNwbGF5Om5vbmUgdHJl
ZSBpdCBtaWdodCBzYXkgaXQgbmVlZHMgc3R5bGUgcmVjYWxjIGJ1dAotICAgICAgICAvLyB0aGUg
d2hvbGUgZG9jdW1lbnQgaXMgYWN0dWFsbHkgdXAgdG8gZGF0ZS4KLSAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFzc2VydCAhbmVlZHNTdHlsZVJlY2FsYygpIHx8ICFkb2N1
bWVudCgpLmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpCi0gICAgICAgIC8vIGJ1dCBpdCBoaXRzIHRv
byBmcmVxdWVudGx5IG9uIHdlYnNpdGVzIGxpa2UgR21haWwgYW5kIE1pY3Jvc29mdCBFeGNoYW5n
ZS4KLQogICAgICAgICAvLyBFbGVtZW50cyBpbiBjYW52YXMgZmFsbGJhY2sgY29udGVudCBhcmUg
bm90IHJlbmRlcmVkLCBidXQgdGhleSBhcmUgYWxsb3dlZCB0byBiZQogICAgICAgICAvLyBmb2N1
c2FibGUgYXMgbG9uZyBhcyB0aGVpciBjYW52YXMgaXMgZGlzcGxheWVkIGFuZCB2aXNpYmxlLgog
ICAgICAgICBpZiAoYXV0byogY2FudmFzID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxDYW52YXNFbGVt
ZW50PigqdGhpcykuZmlyc3QoKSkKLSAgICAgICAgICAgIHJldHVybiBjYW52YXMtPnJlbmRlcmVy
KCkgJiYgY2FudmFzLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlOworICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+aXNWaXNpYmxlV2l0aG91
dFJlc29sdmluZ0Z1bGxTdHlsZSgpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBFdmVuIGlmIHdl
IGFyZSBub3QgdmlzaWJsZSwgd2UgbWlnaHQgaGF2ZSBhIGNoaWxkIHRoYXQgaXMgdmlzaWJsZS4K
LSAgICAvLyBIeWF0dCB3YW50cyB0byBmaXggdGhhdCBzb21lIGRheSB3aXRoIGEgImhhcyB2aXNp
YmxlIGNvbnRlbnQiIGZsYWcgb3IgdGhlIGxpa2UuCi0gICAgaWYgKCFyZW5kZXJlcigpIHx8IHJl
bmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBpc1Zp
c2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlKCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aXNV
c2VyQWN0aW9uRWxlbWVudEluQWN0aXZlQ2hhaW4oKSBjb25zdApAQCAtMjk4NSwxMSArMjk3NSw2
IEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbmV3
VGFyZ2V0ID0gdGhpczsKLSAgICBpZiAoZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgp
KQotICAgICAgICBkb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwotCi0gICAgaWYgKCZu
ZXdUYXJnZXQtPmRvY3VtZW50KCkgIT0gZG9jdW1lbnQucHRyKCkpCi0gICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvIHJvb3QgPSBzaGFkb3dSb290V2l0aERlbGVnYXRlc0ZvY3VzKCp0aGlz
KSkgewogICAgICAgICBhdXRvIGN1cnJlbnRseUZvY3VzZWRFbGVtZW50ID0gbWFrZVJlZlB0cihk
b2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSk7CkBAIC0zMjkwLDcgKzMyNzUsNyBAQCBjb25zdCBS
ZW5kZXJTdHlsZSogRWxlbWVudDo6cmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxlJiBFbGVtZW50Ojpy
ZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCitjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6cmVzb2x2
ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlIG1vZGUpCiB7CiAgICAgQVNT
RVJUKGlzQ29ubmVjdGVkKCkpOwogICAgIEFTU0VSVCghZXhpc3RpbmdDb21wdXRlZFN0eWxlKCkp
OwpAQCAtMzMxNCw5ICszMjk5LDUzIEBAIGNvbnN0IFJlbmRlclN0eWxlJiBFbGVtZW50OjpyZXNv
bHZlQ29tcHV0ZWRTdHlsZSgpCiAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBzdHlsZS5nZXQoKTsK
ICAgICAgICAgRWxlbWVudFJhcmVEYXRhJiByYXJlRGF0YSA9IGVsZW1lbnQtPmVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpOwogICAgICAgICByYXJlRGF0YS5zZXRDb21wdXRlZFN0eWxlKFdURk1vdmUo
c3R5bGUpKTsKKworICAgICAgICBpZiAobW9kZSA9PSBSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGU6
OlJlbmRlcmVkT25seSAmJiBjb21wdXRlZFN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4g
KmNvbXB1dGVkU3R5bGU7CisgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGU7Cit9CisKK2Jvb2wgRWxl
bWVudDo6aGFzVmFsaWRTdHlsZSgpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLm5lZWRz
U3R5bGVSZWNhbGMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZG9jdW1lbnQo
KS5oYXNQZW5kaW5nRnVsbFN0eWxlUmVidWlsZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50PigqdGhp
cykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGVWYWxpZGl0eSgpICE9IFN0eWxlOjpWYWxp
ZGl0eTo6VmFsaWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxs
U3R5bGUoKSBjb25zdAoreworICAgIGlmIChyZW5kZXJTdHlsZSgpIHx8IGhhc1ZhbGlkU3R5bGUo
KSkKKyAgICAgICAgcmV0dXJuIHJlbmRlclN0eWxlKCkgJiYgcmVuZGVyU3R5bGUoKS0+dmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7CisKKyAgICBhdXRvKiBzdHlsZSA9IGV4aXN0
aW5nQ29tcHV0ZWRTdHlsZSgpOworICAgIGlmICghc3R5bGUpCisgICAgICAgIHN0eWxlID0gY29u
c3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpLnJlc29sdmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21w
dXRlZFN0eWxlTW9kZTo6UmVuZGVyZWRPbmx5KTsKKworICAgIGlmICghc3R5bGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpOb25lIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlm
IChlbGVtZW50LmV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGNvbnN0IFJlbmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlUHNldWRvRWxl
bWVudFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCkBAIC0zMzQ5LDcgKzMz
NzgsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9J
ZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogCiAgICAgYXV0byogc3R5bGUgPSBleGlzdGluZ0Nv
bXB1dGVkU3R5bGUoKTsKICAgICBpZiAoIXN0eWxlKQotICAgICAgICBzdHlsZSA9ICZyZXNvbHZl
Q29tcHV0ZWRTdHlsZSgpOworICAgICAgICBzdHlsZSA9IHJlc29sdmVDb21wdXRlZFN0eWxlKCk7
CiAKICAgICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSkgewog
ICAgICAgICBpZiAoYXV0byogY2FjaGVkUHNldWRvU3R5bGUgPSBzdHlsZS0+Z2V0Q2FjaGVkUHNl
dWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2
YTdhOGU3ZWQ1Yy4uMjhjYWQ4OTEyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzQzLDYgKzM0
Myw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0
OwogCisgICAgYm9vbCBoYXNWYWxpZFN0eWxlKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zpc2libGVX
aXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlKCkgY29uc3Q7CisKICAgICAvLyBNZXRob2RzIGZvciBp
bmRpY2F0aW5nIHRoZSBzdHlsZSBpcyBhZmZlY3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4s
IGNoaWxkcmVuIGNoYW5naW5nLCBvdXIgcG9zaXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcg
bGlzdCwgZXRjLikKICAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlBY3RpdmUp
OyB9CiAgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0
eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpTdHlsZUFmZmVjdGVkQnlFbXB0eSk7IH0KQEAgLTY5
Miw3ICs2OTUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAK
LSAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmVzb2x2ZUNvbXB1dGVkU3R5bGUoKTsKKyAgICBlbnVt
IGNsYXNzIFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSB7IE5vcm1hbCwgUmVuZGVyZWRPbmx5IH07
CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHJlc29sdmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21w
dXRlZFN0eWxlTW9kZSA9IFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZTo6Tm9ybWFsKTsKICAgICBj
b25zdCBSZW5kZXJTdHlsZSYgcmVzb2x2ZVBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZCk7CiAK
ICAgICB1bnNpZ25lZCByYXJlRGF0YUNoaWxkSW5kZXgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZDhjY2FiMDc4NDEuLmJkMDI0OGUxNzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMzY5LDgg
KzM2OSwxMyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRp
bmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3RpbwogCiAgICAgc2V0Q2FyZXRSZWN0TmVl
ZHNVcGRhdGUoKTsKIAotICAgIGlmICghbmV3U2VsZWN0aW9uLmlzTm9uZSgpICYmICEob3B0aW9u
cyAmIERvTm90U2V0Rm9jdXMpKQorICAgIGlmICghbmV3U2VsZWN0aW9uLmlzTm9uZSgpICYmICEo
b3B0aW9ucyAmIERvTm90U2V0Rm9jdXMpKSB7CisgICAgICAgIGF1dG8qIG9sZEZvY3VzZWRFbGVt
ZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKTsKICAgICAgICAgc2V0
Rm9jdXNlZEVsZW1lbnRJZk5lZWRlZCgpOworICAgICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBi
ZSBuZWVkZWQuCisgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVu
dCgpICE9IG9sZEZvY3VzZWRFbGVtZW50KQorICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIH0KIAogICAgIC8vIEFsd2F5cyBjbGVhciB0
aGUgeCBwb3NpdGlvbiB1c2VkIGZvciB2ZXJ0aWNhbCBhcnJvdyBuYXZpZ2F0aW9uLgogICAgIC8v
IEl0IHdpbGwgYmUgcmVzdG9yZWQgYnkgdGhlIHZlcnRpY2FsIGFycm93IG5hdmlnYXRpb24gY29k
ZSBpZiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5k
ZXggNTExNGIyMDM3NDIuLjY4OGFlODE2MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgYm9vbCBIVE1MQXJlYUVsZW1lbnQ6Omlz
TW91c2VGb2N1c2FibGUoKSBjb25zdAogYm9vbCBIVE1MQXJlYUVsZW1lbnQ6OmlzRm9jdXNhYmxl
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBpbWFnZUVs
ZW1lbnQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+cmVuZGVyZXIoKSB8fCBpbWFnZS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkK
KyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNWaXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxT
dHlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1
cygpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlT3IoMCkgPj0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNDA3MGY3ZDI2ZDkuLjM3NTMy
ZmQxZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAt
MTEwMCw2ICsxMTAwLDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6cGxhdGZvcm1IYW5kbGVL
ZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKCFpc1NwYXRpYWxOYXZp
Z2F0aW9uRW5hYmxlZChkb2N1bWVudCgpLmZyYW1lKCkpKSB7CiAgICAgICAgIGlmIChldmVudC0+
a2V5SWRlbnRpZmllcigpID09ICJEb3duIiB8fCBldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJV
cCIpIHsKICAgICAgICAgICAgIGZvY3VzKCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgIC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgY2F1
c2UgdXMgdG8gbG9zZSBvdXIgcmVuZGVyZXIuIFJldHVybiB0cnVlIHNvCiAgICAgICAgICAgICAv
LyB0aGF0IG91ciBjYWxsZXIgZG9lc24ndCBwcm9jZXNzIHRoZSBldmVudCBmdXJ0aGVyLCBidXQg
ZG9uJ3Qgc2V0CiAgICAgICAgICAgICAvLyB0aGUgZXZlbnQgYXMgaGFuZGxlZC4KQEAgLTEyMTUs
NiArMTIxNiw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAgIH0gZWxzZSBpZiAoUmVuZGVyVGhlbWU6OnNp
bmdsZXRvbigpLnBvcHNNZW51QnlBcnJvd0tleXMoKSkgewogICAgICAgICAgICAgaWYgKGtleUNv
ZGUgPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBk
b2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgICAgICAgICAgICAgIC8vIENh
bGxpbmcgZm9jdXMoKSBtYXkgcmVtb3ZlIHRoZSByZW5kZXJlciBvciBjaGFuZ2UgdGhlIHJlbmRl
cmVyIHR5cGUuCiAgICAgICAgICAgICAgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpOwpAQCAtMTI0Miw2ICsxMjQ0LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxp
c3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKIAogICAgIGlmIChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2ZW50
KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikg
ewogICAgICAgICBmb2N1cygpOworICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgYXV0byogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoaXM8UmVuZGVyTWVudUxpc3Q+KHJlbmRl
cmVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmNwcAppbmRleCA5MjhiMzdjM2JhNC4uMjhiNDJkYjAzNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yNDIs
NyArMjQyLDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpzZXRSYW5nZVRleHQoY29uc3QgU3RyaW5nJiByZXBsYWNlCiAKICAgICBzZXRJbm5lclRleHRW
YWx1ZSh0ZXh0KTsKIAotICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHZh
bHVlIChhcyBpbiB2YWx1ZSgpKSBpZiB0aGVyZSdzIG5vIHJlbmRlcmVyPworICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZG4ndCBuZWVkIHN5bmNocm9ub3VzIHN0eWxlIHVwZGF0ZSwgb3IgcmVuZGVy
ZXIgYXQgYWxsLgorICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICAgICAgZG9jdW1lbnQoKS51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CisKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcAppbmRleCBmNjA1NDgzNDQ1ZS4uN2YyMjg4OTY5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTE1Nyw5ICsxNTcs
NiBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50Ojp3aWxsT3BlblBvcHVwKCkKIAogdm9pZCBTcGlu
QnV0dG9uRWxlbWVudDo6Zm9yd2FyZEV2ZW50KEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIXJl
bmRlckJveCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIWlzPFdoZWVsRXZlbnQ+KGV2
ZW50KSkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392393</attachid>
            <date>2020-03-04 01:22:10 -0800</date>
            <delta_ts>2020-03-04 02:25:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>focus-no-style-resolution-9.patch</filename>
            <type>text/plain</type>
            <size>22039</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYTJhNzBjN2RmMS4uOTBjNGVhODQ5NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wMy0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3VzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2tleXBy
ZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMva2V5
cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWw6CisKKyAgICAgICAgTW9kaWZ5IHRoZSB0ZXN0IHNvIGl0
IGlzIG5vdCBzZW5zaXRpdmUgdG8gbm9uLXJlbmRlcmVkIHdoaXRlc3BhY2UgY2hhbmdlcworICAg
ICAgICAoY2F1c2VkIGJ5IHRpbWluZyBvZiByZW5kZXIgdHJlZSB1cGRhdGVzKS4KKworICAgICAg
ICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbDoKKwor
ICAgICAgICBSZWFkIHRoZSA8aW5wdXQgYXV0b2ZvY3VzPiA6Zm9jdXMgc3R5bGUgaW4gckFGIGFz
IGZvY3VzaW5nIGhhcHBlbnMgYXN5bmNocm9ub3VzbHkuIFRoaXMgbWF0Y2hlcyBvdGhlciBicm93
c2Vycy4KKwogMjAyMC0wMi0yNyAgRG91ZyBLZWxseSAgPGRvdWdrQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIaXQgdGVzdCB3aXRoIGNsaXBQYXRoIHJlZmVyZW5jaW5nIHBhcmVudCBlbGVtZW50IGNh
dXNlcyBpbmZpbml0ZSByZWN1cnNpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDc2OGViZTNl
Y2Q2Li43ZDRkMTgwNDA3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5
cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAog
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBub2RlIGRvZXMgbm90IHJldGFpbiBrZXlib2FyZCBm
b2N1cyBhZnRlciBpdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS4KIAotIFBBU1M6IGRp
ZCBub3QgZ2V0IGtleWJvYXJkIGV2ZW50LgorUEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZl
bnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVk
LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9k
ZS5odG1sCmluZGV4IGFlOTVhOTM5N2E1Li5hNjU3MmYzNjE4MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWwKQEAgLTEsOCArMSw2
IEBACiA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIG5vZGUgZG9lcyBub3QgcmV0YWluIGtl
eWJvYXJkIGZvY3VzIGFmdGVyIGl0IGhhcwogYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTS48L3A+
Ci08aHI+Ci08aW5wdXQgdHlwZT0idGV4dCI+Ci08cHJlIGlkPSJjb25zb2xlIj5QQVNTOiBkaWQg
bm90IGdldCBrZXlib2FyZCBldmVudC48L3ByZT4KKzxocj48aW5wdXQgdHlwZT0idGV4dCI+PHBy
ZSBpZD0iY29uc29sZSI+UEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuPC9wcmU+CiAK
IDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwK
aW5kZXggYTIwZTU1YWYxOGUuLjZhY2ZmYWYzMjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtaW5wdXQtY3NzLXN0eWxlLWNoYW5nZS5odG1s
CkBAIC0xMyw5ICsxMywxMSBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIH0KIAotdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdCIpOwotaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGVz
dCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwg
MTI4LCAwKSIpCi0gICAgcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKK3JlcXVlc3RBbmltYXRp
b25GcmFtZSgoKT0+eworICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKHRlc3QsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAicmdiKDAsIDEyOCwgMCkiKQorICAg
ICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOworfSk7CisKIDwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDViNWMwZTE1Zjk3Li40MDllN2U0NjQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTAzLTAzICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBmdWxsIHN0eWxlIHJlc29sdXRpb24gb24gRWxl
bWVudDo6Zm9jdXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAg
ICAgIEVsZW1lbnQ6OmZvY3VzKCkgY3VycmVudGx5IHRyaWdnZXJzIGZ1bGwgc3R5bGUgcmVzb2x1
dGlvbiBib3RoIGJlZm9yZSAodG8gY29tcHV0ZSBlbGVtZW50IHZpc2liaWxpdHkpCisgICAgICAg
IGFuZCBhZnRlciAoZm9yIG5vIHBhcnRpY3VsYXIgcmVhc29uKS4KKworICAgICAgICBSZXNvbHZp
bmcgc3R5bGUgY2FuIGJlIGNvc3RseSBpZiB0aGVyZSBhcmUgZnVydGhlciBET00gbXV0YXRpb25z
IHRoYXQgZW5kIHVwIGludmFsaWRhdGluZyBpdCBhZ2Fpbi4KKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgY2hlYXBlciBzaW5nbGUtZWxlbWVudCB3YXkgdG8gY29tcHV0aW5nIHZpc2liaWxpdHkg
YW5kIHVzZXMgaXQgZm9yIGZvY3VzKCkuCisKKyAgICAgICAgVGhpcyBhcHBlYXJzIHRvIGJlIDMt
NCUgU3BlZWRvbWV0ZXIgcHJvZ3Jlc3Npb24uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNl
ZFVJRWxlbWVudEZvclBhZ2UpOgorCisgICAgICAgIEFYIGNvZGUgYXNzdW1lcyByZW5kZXJlcnMg
aGF2ZSBleGlzdCBmb3IgZm9jdXNlZCBlbGVtZW50IHNvIGVuc3VyZSBzdHlsZSBpcyB1cCB0byBk
YXRlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCk6CisKKyAgICAgICAgUmVtb3ZlIHN0eWxlIHJlc29s
dXRpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6CisKKyAgICAgICAgVXNlIGlzVmlzaWJsZVdpdGhv
dXRSZXNvbHZpbmdGdWxsU3R5bGUgaGVscGVyLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojpmb2N1cyk6CisKKyAgICAgICAgUmVtb3ZlIHN0eWxlIHJlc29sdXRpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlc29sdmVDb21wdXRlZFN0eWxlKToKKworICAgICAgICBBZGQg
YSBtb2RlIHdoZXJlIHdlIGJhaWwgb3V0IHdoZW4gd2UgZmlndXJlIG91dCB3ZSBhcmUgaW4gZGlz
cGxheTpub25lIHN1YnRyZWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc1ZhbGlk
U3R5bGUgY29uc3QpOgorCisgICAgICAgIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgdmFsaWQgc3R5
bGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZp
bmdGdWxsU3R5bGUgY29uc3QpOgorCisgICAgICAgIFVzZSBjb21wdXRlZCBzdHlsZSBtZWNoYW5p
c20gaWYgdGhlIHJlbmRlciBzdHlsZSBpcyBub3QgdXAgdG8gZGF0ZS4KKworICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQXJlYUVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0KToKKworICAgICAgICBVc2UgaXNWaXNp
YmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSBoZXJlIHRvby4KKworICAgICAgICAqIGh0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOgorCisgICAgICAgIFVw
ZGF0ZSBzdHlsZSBhZnRlciBleHBsaWNpdCBmb2N1cygpIGNhbGxzIHRvIGtlZXAgdGhlIGV4aXN0
aW5nIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0
UmFuZ2VUZXh0KToKKworICAgICAgICBFbnN1cmUgdGhlIHJlbmRlcmVyIGlzIGNyZWF0ZWQuCisK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6Zm9yd2FyZEV2ZW50KToKKworICAgICAgICBSZW1v
dmUgdW5uZWVkZWQgcmVuZGVyZXIgdGVzdC4KKwogMjAyMC0wMi0yNyAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgdXNlIG9m
IGRhcmsgbW9kZSB0aGVtZSBpbmRlcGVuZGVudGx5IGZyb20gc3lzdGVtLXdpZGUgdGhlbWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDNm
MTg1NDRhNzRiLi5mY2E4MmE0YmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC00MjcsNiArNDI3LDggQEAgQVhDb3JlT2JqZWN0KiBB
WE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQog
ICAgIGlmICghZm9jdXNlZERvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAg
IGZvY3VzZWREb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBpZiAoY2xpZW50U3VwcG9ydHNJc29sYXRl
ZFRyZWUoKSkKICAgICAgICAgcmV0dXJuIGlzb2xhdGVkVHJlZUZvY3VzZWRPYmplY3QoKmZvY3Vz
ZWREb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2MGY1ZmE2YzJmNS4uNzhm
NmE2Yzc4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI3NSwxMSArNDI3NSwxMiBA
QCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEZvYwogICAgIGlmIChiYWNrRm9yd2FyZENhY2hlU3RhdGUo
KSAhPSBOb3RJbkJhY2tGb3J3YXJkQ2FjaGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGJvb2wgZm9jdXNDaGFuZ2VCbG9ja2VkID0gZmFsc2U7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG9s
ZEZvY3VzZWRFbGVtZW50ID0gV1RGTW92ZShtX2ZvY3VzZWRFbGVtZW50KTsKIAogICAgIC8vIFJl
bW92ZSBmb2N1cyBmcm9tIHRoZSBleGlzdGluZyBmb2N1cyBub2RlIChpZiBhbnkpCiAgICAgaWYg
KG9sZEZvY3VzZWRFbGVtZW50KSB7CisgICAgICAgIGJvb2wgZm9jdXNDaGFuZ2VCbG9ja2VkID0g
ZmFsc2U7CisKICAgICAgICAgb2xkRm9jdXNlZEVsZW1lbnQtPnNldEZvY3VzKGZhbHNlKTsKICAg
ICAgICAgc2V0Rm9jdXNOYXZpZ2F0aW9uU3RhcnRpbmdOb2RlKG51bGxwdHIpOwogCkBAIC00MzMy
LDIzICs0MzMzLDIxIEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQq
IGVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIGlmIChpczxI
VE1MSW5wdXRFbGVtZW50PihvbGRGb2N1c2VkRWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIEhU
TUxJbnB1dEVsZW1lbnQ6OmRpZEJsdXIganVzdCBzY3JvbGxzIHRleHQgZmllbGRzIGJhY2sgdG8g
dGhlIGJlZ2lubmluZy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGRvbmUg
YXN5bmNocm9udXNseS4KLSAgICAgICAgICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRj
aCBldmVudHMgZHVlIHRvIFBvc3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAgICAgICAgIGlmIChl
dmVudHNNb2RlID09IEZvY3VzUmVtb3ZhbEV2ZW50c01vZGU6OkRpc3BhdGNoKQotICAgICAgICAg
ICAgICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCpvbGRGb2N1c2VkRWxlbWVudCkuZGlkQmx1cigpOwogICAgICAgICB9CisK
KyAgICAgICAgaWYgKGZvY3VzQ2hhbmdlQmxvY2tlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAobmV3Rm9jdXNlZEVsZW1lbnQgJiYgbmV3Rm9jdXNlZEVsZW1l
bnQtPmlzRm9jdXNhYmxlKCkpIHsKICAgICAgICAgaWYgKCZuZXdGb2N1c2VkRWxlbWVudC0+ZG9j
dW1lbnQoKSAhPSB0aGlzKSB7CiAgICAgICAgICAgICAvLyBCbHVyaW5nIG9sZEZvY3VzZWRFbGVt
ZW50IG1heSBoYXZlIG1vdmVkIG5ld0ZvY3VzZWRFbGVtZW50IGFjcm9zcyBkb2N1bWVudHMuCi0g
ICAgICAgICAgICBmb2N1c0NoYW5nZUJsb2NrZWQgPSB0cnVlOwotICAgICAgICAgICAgZ290byBT
ZXRGb2N1c2VkTm9kZURvbmU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG5ld0ZvY3VzZWRFbGVtZW50LT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSAm
JiAhYWNjZXB0c0VkaXRpbmdGb2N1cygqbmV3Rm9jdXNlZEVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICAvLyBkZWxlZ2F0ZSBibG9ja3MgZm9jdXMgY2hhbmdlCi0gICAgICAgICAgICBmb2N1c0NoYW5n
ZUJsb2NrZWQgPSB0cnVlOwotICAgICAgICAgICAgZ290byBTZXRGb2N1c2VkTm9kZURvbmU7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2V0IGZvY3Vz
IG9uIHRoZSBuZXcgbm9kZQogICAgICAgICBtX2ZvY3VzZWRFbGVtZW50ID0gbmV3Rm9jdXNlZEVs
ZW1lbnQ7CkBAIC00MzU5LDE2ICs0MzU4LDE0IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRF
bGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAK
ICAgICAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQgIT0gbmV3Rm9jdXNlZEVsZW1lbnQpIHsKICAg
ICAgICAgICAgIC8vIGhhbmRsZXIgc2hpZnRlZCBmb2N1cwotICAgICAgICAgICAgZm9jdXNDaGFu
Z2VCbG9ja2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIGdvdG8gU2V0Rm9jdXNlZE5vZGVEb25lOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgbV9mb2N1c2Vk
RWxlbWVudC0+ZGlzcGF0Y2hGb2N1c0luRXZlbnQoZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCwg
b2xkRm9jdXNlZEVsZW1lbnQuY29weVJlZigpKTsgLy8gRE9NIGxldmVsIDMgYnViYmxpbmcgZm9j
dXMgZXZlbnQuCiAKICAgICAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQgIT0gbmV3Rm9jdXNlZEVs
ZW1lbnQpIHsKICAgICAgICAgICAgIC8vIGhhbmRsZXIgc2hpZnRlZCBmb2N1cwotICAgICAgICAg
ICAgZm9jdXNDaGFuZ2VCbG9ja2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIGdvdG8gU2V0Rm9jdXNl
ZE5vZGVEb25lOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgZmlyaW5nIERPTUZvY3VzSW5FdmVudCBldmVu
dCB3aGVuIHdlIGFyZSBzdXJlIG5vIGNvbnRlbnQgZGVwZW5kcwpAQCAtNDM3Nyw4ICs0Mzc0LDcg
QEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBGb2MKIAogICAgICAgICBpZiAobV9mb2N1c2VkRWxlbWVu
dCAhPSBuZXdGb2N1c2VkRWxlbWVudCkgewogICAgICAgICAgICAgLy8gaGFuZGxlciBzaGlmdGVk
IGZvY3VzCi0gICAgICAgICAgICBmb2N1c0NoYW5nZUJsb2NrZWQgPSB0cnVlOwotICAgICAgICAg
ICAgZ290byBTZXRGb2N1c2VkTm9kZURvbmU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIAogICAgICAgICBtX2ZvY3VzZWRFbGVtZW50LT5zZXRGb2N1cyh0cnVlKTsKQEAg
LTQzODYsOCArNDM4Miw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIC8vIFRo
ZSBzZXRGb2N1cyBjYWxsIHRyaWdnZXJzIGEgYmx1ciBhbmQgYSBmb2N1cyBldmVudC4gRXZlbnQg
aGFuZGxlcnMgY291bGQgY2F1c2UgdGhlIGZvY3VzZWQgZWxlbWVudCB0byBiZSBjbGVhcmVkLgog
ICAgICAgICBpZiAobV9mb2N1c2VkRWxlbWVudCAhPSBuZXdGb2N1c2VkRWxlbWVudCkgewogICAg
ICAgICAgICAgLy8gaGFuZGxlciBzaGlmdGVkIGZvY3VzCi0gICAgICAgICAgICBmb2N1c0NoYW5n
ZUJsb2NrZWQgPSB0cnVlOwotICAgICAgICAgICAgZ290byBTZXRGb2N1c2VkTm9kZURvbmU7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9mb2N1
c2VkRWxlbWVudC0+aXNSb290RWRpdGFibGVFbGVtZW50KCkpCkBAIC00NDEyLDIxICs0NDA3LDE2
IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
IWZvY3VzQ2hhbmdlQmxvY2tlZCAmJiBtX2ZvY3VzZWRFbGVtZW50KSB7CisgICAgaWYgKG1fZm9j
dXNlZEVsZW1lbnQpIHsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBBWE9iamVjdCBjYWNoZSBpbiBh
IGZvY3VzIGNoYW5nZSBiZWNhdXNlIEdUSyByZWxpZXMgb24gaXQuCiAgICAgICAgIGlmIChBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKICAgICAgICAgICAgIGNhY2hlLT5k
ZWZlckZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VJZk5lZWRlZChvbGRGb2N1c2VkRWxlbWVudC5nZXQo
KSwgbmV3Rm9jdXNlZEVsZW1lbnQuZ2V0KCkpOwogICAgIH0KIAotICAgIGlmICghZm9jdXNDaGFu
Z2VCbG9ja2VkICYmIHBhZ2UoKSkKKyAgICBpZiAocGFnZSgpKQogICAgICAgICBwYWdlKCktPmNo
cm9tZSgpLmZvY3VzZWRFbGVtZW50Q2hhbmdlZChtX2ZvY3VzZWRFbGVtZW50LmdldCgpKTsKIAot
U2V0Rm9jdXNlZE5vZGVEb25lOgotICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBl
dmVudHMgZHVlIHRvIFBvc3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAvLyBGSVhNRTogV2h5IGlz
IHN5bmNocm9ub3VzIHN0eWxlIHVwZGF0ZSBuZWVkZWQgaGVyZSBhdCBhbGw/Ci0gICAgaWYgKGV2
ZW50c01vZGUgPT0gRm9jdXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpCi0gICAgICAgIHVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gIWZvY3VzQ2hhbmdlQmxvY2tlZDsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkUmVzZXRGb2N1c05hdmlnYXRp
b25TdGFydGluZ05vZGUoTm9kZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjZTJk
NzFhZWNkOS4uMTAwMTMwZmRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTYwNywyMyAr
NjA3LDEzIEBAIGJvb2wgRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXJlbmRlcmVyKCkpIHsKLSAgICAgICAgLy8gSWYgdGhlIG5v
ZGUgaXMgaW4gYSBkaXNwbGF5Om5vbmUgdHJlZSBpdCBtaWdodCBzYXkgaXQgbmVlZHMgc3R5bGUg
cmVjYWxjIGJ1dAotICAgICAgICAvLyB0aGUgd2hvbGUgZG9jdW1lbnQgaXMgYWN0dWFsbHkgdXAg
dG8gZGF0ZS4KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFzc2VydCAh
bmVlZHNTdHlsZVJlY2FsYygpIHx8ICFkb2N1bWVudCgpLmNoaWxkTmVlZHNTdHlsZVJlY2FsYygp
Ci0gICAgICAgIC8vIGJ1dCBpdCBoaXRzIHRvbyBmcmVxdWVudGx5IG9uIHdlYnNpdGVzIGxpa2Ug
R21haWwgYW5kIE1pY3Jvc29mdCBFeGNoYW5nZS4KLQogICAgICAgICAvLyBFbGVtZW50cyBpbiBj
YW52YXMgZmFsbGJhY2sgY29udGVudCBhcmUgbm90IHJlbmRlcmVkLCBidXQgdGhleSBhcmUgYWxs
b3dlZCB0byBiZQogICAgICAgICAvLyBmb2N1c2FibGUgYXMgbG9uZyBhcyB0aGVpciBjYW52YXMg
aXMgZGlzcGxheWVkIGFuZCB2aXNpYmxlLgogICAgICAgICBpZiAoYXV0byogY2FudmFzID0gYW5j
ZXN0b3JzT2ZUeXBlPEhUTUxDYW52YXNFbGVtZW50PigqdGhpcykuZmlyc3QoKSkKLSAgICAgICAg
ICAgIHJldHVybiBjYW52YXMtPnJlbmRlcmVyKCkgJiYgY2FudmFzLT5yZW5kZXJlcigpLT5zdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOworICAgICAgICAgICAgcmV0
dXJuIGNhbnZhcy0+aXNWaXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpOwogICAgIH0K
IAotICAgIC8vIEZJWE1FOiBFdmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZSwgd2UgbWlnaHQgaGF2
ZSBhIGNoaWxkIHRoYXQgaXMgdmlzaWJsZS4KLSAgICAvLyBIeWF0dCB3YW50cyB0byBmaXggdGhh
dCBzb21lIGRheSB3aXRoIGEgImhhcyB2aXNpYmxlIGNvbnRlbnQiIGZsYWcgb3IgdGhlIGxpa2Uu
Ci0gICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZpc2liaWxpdHk6OlZpc2libGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBpc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0eWxl
KCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aXNVc2VyQWN0aW9uRWxlbWVudEluQWN0aXZlQ2hhaW4o
KSBjb25zdApAQCAtMjk4NSwxMSArMjk3NSw2IEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCBy
ZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9
CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbmV3VGFyZ2V0ID0gdGhpczsKLSAgICBpZiAoZG9jdW1l
bnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQotICAgICAgICBkb2N1bWVudC0+dXBkYXRlU3R5
bGVJZk5lZWRlZCgpOwotCi0gICAgaWYgKCZuZXdUYXJnZXQtPmRvY3VtZW50KCkgIT0gZG9jdW1l
bnQucHRyKCkpCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHJvb3QgPSBzaGFkb3dS
b290V2l0aERlbGVnYXRlc0ZvY3VzKCp0aGlzKSkgewogICAgICAgICBhdXRvIGN1cnJlbnRseUZv
Y3VzZWRFbGVtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSk7CkBA
IC0zMjkwLDcgKzMyNzUsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6cmVuZGVyT3JE
aXNwbGF5Q29udGVudHNTdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWNv
bnN0IFJlbmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCitjb25zdCBS
ZW5kZXJTdHlsZSogRWxlbWVudDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVk
U3R5bGVNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOwogICAgIEFTU0VS
VCghZXhpc3RpbmdDb21wdXRlZFN0eWxlKCkpOwpAQCAtMzMxNCw5ICszMjk5LDUzIEBAIGNvbnN0
IFJlbmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCiAgICAgICAgIGNv
bXB1dGVkU3R5bGUgPSBzdHlsZS5nZXQoKTsKICAgICAgICAgRWxlbWVudFJhcmVEYXRhJiByYXJl
RGF0YSA9IGVsZW1lbnQtPmVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgICAgICByYXJlRGF0
YS5zZXRDb21wdXRlZFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKKworICAgICAgICBpZiAobW9kZSA9
PSBSZXNvbHZlQ29tcHV0ZWRTdHlsZU1vZGU6OlJlbmRlcmVkT25seSAmJiBjb21wdXRlZFN0eWxl
LT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gKmNvbXB1dGVkU3R5bGU7CisgICAgcmV0dXJuIGNv
bXB1dGVkU3R5bGU7Cit9CisKK2Jvb2wgRWxlbWVudDo6aGFzVmFsaWRTdHlsZSgpIGNvbnN0Cit7
CisgICAgaWYgKCFkb2N1bWVudCgpLm5lZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoZG9jdW1lbnQoKS5oYXNQZW5kaW5nRnVsbFN0eWxlUmVidWlsZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
bGluZWFnZU9mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3R5
bGVWYWxpZGl0eSgpICE9IFN0eWxlOjpWYWxpZGl0eTo6VmFsaWQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVsZW1lbnQ6Omlz
VmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUoKSBjb25zdAoreworICAgIGlmIChyZW5k
ZXJTdHlsZSgpIHx8IGhhc1ZhbGlkU3R5bGUoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlclN0eWxl
KCkgJiYgcmVuZGVyU3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7
CisKKyAgICBhdXRvKiBzdHlsZSA9IGV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpOworICAgIGlmICgh
c3R5bGUpCisgICAgICAgIHN0eWxlID0gY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpLnJlc29s
dmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZTo6UmVuZGVyZWRPbmx5KTsK
KworICAgIGlmICghc3R5bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHls
ZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OkNvbnRlbnRzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
c3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBhbmNlc3RvcnNPZlR5cGU8RWxl
bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50LmV4aXN0aW5nQ29tcHV0ZWRTdHls
ZSgpLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNvbnN0IFJlbmRlclN0eWxl
JiBFbGVtZW50OjpyZXNvbHZlUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpCkBAIC0zMzQ5LDcgKzMzNzgsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWxl
bWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogCiAg
ICAgYXV0byogc3R5bGUgPSBleGlzdGluZ0NvbXB1dGVkU3R5bGUoKTsKICAgICBpZiAoIXN0eWxl
KQotICAgICAgICBzdHlsZSA9ICZyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOworICAgICAgICBzdHls
ZSA9IHJlc29sdmVDb21wdXRlZFN0eWxlKCk7CiAKICAgICBpZiAocHNldWRvRWxlbWVudFNwZWNp
ZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSkgewogICAgICAgICBpZiAoYXV0byogY2FjaGVkUHNldWRv
U3R5bGUgPSBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmll
cikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2YTdhOGU3ZWQ1Yy4uMjhjYWQ4OTEyMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtMzQzLDYgKzM0Myw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbmVl
ZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0OwogCisgICAgYm9vbCBoYXNWYWxpZFN0eWxlKCkg
Y29uc3Q7CisgICAgYm9vbCBpc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlKCkgY29u
c3Q7CisKICAgICAvLyBNZXRob2RzIGZvciBpbmRpY2F0aW5nIHRoZSBzdHlsZSBpcyBhZmZlY3Rl
ZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4sIGNoaWxkcmVuIGNoYW5naW5nLCBvdXIgcG9zaXRp
b24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcgbGlzdCwgZXRjLikKICAgICBib29sIHN0eWxlQWZm
ZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVG
bGFnOjpTdHlsZUFmZmVjdGVkQnlBY3RpdmUpOyB9CiAgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhFbGVtZW50U3R5bGVGbGFnOjpTdHls
ZUFmZmVjdGVkQnlFbXB0eSk7IH0KQEAgLTY5Miw3ICs2OTUsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmVzb2x2
ZUNvbXB1dGVkU3R5bGUoKTsKKyAgICBlbnVtIGNsYXNzIFJlc29sdmVDb21wdXRlZFN0eWxlTW9k
ZSB7IE5vcm1hbCwgUmVuZGVyZWRPbmx5IH07CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHJlc29s
dmVDb21wdXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSA9IFJlc29sdmVDb21wdXRl
ZFN0eWxlTW9kZTo6Tm9ybWFsKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmVzb2x2ZVBzZXVk
b0VsZW1lbnRTdHlsZShQc2V1ZG9JZCk7CiAKICAgICB1bnNpZ25lZCByYXJlRGF0YUNoaWxkSW5k
ZXgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5k
ZXggZDhjY2FiMDc4NDEuLmJkMDI0OGUxNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcApAQCAtMzY5LDggKzM2OSwxMyBAQCBib29sIEZyYW1lU2VsZWN0aW9u
OjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxl
Y3RpbwogCiAgICAgc2V0Q2FyZXRSZWN0TmVlZHNVcGRhdGUoKTsKIAotICAgIGlmICghbmV3U2Vs
ZWN0aW9uLmlzTm9uZSgpICYmICEob3B0aW9ucyAmIERvTm90U2V0Rm9jdXMpKQorICAgIGlmICgh
bmV3U2VsZWN0aW9uLmlzTm9uZSgpICYmICEob3B0aW9ucyAmIERvTm90U2V0Rm9jdXMpKSB7Cisg
ICAgICAgIGF1dG8qIG9sZEZvY3VzZWRFbGVtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Zm9j
dXNlZEVsZW1lbnQoKTsKICAgICAgICAgc2V0Rm9jdXNlZEVsZW1lbnRJZk5lZWRlZCgpOworICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBiZSBuZWVkZWQuCisgICAgICAgIGlmIChtX2ZyYW1l
LT5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpICE9IG9sZEZvY3VzZWRFbGVtZW50KQorICAg
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAg
IH0KIAogICAgIC8vIEFsd2F5cyBjbGVhciB0aGUgeCBwb3NpdGlvbiB1c2VkIGZvciB2ZXJ0aWNh
bCBhcnJvdyBuYXZpZ2F0aW9uLgogICAgIC8vIEl0IHdpbGwgYmUgcmVzdG9yZWQgYnkgdGhlIHZl
cnRpY2FsIGFycm93IG5hdmlnYXRpb24gY29kZSBpZiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggNTExNGIyMDM3NDIuLjY4OGFlODE2MjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0yMTAsNyArMjEwLDcg
QEAgYm9vbCBIVE1MQXJlYUVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogYm9vbCBI
VE1MQXJlYUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKIHsKICAgICBSZWZQdHI8SFRNTElt
YWdlRWxlbWVudD4gaW1hZ2UgPSBpbWFnZUVsZW1lbnQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFp
bWFnZS0+cmVuZGVyZXIoKSB8fCBpbWFnZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNW
aXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1cygpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgp
LnZhbHVlT3IoMCkgPj0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHAKaW5kZXggNDA3MGY3ZDI2ZDkuLjgyNjUxOTJhNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMTEwMCw2ICsxMTAwLDcgQEAgYm9vbCBIVE1MU2Vs
ZWN0RWxlbWVudDo6cGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChkb2N1bWVudCgpLmZyYW1l
KCkpKSB7CiAgICAgICAgIGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJEb3duIiB8fCBl
dmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVcCIpIHsKICAgICAgICAgICAgIGZvY3VzKCk7Cisg
ICAgICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAg
IC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgY2F1c2UgdXMgdG8gbG9zZSBvdXIgcmVuZGVyZXIuIFJl
dHVybiB0cnVlIHNvCiAgICAgICAgICAgICAvLyB0aGF0IG91ciBjYWxsZXIgZG9lc24ndCBwcm9j
ZXNzIHRoZSBldmVudCBmdXJ0aGVyLCBidXQgZG9uJ3Qgc2V0CiAgICAgICAgICAgICAvLyB0aGUg
ZXZlbnQgYXMgaGFuZGxlZC4KQEAgLTExOTgsNiArMTE5OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAg
IGlmIChSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkucG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSkg
ewogICAgICAgICAgICAgaWYgKGtleUNvZGUgPT0gJyAnIHx8IGtleUNvZGUgPT0gJ1xyJykgewog
ICAgICAgICAgICAgICAgIGZvY3VzKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICAgICAgICAgICAgICAvLyBDYWxsaW5nIGZvY3VzKCkg
bWF5IHJlbW92ZSB0aGUgcmVuZGVyZXIgb3IgY2hhbmdlIHRoZSByZW5kZXJlciB0eXBlLgogICAg
ICAgICAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKQEAgLTEyMTUs
NiArMTIxNyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAgIH0gZWxzZSBpZiAoUmVuZGVyVGhlbWU6OnNp
bmdsZXRvbigpLnBvcHNNZW51QnlBcnJvd0tleXMoKSkgewogICAgICAgICAgICAgaWYgKGtleUNv
ZGUgPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBk
b2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgICAgICAgICAgICAgIC8vIENh
bGxpbmcgZm9jdXMoKSBtYXkgcmVtb3ZlIHRoZSByZW5kZXJlciBvciBjaGFuZ2UgdGhlIHJlbmRl
cmVyIHR5cGUuCiAgICAgICAgICAgICAgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpOwpAQCAtMTI0Myw2ICsxMjQ2LDggQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxp
c3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkg
JiYgZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpLmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsK
ICAgICAgICAgZm9jdXMoKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgZG9j
dW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKICAgICAgICAgYXV0byogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoaXM8UmVuZGVyTWVudUxpc3Q+KHJlbmRl
cmVyKSkgewogICAgICAgICAgICAgYXV0byYgbWVudUxpc3QgPSBkb3duY2FzdDxSZW5kZXJNZW51
TGlzdD4oKnJlbmRlcmVyKTsKQEAgLTEzMjYsNiArMTMzMSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKIAogICAgIGlm
IChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGlzPE1vdXNl
RXZlbnQ+KGV2ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0g
TGVmdEJ1dHRvbikgewogICAgICAgICBmb2N1cygpOworICAgICAgICBkb2N1bWVudCgpLnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgICAgICAvLyBDYWxsaW5nIGZvY3VzKCkgbWF5IHJlbW92
ZSBvciBjaGFuZ2Ugb3VyIHJlbmRlcmVyLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IHdhbnQgdG8g
aGFuZGxlIHRoZSBldmVudCBmdXJ0aGVyLgogICAgICAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCmluZGV4IDkyOGIzN2MzYmE0Li4yOGI0MmRiMDM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTI0Miw3ICsyNDIsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldFJhbmdlVGV4dChjb25zdCBTdHJpbmcmIHJlcGxhY2UKIAogICAgIHNldElubmVy
VGV4dFZhbHVlKHRleHQpOwogCi0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIGhhcHBlbiB0byB0
aGUgdmFsdWUgKGFzIGluIHZhbHVlKCkpIGlmIHRoZXJlJ3Mgbm8gcmVuZGVyZXI/CisgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkbid0IG5lZWQgc3luY2hyb25vdXMgc3R5bGUgdXBkYXRlLCBvciBy
ZW5kZXJlciBhdCBhbGwuCisgICAgaWYgKCFyZW5kZXJlcigpKQorICAgICAgICBkb2N1bWVudCgp
LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Bp
bkJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuY3BwCmluZGV4IGY2MDU0ODM0NDVlLi43ZjIyODg5Njk3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcApAQCAtMTU3LDkg
KzE1Nyw2IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OndpbGxPcGVuUG9wdXAoKQogCiB2b2lk
IFNwaW5CdXR0b25FbGVtZW50Ojpmb3J3YXJkRXZlbnQoRXZlbnQmIGV2ZW50KQogewotICAgIGlm
ICghcmVuZGVyQm94KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghaXM8V2hlZWxFdmVu
dD4oZXZlbnQpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDNiMmIwZGIz
NmUyLi42NmUxMmRjOWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0yMjUsNiArMjI1LDggQEAgdm9p
ZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50JiBldmVudCkKICAgICAgICAgaW5wdXQtPmZvY3VzKCk7CiAgICAgICAgIGlucHV0LT5zZWxl
Y3QoKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgZG9jdW1lbnQoKS51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CisKICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gaW5wdXQt
PnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHNlYXJjaEZpZWxkUmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJTZWFyY2hGaWVsZD4oKnJlbmRlcmVyKTsKICAgICAgICAgICAgIGlmIChz
ZWFyY2hGaWVsZFJlbmRlcmVyLnBvcHVwSXNWaXNpYmxlKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392399</attachid>
            <date>2020-03-04 02:25:36 -0800</date>
            <delta_ts>2020-03-04 04:11:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>focus-no-style-resolution-10.patch</filename>
            <type>text/plain</type>
            <size>23316</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYTJhNzBjN2RmMS4uNWJhNzRlMDBhZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAyMC0wMy0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
QXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3VzKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2tleXBy
ZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMva2V5
cHJlc3MtcmVtb3ZlZC1ub2RlLmh0bWw6CisKKyAgICAgICAgTW9kaWZ5IHRoZSB0ZXN0IHNvIGl0
IGlzIG5vdCBzZW5zaXRpdmUgdG8gbm9uLXJlbmRlcmVkIHdoaXRlc3BhY2UgY2hhbmdlcworICAg
ICAgICAoY2F1c2VkIGJ5IHRpbWluZyBvZiByZW5kZXIgdHJlZSB1cGRhdGVzKS4KKworICAgICAg
ICAqIGZhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbDoKKwor
ICAgICAgICBSZWFkIHRoZSA8aW5wdXQgYXV0b2ZvY3VzPiA6Zm9jdXMgc3R5bGUgaW4gckFGIGFz
IGZvY3VzaW5nIGhhcHBlbnMgYXN5bmNocm9ub3VzbHkuIFRoaXMgbWF0Y2hlcyBvdGhlciBicm93
c2Vycy4KKworICAgICAgICAqIGZhc3QvZm9ybXMvZm9jdXMtYWZ0ZXItdmlzaWJpbGl0eS1jaGFu
Z2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZvY3VzLWFmdGVy
LXZpc2liaWxpdHktY2hhbmdlLmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSB0
ZXN0IGZvciB2aXNpYmlsaXR5IHN0eWxlIGNoYW5nZSBhZnRlciByZW5kZXJlciBoYXMgYWxyZWFk
eSBiZSBjcmVhdGVkLgorCiAyMDIwLTAyLTI3ICBEb3VnIEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29t
PgogCiAgICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBhdGggcmVmZXJlbmNpbmcgcGFyZW50IGVs
ZW1lbnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMva2V5cHJlc3MtcmVtb3ZlZC1ub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQKaW5kZXgg
NzY4ZWJlM2VjZDYuLjdkNGQxODA0MDdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2tleXByZXNzLXJlbW92ZWQtbm9kZS1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIG5vZGUgZG9lcyBub3QgcmV0YWluIGtl
eWJvYXJkIGZvY3VzIGFmdGVyIGl0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLgogCi0g
UEFTUzogZGlkIG5vdCBnZXQga2V5Ym9hcmQgZXZlbnQuCitQQVNTOiBkaWQgbm90IGdldCBrZXli
b2FyZCBldmVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2tleXByZXNz
LXJlbW92ZWQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMva2V5cHJlc3MtcmVt
b3ZlZC1ub2RlLmh0bWwKaW5kZXggYWU5NWE5Mzk3YTUuLmE2NTcyZjM2MTgzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9rZXlwcmVzcy1yZW1vdmVkLW5vZGUuaHRtbApAQCAt
MSw4ICsxLDYgQEAKIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgbm9kZSBkb2VzIG5vdCBy
ZXRhaW4ga2V5Ym9hcmQgZm9jdXMgYWZ0ZXIgaXQgaGFzCiBiZWVuIHJlbW92ZWQgZnJvbSB0aGUg
RE9NLjwvcD4KLTxocj4KLTxpbnB1dCB0eXBlPSJ0ZXh0Ij4KLTxwcmUgaWQ9ImNvbnNvbGUiPlBB
U1M6IGRpZCBub3QgZ2V0IGtleWJvYXJkIGV2ZW50LjwvcHJlPgorPGhyPjxpbnB1dCB0eXBlPSJ0
ZXh0Ij48cHJlIGlkPSJjb25zb2xlIj5QQVNTOiBkaWQgbm90IGdldCBrZXlib2FyZCBldmVudC48
L3ByZT4KIAogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFu
Z2UuaHRtbAppbmRleCBhMjBlNTVhZjE4ZS4uNmFjZmZhZjMyNDkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1pbnB1dC1jc3Mtc3R5bGUtY2hh
bmdlLmh0bWwKQEAgLTEzLDkgKzEzLDExIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCi12YXIgdGVzdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0Iik7Ci1pZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXN0LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0g
InJnYigwLCAxMjgsIDApIikKLSAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOworcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCgpPT57CisgICAgaWYgKGdldENvbXB1dGVkU3R5bGUodGVzdCwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICJyZ2IoMCwgMTI4LCAw
KSIpCisgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7Cit9KTsKKwogPC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zv
Y3VzLWFmdGVyLXZpc2liaWxpdHktY2hhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZm9jdXMtYWZ0ZXItdmlzaWJpbGl0eS1jaGFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42OWNmYzVhOThkYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtYWZ0ZXItdmlzaWJpbGl0eS1j
aGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLWFmdGVyLXZpc2liaWxpdHktY2hhbmdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLWFmdGVyLXZpc2liaWxpdHktY2hhbmdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU0YzBjY2JkNDNhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb2N1cy1hZnRlci12aXNp
YmlsaXR5LWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGRpdiBpZD1sb2c+UEFTUzwvZGl2
PgorPGlucHV0IGlkPWlucHV0IG9uZm9jdXM9ImxvZy50ZXh0Q29udGVudCA9ICdGQUlMJzsiPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKK2RvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKK2lucHV0LnN0eWxlLnZpc2liaWxpdHk9
ImhpZGRlbiI7CitpbnB1dC5mb2N1cygpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI1YzBl
MTVmOTcuLmU0M2MwMGIzMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMjAtMDMt
MDMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGZ1
bGwgc3R5bGUgcmVzb2x1dGlvbiBvbiBFbGVtZW50Ojpmb2N1cygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1MDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgRWxlbWVudDo6Zm9jdXMoKSBjdXJyZW50bHkg
dHJpZ2dlcnMgZnVsbCBzdHlsZSByZXNvbHV0aW9uIGJvdGggYmVmb3JlICh0byBjb21wdXRlIGVs
ZW1lbnQgdmlzaWJpbGl0eSkKKyAgICAgICAgYW5kIGFmdGVyIChmb3Igbm8gcGFydGljdWxhciBy
ZWFzb24pLgorCisgICAgICAgIFJlc29sdmluZyBzdHlsZSBjYW4gYmUgY29zdGx5IGlmIHRoZXJl
IGFyZSBmdXJ0aGVyIERPTSBtdXRhdGlvbnMgdGhhdCBlbmQgdXAgaW52YWxpZGF0aW5nIGl0IGFn
YWluLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBjaGVhcGVyIHNpbmdsZS1lbGVtZW50IHdh
eSB0byBjb21wdXRpbmcgdmlzaWJpbGl0eSBhbmQgdXNlcyBpdCBmb3IgZm9jdXMoKS4KKworICAg
ICAgICBUaGlzIGFwcGVhcnMgdG8gYmUgMy00JSBTcGVlZG9tZXRlciBwcm9ncmVzc2lvbi4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL2ZvY3VzLWFmdGVyLXZpc2liaWxpdHktY2hhbmdlLmh0
bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6CisKKyAg
ICAgICAgQVggY29kZSBhc3N1bWVzIHJlbmRlcmVycyBoYXZlIGV4aXN0IGZvciBmb2N1c2VkIGVs
ZW1lbnQgc28gZW5zdXJlIHN0eWxlIGlzIHVwIHRvIGRhdGUuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50
KToKKworICAgICAgICBSZW1vdmUgc3R5bGUgcmVzb2x1dGlvbi4KKworICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0
KToKKworICAgICAgICBVc2UgaXNWaXNpYmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSBoZWxw
ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZvY3VzKToKKworICAgICAgICBBdm9p
ZCBzdHlsZSByZXNvbHV0aW9uIGlmIHRoZSBlbGVtZW50IGlzIGluIGEgc3VidHJlZSB0aGF0IGRv
ZXNuJ3QgaGF2ZSByZW5kZXJlcnMgeWV0LgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
ZXNvbHZlQ29tcHV0ZWRTdHlsZSk6CisKKyAgICAgICAgQWRkIGEgbW9kZSB3aGVyZSB3ZSBiYWls
IG91dCB3aGVuIHdlIGZpZ3VyZSBvdXQgd2UgYXJlIGluIGRpc3BsYXk6bm9uZSBzdWJ0cmVlLgor
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNWYWxpZFN0eWxlIGNvbnN0KToKKworICAg
ICAgICBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHZhbGlkIHN0eWxlLgorCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojppc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlIGNvbnN0KToK
KworICAgICAgICBVc2UgY29tcHV0ZWQgc3R5bGUgbWVjaGFuaXNtIGZvciBzdWJ0cmVlcyB0aGF0
IGhhdmUgbm8gcmVuZGVyZXJzIHlldC4KKworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29t
cHV0ZWRTdHlsZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6Omlz
Rm9jdXNhYmxlIGNvbnN0KToKKworICAgICAgICBVc2UgaXNWaXNpYmxlV2l0aG91dFJlc29sdmlu
Z0Z1bGxTdHlsZSBoZXJlIHRvby4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxl
S2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjptZW51
TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOgorCisgICAgICAgIFVwZGF0ZSBzdHlsZSBhZnRlciBl
eHBsaWNpdCBmb2N1cygpIGNhbGxzIHRvIGtlZXAgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLgorCisg
ICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KToKKworICAg
ICAgICBFbnN1cmUgdGhlIHJlbmRlcmVyIGlzIGNyZWF0ZWQuCisKKyAgICAgICAgKiBodG1sL3No
YWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9u
RWxlbWVudDo6Zm9yd2FyZEV2ZW50KToKKworICAgICAgICBSZW1vdmUgdW5uZWVkZWQgcmVuZGVy
ZXIgdGVzdC4KKwogMjAyMC0wMi0yNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgdXNlIG9mIGRhcmsgbW9kZSB0aGVtZSBp
bmRlcGVuZGVudGx5IGZyb20gc3lzdGVtLXdpZGUgdGhlbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDNmMTg1NDRhNzRiLi5mY2E4MmE0
YmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCkBAIC00MjcsNiArNDI3LDggQEAgQVhDb3JlT2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1
c2VkVUlFbGVtZW50Rm9yUGFnZShjb25zdCBQYWdlKiBwYWdlKQogICAgIGlmICghZm9jdXNlZERv
Y3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGZvY3VzZWREb2N1bWVudC0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFU
RURfVFJFRSkKICAgICBpZiAoY2xpZW50U3VwcG9ydHNJc29sYXRlZFRyZWUoKSkKICAgICAgICAg
cmV0dXJuIGlzb2xhdGVkVHJlZUZvY3VzZWRPYmplY3QoKmZvY3VzZWREb2N1bWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCA2MGY1ZmE2YzJmNS4uNzhmNmE2Yzc4MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNDI3NSwxMSArNDI3NSwxMiBAQCBib29sIERvY3VtZW50Ojpz
ZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24sIEZvYwogICAgIGlmIChiYWNrRm9yd2FyZENhY2hlU3RhdGUoKSAhPSBOb3RJbkJhY2tGb3J3
YXJkQ2FjaGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgZm9jdXNDaGFuZ2VC
bG9ja2VkID0gZmFsc2U7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG9sZEZvY3VzZWRFbGVtZW50ID0g
V1RGTW92ZShtX2ZvY3VzZWRFbGVtZW50KTsKIAogICAgIC8vIFJlbW92ZSBmb2N1cyBmcm9tIHRo
ZSBleGlzdGluZyBmb2N1cyBub2RlIChpZiBhbnkpCiAgICAgaWYgKG9sZEZvY3VzZWRFbGVtZW50
KSB7CisgICAgICAgIGJvb2wgZm9jdXNDaGFuZ2VCbG9ja2VkID0gZmFsc2U7CisKICAgICAgICAg
b2xkRm9jdXNlZEVsZW1lbnQtPnNldEZvY3VzKGZhbHNlKTsKICAgICAgICAgc2V0Rm9jdXNOYXZp
Z2F0aW9uU3RhcnRpbmdOb2RlKG51bGxwdHIpOwogCkBAIC00MzMyLDIzICs0MzMzLDIxIEBAIGJv
b2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihv
bGRGb2N1c2VkRWxlbWVudCkpIHsKICAgICAgICAgICAgIC8vIEhUTUxJbnB1dEVsZW1lbnQ6OmRp
ZEJsdXIganVzdCBzY3JvbGxzIHRleHQgZmllbGRzIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGRvbmUgYXN5bmNocm9udXNseS4KLSAg
ICAgICAgICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVlIHRvIFBv
c3RSZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAgICAgICAgIGlmIChldmVudHNNb2RlID09IEZvY3Vz
UmVtb3ZhbEV2ZW50c01vZGU6OkRpc3BhdGNoKQotICAgICAgICAgICAgICAgIHVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpvbGRG
b2N1c2VkRWxlbWVudCkuZGlkQmx1cigpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvY3Vz
Q2hhbmdlQmxvY2tlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAobmV3Rm9jdXNlZEVsZW1lbnQgJiYgbmV3Rm9jdXNlZEVsZW1lbnQtPmlzRm9jdXNhYmxlKCkp
IHsKICAgICAgICAgaWYgKCZuZXdGb2N1c2VkRWxlbWVudC0+ZG9jdW1lbnQoKSAhPSB0aGlzKSB7
CiAgICAgICAgICAgICAvLyBCbHVyaW5nIG9sZEZvY3VzZWRFbGVtZW50IG1heSBoYXZlIG1vdmVk
IG5ld0ZvY3VzZWRFbGVtZW50IGFjcm9zcyBkb2N1bWVudHMuCi0gICAgICAgICAgICBmb2N1c0No
YW5nZUJsb2NrZWQgPSB0cnVlOwotICAgICAgICAgICAgZ290byBTZXRGb2N1c2VkTm9kZURvbmU7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5ld0Zv
Y3VzZWRFbGVtZW50LT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSAmJiAhYWNjZXB0c0VkaXRpbmdG
b2N1cygqbmV3Rm9jdXNlZEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBkZWxlZ2F0ZSBibG9j
a3MgZm9jdXMgY2hhbmdlCi0gICAgICAgICAgICBmb2N1c0NoYW5nZUJsb2NrZWQgPSB0cnVlOwot
ICAgICAgICAgICAgZ290byBTZXRGb2N1c2VkTm9kZURvbmU7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2V0IGZvY3VzIG9uIHRoZSBuZXcgbm9kZQog
ICAgICAgICBtX2ZvY3VzZWRFbGVtZW50ID0gbmV3Rm9jdXNlZEVsZW1lbnQ7CkBAIC00MzU5LDE2
ICs0MzU4LDE0IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAKICAgICAgICAgaWYgKG1fZm9j
dXNlZEVsZW1lbnQgIT0gbmV3Rm9jdXNlZEVsZW1lbnQpIHsKICAgICAgICAgICAgIC8vIGhhbmRs
ZXIgc2hpZnRlZCBmb2N1cwotICAgICAgICAgICAgZm9jdXNDaGFuZ2VCbG9ja2VkID0gdHJ1ZTsK
LSAgICAgICAgICAgIGdvdG8gU2V0Rm9jdXNlZE5vZGVEb25lOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgbV9mb2N1c2VkRWxlbWVudC0+ZGlzcGF0Y2hG
b2N1c0luRXZlbnQoZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCwgb2xkRm9jdXNlZEVsZW1lbnQu
Y29weVJlZigpKTsgLy8gRE9NIGxldmVsIDMgYnViYmxpbmcgZm9jdXMgZXZlbnQuCiAKICAgICAg
ICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQgIT0gbmV3Rm9jdXNlZEVsZW1lbnQpIHsKICAgICAgICAg
ICAgIC8vIGhhbmRsZXIgc2hpZnRlZCBmb2N1cwotICAgICAgICAgICAgZm9jdXNDaGFuZ2VCbG9j
a2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIGdvdG8gU2V0Rm9jdXNlZE5vZGVEb25lOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCByZW1vdmUgZmlyaW5nIERPTUZvY3VzSW5FdmVudCBldmVudCB3aGVuIHdlIGFyZSBzdXJl
IG5vIGNvbnRlbnQgZGVwZW5kcwpAQCAtNDM3Nyw4ICs0Mzc0LDcgQEAgYm9vbCBEb2N1bWVudDo6
c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBGb2MKIAogICAgICAgICBpZiAobV9mb2N1c2VkRWxlbWVudCAhPSBuZXdGb2N1c2VkRWxl
bWVudCkgewogICAgICAgICAgICAgLy8gaGFuZGxlciBzaGlmdGVkIGZvY3VzCi0gICAgICAgICAg
ICBmb2N1c0NoYW5nZUJsb2NrZWQgPSB0cnVlOwotICAgICAgICAgICAgZ290byBTZXRGb2N1c2Vk
Tm9kZURvbmU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAg
ICBtX2ZvY3VzZWRFbGVtZW50LT5zZXRGb2N1cyh0cnVlKTsKQEAgLTQzODYsOCArNDM4Miw3IEBA
IGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jCiAgICAgICAgIC8vIFRoZSBzZXRGb2N1cyBjYWxsIHRy
aWdnZXJzIGEgYmx1ciBhbmQgYSBmb2N1cyBldmVudC4gRXZlbnQgaGFuZGxlcnMgY291bGQgY2F1
c2UgdGhlIGZvY3VzZWQgZWxlbWVudCB0byBiZSBjbGVhcmVkLgogICAgICAgICBpZiAobV9mb2N1
c2VkRWxlbWVudCAhPSBuZXdGb2N1c2VkRWxlbWVudCkgewogICAgICAgICAgICAgLy8gaGFuZGxl
ciBzaGlmdGVkIGZvY3VzCi0gICAgICAgICAgICBmb2N1c0NoYW5nZUJsb2NrZWQgPSB0cnVlOwot
ICAgICAgICAgICAgZ290byBTZXRGb2N1c2VkTm9kZURvbmU7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9mb2N1c2VkRWxlbWVudC0+aXNSb290
RWRpdGFibGVFbGVtZW50KCkpCkBAIC00NDEyLDIxICs0NDA3LDE2IEBAIGJvb2wgRG9jdW1lbnQ6
OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwgRm9jCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWZvY3VzQ2hhbmdlQmxvY2tl
ZCAmJiBtX2ZvY3VzZWRFbGVtZW50KSB7CisgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQpIHsKICAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBBWE9iamVjdCBjYWNoZSBpbiBhIGZvY3VzIGNoYW5nZSBiZWNh
dXNlIEdUSyByZWxpZXMgb24gaXQuCiAgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGF4T2JqZWN0Q2FjaGUoKSkKICAgICAgICAgICAgIGNhY2hlLT5kZWZlckZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VJZk5lZWRlZChvbGRGb2N1c2VkRWxlbWVudC5nZXQoKSwgbmV3Rm9jdXNlZEVsZW1l
bnQuZ2V0KCkpOwogICAgIH0KIAotICAgIGlmICghZm9jdXNDaGFuZ2VCbG9ja2VkICYmIHBhZ2Uo
KSkKKyAgICBpZiAocGFnZSgpKQogICAgICAgICBwYWdlKCktPmNocm9tZSgpLmZvY3VzZWRFbGVt
ZW50Q2hhbmdlZChtX2ZvY3VzZWRFbGVtZW50LmdldCgpKTsKIAotU2V0Rm9jdXNlZE5vZGVEb25l
OgotICAgIC8vIFVwZGF0aW5nIHN0eWxlIG1heSBkaXNwYXRjaCBldmVudHMgZHVlIHRvIFBvc3RS
ZXNvbHV0aW9uQ2FsbGJhY2sKLSAgICAvLyBGSVhNRTogV2h5IGlzIHN5bmNocm9ub3VzIHN0eWxl
IHVwZGF0ZSBuZWVkZWQgaGVyZSBhdCBhbGw/Ci0gICAgaWYgKGV2ZW50c01vZGUgPT0gRm9jdXNS
ZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpCi0gICAgICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKLSAgICByZXR1cm4gIWZvY3VzQ2hhbmdlQmxvY2tlZDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgc2hvdWxkUmVzZXRGb2N1c05hdmlnYXRpb25TdGFydGluZ05vZGUoTm9k
ZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjZTJkNzFhZWNkOS4uNjA5NDhkODU3
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTYwNywyMyArNjA3LDEzIEBAIGJvb2wgRWxl
bWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoIXJlbmRlcmVyKCkpIHsKLSAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgaW4gYSBkaXNwbGF5
Om5vbmUgdHJlZSBpdCBtaWdodCBzYXkgaXQgbmVlZHMgc3R5bGUgcmVjYWxjIGJ1dAotICAgICAg
ICAvLyB0aGUgd2hvbGUgZG9jdW1lbnQgaXMgYWN0dWFsbHkgdXAgdG8gZGF0ZS4KLSAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFzc2VydCAhbmVlZHNTdHlsZVJlY2FsYygp
IHx8ICFkb2N1bWVudCgpLmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpCi0gICAgICAgIC8vIGJ1dCBp
dCBoaXRzIHRvbyBmcmVxdWVudGx5IG9uIHdlYnNpdGVzIGxpa2UgR21haWwgYW5kIE1pY3Jvc29m
dCBFeGNoYW5nZS4KLQogICAgICAgICAvLyBFbGVtZW50cyBpbiBjYW52YXMgZmFsbGJhY2sgY29u
dGVudCBhcmUgbm90IHJlbmRlcmVkLCBidXQgdGhleSBhcmUgYWxsb3dlZCB0byBiZQogICAgICAg
ICAvLyBmb2N1c2FibGUgYXMgbG9uZyBhcyB0aGVpciBjYW52YXMgaXMgZGlzcGxheWVkIGFuZCB2
aXNpYmxlLgogICAgICAgICBpZiAoYXV0byogY2FudmFzID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxD
YW52YXNFbGVtZW50PigqdGhpcykuZmlyc3QoKSkKLSAgICAgICAgICAgIHJldHVybiBjYW52YXMt
PnJlbmRlcmVyKCkgJiYgY2FudmFzLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpWaXNpYmxlOworICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+aXNWaXNp
YmxlV2l0aG91dFJlc29sdmluZ0Z1bGxTdHlsZSgpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBF
dmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZSwgd2UgbWlnaHQgaGF2ZSBhIGNoaWxkIHRoYXQgaXMg
dmlzaWJsZS4KLSAgICAvLyBIeWF0dCB3YW50cyB0byBmaXggdGhhdCBzb21lIGRheSB3aXRoIGEg
ImhhcyB2aXNpYmxlIGNvbnRlbnQiIGZsYWcgb3IgdGhlIGxpa2UuCi0gICAgaWYgKCFyZW5kZXJl
cigpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBpc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlKCk7CiB9CiAKIGJvb2wgRWxl
bWVudDo6aXNVc2VyQWN0aW9uRWxlbWVudEluQWN0aXZlQ2hhaW4oKSBjb25zdApAQCAtMjk4NSw3
ICsyOTc1LDEwIEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxl
Y3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiAKICAgICBSZWZQdHI8RWxl
bWVudD4gbmV3VGFyZ2V0ID0gdGhpczsKLSAgICBpZiAoZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0
c0xvYWRlZCgpKQorCisgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSByZW5kZXJlciB5ZXQsIGlzRm9j
dXNhYmxlIHdpbGwgY29tcHV0ZSBpdCB3aXRob3V0IHN0eWxlIHVwZGF0ZS4KKyAgICAvLyBGSVhN
RTogRXhwYW5kIGl0IHRvIGF2b2lkIHN0eWxlIHVwZGF0ZSBpbiBhbGwgY2FzZXMuCisgICAgaWYg
KHJlbmRlcmVyKCkgJiYgZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQogICAgICAg
ICBkb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAgaWYgKCZuZXdUYXJnZXQt
PmRvY3VtZW50KCkgIT0gZG9jdW1lbnQucHRyKCkpCkBAIC0zMjkwLDcgKzMyODMsNyBAQCBjb25z
dCBSZW5kZXJTdHlsZSogRWxlbWVudDo6cmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxlJiBFbGVtZW50
OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCitjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6cmVz
b2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlIG1vZGUpCiB7CiAgICAg
QVNTRVJUKGlzQ29ubmVjdGVkKCkpOwogICAgIEFTU0VSVCghZXhpc3RpbmdDb21wdXRlZFN0eWxl
KCkpOwpAQCAtMzMxNCw5ICszMzA3LDU0IEBAIGNvbnN0IFJlbmRlclN0eWxlJiBFbGVtZW50Ojpy
ZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCiAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBzdHlsZS5nZXQo
KTsKICAgICAgICAgRWxlbWVudFJhcmVEYXRhJiByYXJlRGF0YSA9IGVsZW1lbnQtPmVuc3VyZUVs
ZW1lbnRSYXJlRGF0YSgpOwogICAgICAgICByYXJlRGF0YS5zZXRDb21wdXRlZFN0eWxlKFdURk1v
dmUoc3R5bGUpKTsKKworICAgICAgICBpZiAobW9kZSA9PSBSZXNvbHZlQ29tcHV0ZWRTdHlsZU1v
ZGU6OlJlbmRlcmVkT25seSAmJiBjb21wdXRlZFN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gKmNvbXB1dGVkU3R5bGU7CisgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGU7Cit9CisKK2Jvb2wg
RWxlbWVudDo6aGFzVmFsaWRTdHlsZSgpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLm5l
ZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZG9jdW1l
bnQoKS5oYXNQZW5kaW5nRnVsbFN0eWxlUmVidWlsZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbGluZWFnZU9mVHlwZTxFbGVtZW50Pigq
dGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuc3R5bGVWYWxpZGl0eSgpICE9IFN0eWxlOjpW
YWxpZGl0eTo6VmFsaWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdG
dWxsU3R5bGUoKSBjb25zdAoreworICAgIGlmIChyZW5kZXJTdHlsZSgpIHx8IGhhc1ZhbGlkU3R5
bGUoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlclN0eWxlKCkgJiYgcmVuZGVyU3R5bGUoKS0+dmlz
aWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7CisKKyAgICAvLyBDb21wdXRlIHN0eWxl
IGluIHlldCB1bnN0eWxlZCBzdWJ0cmVlLgorICAgIGF1dG8qIHN0eWxlID0gZXhpc3RpbmdDb21w
dXRlZFN0eWxlKCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgc3R5bGUgPSBjb25zdF9jYXN0
PEVsZW1lbnQmPigqdGhpcykucmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5
bGVNb2RlOjpSZW5kZXJlZE9ubHkpOworCisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUg
fHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IGFuY2VzdG9yc09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1l
bnQuZXhpc3RpbmdDb21wdXRlZFN0eWxlKCktPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9u
ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogY29uc3QgUmVuZGVyU3R5bGUmIEVsZW1lbnQ6OnJlc29sdmVQc2V1ZG9FbGVtZW50U3R5
bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKQEAgLTMzNDksNyArMzM4Nyw3IEBA
IGNvbnN0IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpCiAKICAgICBhdXRvKiBzdHlsZSA9IGV4aXN0aW5nQ29tcHV0ZWRT
dHlsZSgpOwogICAgIGlmICghc3R5bGUpCi0gICAgICAgIHN0eWxlID0gJnJlc29sdmVDb21wdXRl
ZFN0eWxlKCk7CisgICAgICAgIHN0eWxlID0gcmVzb2x2ZUNvbXB1dGVkU3R5bGUoKTsKIAogICAg
IGlmIChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25lKSB7CiAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRQc2V1ZG9TdHlsZSA9IHN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHls
ZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZhN2E4ZTdl
ZDVjLi4yOGNhZDg5MTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNDMsNiArMzQzLDkgQEAg
cHVibGljOgogCiAgICAgYm9vbCBuZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgY29uc3Q7CiAKKyAg
ICBib29sIGhhc1ZhbGlkU3R5bGUoKSBjb25zdDsKKyAgICBib29sIGlzVmlzaWJsZVdpdGhvdXRS
ZXNvbHZpbmdGdWxsU3R5bGUoKSBjb25zdDsKKwogICAgIC8vIE1ldGhvZHMgZm9yIGluZGljYXRp
bmcgdGhlIHN0eWxlIGlzIGFmZmVjdGVkIGJ5IGR5bmFtaWMgdXBkYXRlcyAoZS5nLiwgY2hpbGRy
ZW4gY2hhbmdpbmcsIG91ciBwb3NpdGlvbiBjaGFuZ2luZyBpbiBvdXIgc2libGluZyBsaXN0LCBl
dGMuKQogICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gaGFz
U3R5bGVGbGFnKEVsZW1lbnRTdHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSk7IH0KICAg
ICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFn
KEVsZW1lbnRTdHlsZUZsYWc6OlN0eWxlQWZmZWN0ZWRCeUVtcHR5KTsgfQpAQCAtNjkyLDcgKzY5
NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAotICAgIGNv
bnN0IFJlbmRlclN0eWxlJiByZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOworICAgIGVudW0gY2xhc3Mg
UmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlIHsgTm9ybWFsLCBSZW5kZXJlZE9ubHkgfTsKKyAgICBj
b25zdCBSZW5kZXJTdHlsZSogcmVzb2x2ZUNvbXB1dGVkU3R5bGUoUmVzb2x2ZUNvbXB1dGVkU3R5
bGVNb2RlID0gUmVzb2x2ZUNvbXB1dGVkU3R5bGVNb2RlOjpOb3JtYWwpOwogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiByZXNvbHZlUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkKTsKIAogICAgIHVu
c2lnbmVkIHJhcmVEYXRhQ2hpbGRJbmRleCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBkOGNjYWIwNzg0MS4uYmQwMjQ4ZTE3OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0zNjksOCArMzY5LDEz
IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVh
cmFuY2UoY29uc3QgVmlzaWJsZVNlbGVjdGlvCiAKICAgICBzZXRDYXJldFJlY3ROZWVkc1VwZGF0
ZSgpOwogCi0gICAgaWYgKCFuZXdTZWxlY3Rpb24uaXNOb25lKCkgJiYgIShvcHRpb25zICYgRG9O
b3RTZXRGb2N1cykpCisgICAgaWYgKCFuZXdTZWxlY3Rpb24uaXNOb25lKCkgJiYgIShvcHRpb25z
ICYgRG9Ob3RTZXRGb2N1cykpIHsKKyAgICAgICAgYXV0byogb2xkRm9jdXNlZEVsZW1lbnQgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwogICAgICAgICBzZXRGb2N1c2Vk
RWxlbWVudElmTmVlZGVkKCk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgbm90IGJlIG5lZWRl
ZC4KKyAgICAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkgIT0g
b2xkRm9jdXNlZEVsZW1lbnQpCisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CisgICAgfQogCiAgICAgLy8gQWx3YXlzIGNsZWFyIHRoZSB4IHBv
c2l0aW9uIHVzZWQgZm9yIHZlcnRpY2FsIGFycm93IG5hdmlnYXRpb24uCiAgICAgLy8gSXQgd2ls
bCBiZSByZXN0b3JlZCBieSB0aGUgdmVydGljYWwgYXJyb3cgbmF2aWdhdGlvbiBjb2RlIGlmIG5l
Y2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCA1MTE0
YjIwMzc0Mi4uNjg4YWU4MTYyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIEhUTUxBcmVhRWxlbWVudDo6aXNNb3VzZUZv
Y3VzYWJsZSgpIGNvbnN0CiBib29sIEhUTUxBcmVhRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25z
dAogewogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IGltYWdlRWxlbWVudCgp
OwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5yZW5kZXJlcigpIHx8IGltYWdlLT5yZW5kZXJl
cigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQorICAgIGlm
ICghaW1hZ2UgfHwgIWltYWdlLT5pc1Zpc2libGVXaXRob3V0UmVzb2x2aW5nRnVsbFN0eWxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzdXBwb3J0c0ZvY3VzKCkgJiYg
dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkudmFsdWVPcigwKSA+PSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA0MDcwZjdkMjZkOS4uODI2NTE5MmE0MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0xMTAwLDYg
KzExMDAsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkKGRvY3VtZW50KCkuZnJhbWUoKSkpIHsKICAgICAgICAgaWYgKGV2ZW50LT5rZXlJZGVu
dGlmaWVyKCkgPT0gIkRvd24iIHx8IGV2ZW50LT5rZXlJZGVudGlmaWVyKCkgPT0gIlVwIikgewog
ICAgICAgICAgICAgZm9jdXMoKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOwogICAgICAgICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIG1heSBjYXVzZSB1cyB0
byBsb3NlIG91ciByZW5kZXJlci4gUmV0dXJuIHRydWUgc28KICAgICAgICAgICAgIC8vIHRoYXQg
b3VyIGNhbGxlciBkb2Vzbid0IHByb2Nlc3MgdGhlIGV2ZW50IGZ1cnRoZXIsIGJ1dCBkb24ndCBz
ZXQKICAgICAgICAgICAgIC8vIHRoZSBldmVudCBhcyBoYW5kbGVkLgpAQCAtMTE5OCw2ICsxMTk5
LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50JiBldmVudCkKICAgICAgICAgaWYgKFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5wb3Bz
TWVudUJ5U3BhY2VPclJldHVybigpKSB7CiAgICAgICAgICAgICBpZiAoa2V5Q29kZSA9PSAnICcg
fHwga2V5Q29kZSA9PSAnXHInKSB7CiAgICAgICAgICAgICAgICAgZm9jdXMoKTsKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgICAgICAgICAg
ICAgIC8vIENhbGxpbmcgZm9jdXMoKSBtYXkgcmVtb3ZlIHRoZSByZW5kZXJlciBvciBjaGFuZ2Ug
dGhlIHJlbmRlcmVyIHR5cGUuCiAgICAgICAgICAgICAgICAgYXV0byogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOwpAQCAtMTIxNSw2ICsxMjE3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgfSBl
bHNlIGlmIChSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkucG9wc01lbnVCeUFycm93S2V5cygpKSB7
CiAgICAgICAgICAgICBpZiAoa2V5Q29kZSA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBmb2N1
cygpOworICAgICAgICAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
CiAgICAgICAgICAgICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIG1heSByZW1vdmUgdGhlIHJlbmRl
cmVyIG9yIGNoYW5nZSB0aGUgcmVuZGVyZXIgdHlwZS4KICAgICAgICAgICAgICAgICBhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CkBAIC0xMjQzLDYgKzEyNDYsOCBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50
KQogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYm
IGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0
dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBmb2N1cygpOwogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwog
ICAgICAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChp
czxSZW5kZXJNZW51TGlzdD4ocmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBhdXRvJiBtZW51TGlz
dCA9IGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PigqcmVuZGVyZXIpOwpAQCAtMTMyNiw2ICsxMzMx
LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQmIGV2ZW50KQogCiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VFdmVudD4oZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZl
bnQ+KGV2ZW50KS5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CiAgICAgICAgIGZvY3VzKCk7Cisg
ICAgICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAgICAgIC8vIENh
bGxpbmcgZm9jdXMoKSBtYXkgcmVtb3ZlIG9yIGNoYW5nZSBvdXIgcmVuZGVyZXIsIGluIHdoaWNo
IGNhc2Ugd2UgZG9uJ3Qgd2FudCB0byBoYW5kbGUgdGhlIGV2ZW50IGZ1cnRoZXIuCiAgICAgICAg
IGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOTI4YjM3YzNiYTQu
LjI4YjQyZGIwMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMjQyLDcgKzI0MiwxMCBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYg
cmVwbGFjZQogCiAgICAgc2V0SW5uZXJUZXh0VmFsdWUodGV4dCk7CiAKLSAgICAvLyBGSVhNRTog
V2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZSB2YWx1ZSAoYXMgaW4gdmFsdWUoKSkgaWYgdGhlcmUn
cyBubyByZW5kZXJlcj8KKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgbmVlZCBzeW5jaHJv
bm91cyBzdHlsZSB1cGRhdGUsIG9yIHJlbmRlcmVyIGF0IGFsbC4KKyAgICBpZiAoIXJlbmRlcmVy
KCkpCisgICAgICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAgICAgaWYg
KCFyZW5kZXJlcigpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjYwNTQ4MzQ0NWUuLjdm
MjI4ODk2OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0
dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuY3BwCkBAIC0xNTcsOSArMTU3LDYgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6
d2lsbE9wZW5Qb3B1cCgpCiAKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmZvcndhcmRFdmVudChF
dmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKCFyZW5kZXJCb3goKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgaWYgKCFpczxXaGVlbEV2ZW50PihldmVudCkpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKaW5kZXggM2IyYjBkYjM2ZTIuLjY2ZTEyZGM5ZWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAK
QEAgLTIyNSw2ICsyMjUsOCBAQCB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICBpbnB1dC0+Zm9jdXMo
KTsKICAgICAgICAgaW5wdXQtPnNlbGVjdCgpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwogICAgICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSBpbnB1dC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgYXV0byYg
c2VhcmNoRmllbGRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNlYXJjaEZpZWxkPigqcmVuZGVy
ZXIpOwogICAgICAgICAgICAgaWYgKHNlYXJjaEZpZWxkUmVuZGVyZXIucG9wdXBJc1Zpc2libGUo
KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392406</attachid>
            <date>2020-03-04 06:26:38 -0800</date>
            <delta_ts>2020-03-04 06:55:12 -0800</delta_ts>
            <desc>followup</desc>
            <filename>focus-no-style-resolution-composed-ancestors.patch</filename>
            <type>text/plain</type>
            <size>1868</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZjIxZTdiOWExNS4uZDg0MDNhMTk0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMy0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgQXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3Vz
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUw
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMzUyODg+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCBmb2xsb3d1cC4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnJlc29sdmVDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUgY29uc3QpOgorCisgICAg
ICAgIEVtaWxpbyBzcG90dGVkIHRoYXQgdGhpcyBuZWVlZHMgdG8gYmUgYSBjb21wb3NlZCBhbmNl
c3RvciB3YWxrIHRvIG1hdGNoIHJlc29sdmVDb21wdXRlZFN0eWxlLgorCiAyMDIwLTAzLTA0ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBmdWxsIHN0
eWxlIHJlc29sdXRpb24gb24gRWxlbWVudDo6Zm9jdXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDYwOTQ4ZDg1N2ZhLi40YzExMWM0ZDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MzI5Miw4ICszMjkyLDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJlc29sdmVDb21w
dXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSBtb2RlKQogICAgIGNvbnN0IFJlbmRl
clN0eWxlKiBjb21wdXRlZFN0eWxlID0gbnVsbHB0cjsKIAogICAgIC8vIENvbGxlY3QgYW5jZXN0
b3JzIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgaGFzIHN0eWxlLgotICAgIGF1dG8gY29tcG9zZWRB
bmNlc3RvcnMgPSBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpOwotICAgIGZvciAoYXV0byYg
YW5jZXN0b3IgOiBjb21wb3NlZEFuY2VzdG9ycykgeworICAgIGZvciAoYXV0byYgYW5jZXN0b3Ig
OiBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBleGlz
dGluZ1N0eWxlID0gYW5jZXN0b3IuZXhpc3RpbmdDb21wdXRlZFN0eWxlKCkpIHsKICAgICAgICAg
ICAgIGNvbXB1dGVkU3R5bGUgPSBleGlzdGluZ1N0eWxlOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zMzQ5LDcgKzMzNDgsNyBAQCBib29sIEVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZp
bmdGdWxsU3R5bGUoKSBjb25zdAogICAgIGlmIChzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGFuY2VzdG9yc09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpKSB7CiAgICAgICAgIGlm
IChlbGVtZW50LmV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392410</attachid>
            <date>2020-03-04 06:55:12 -0800</date>
            <delta_ts>2020-03-04 07:05:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>focus-no-style-resolution-composed-ancestors.patch</filename>
            <type>text/plain</type>
            <size>1868</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZjIxZTdiOWExNS4uZDg0MDNhMTk0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMy0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgQXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3Vz
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUw
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMzUyODg+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCBmb2xsb3d1cC4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnJlc29sdmVDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUgY29uc3QpOgorCisgICAg
ICAgIEVtaWxpbyBzcG90dGVkIHRoYXQgdGhpcyBuZWVlZHMgdG8gYmUgYSBjb21wb3NlZCBhbmNl
c3RvciB3YWxrIHRvIG1hdGNoIHJlc29sdmVDb21wdXRlZFN0eWxlLgorCiAyMDIwLTAzLTA0ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBmdWxsIHN0
eWxlIHJlc29sdXRpb24gb24gRWxlbWVudDo6Zm9jdXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDYwOTQ4ZDg1N2ZhLi40YzExMWM0ZDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MzI5Miw4ICszMjkyLDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJlc29sdmVDb21w
dXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSBtb2RlKQogICAgIGNvbnN0IFJlbmRl
clN0eWxlKiBjb21wdXRlZFN0eWxlID0gbnVsbHB0cjsKIAogICAgIC8vIENvbGxlY3QgYW5jZXN0
b3JzIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgaGFzIHN0eWxlLgotICAgIGF1dG8gY29tcG9zZWRB
bmNlc3RvcnMgPSBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpOwotICAgIGZvciAoYXV0byYg
YW5jZXN0b3IgOiBjb21wb3NlZEFuY2VzdG9ycykgeworICAgIGZvciAoYXV0byYgYW5jZXN0b3Ig
OiBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBleGlz
dGluZ1N0eWxlID0gYW5jZXN0b3IuZXhpc3RpbmdDb21wdXRlZFN0eWxlKCkpIHsKICAgICAgICAg
ICAgIGNvbXB1dGVkU3R5bGUgPSBleGlzdGluZ1N0eWxlOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zMzQ5LDcgKzMzNDgsNyBAQCBib29sIEVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZp
bmdGdWxsU3R5bGUoKSBjb25zdAogICAgIGlmIChzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGFuY2VzdG9yc09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpKSB7CiAgICAgICAgIGlm
IChlbGVtZW50LmV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392411</attachid>
            <date>2020-03-04 07:05:30 -0800</date>
            <delta_ts>2020-03-04 08:34:47 -0800</delta_ts>
            <desc>followup</desc>
            <filename>focus-no-style-resolution-composed-ancestors-2.patch</filename>
            <type>text/plain</type>
            <size>1890</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZjIxZTdiOWExNS4uZDg0MDNhMTk0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMy0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgQXZvaWQgZnVsbCBzdHlsZSByZXNvbHV0aW9uIG9uIEVsZW1lbnQ6OmZvY3Vz
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODUw
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAwMzUyODg+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCBmb2xsb3d1cC4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnJlc29sdmVDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUgY29uc3QpOgorCisgICAg
ICAgIEVtaWxpbyBzcG90dGVkIHRoYXQgdGhpcyBuZWVlZHMgdG8gYmUgYSBjb21wb3NlZCBhbmNl
c3RvciB3YWxrIHRvIG1hdGNoIHJlc29sdmVDb21wdXRlZFN0eWxlLgorCiAyMDIwLTAzLTA0ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBmdWxsIHN0
eWxlIHJlc29sdXRpb24gb24gRWxlbWVudDo6Zm9jdXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDYwOTQ4ZDg1N2ZhLi40NjAxNDRiM2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MzI5Miw4ICszMjkyLDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OnJlc29sdmVDb21w
dXRlZFN0eWxlKFJlc29sdmVDb21wdXRlZFN0eWxlTW9kZSBtb2RlKQogICAgIGNvbnN0IFJlbmRl
clN0eWxlKiBjb21wdXRlZFN0eWxlID0gbnVsbHB0cjsKIAogICAgIC8vIENvbGxlY3QgYW5jZXN0
b3JzIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgaGFzIHN0eWxlLgotICAgIGF1dG8gY29tcG9zZWRB
bmNlc3RvcnMgPSBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpOwotICAgIGZvciAoYXV0byYg
YW5jZXN0b3IgOiBjb21wb3NlZEFuY2VzdG9ycykgeworICAgIGZvciAoYXV0byYgYW5jZXN0b3Ig
OiBjb21wb3NlZFRyZWVBbmNlc3RvcnMoKnRoaXMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBleGlz
dGluZ1N0eWxlID0gYW5jZXN0b3IuZXhpc3RpbmdDb21wdXRlZFN0eWxlKCkpIHsKICAgICAgICAg
ICAgIGNvbXB1dGVkU3R5bGUgPSBleGlzdGluZ1N0eWxlOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zMzQ5LDcgKzMzNDgsNyBAQCBib29sIEVsZW1lbnQ6OmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZp
bmdGdWxsU3R5bGUoKSBjb25zdAogICAgIGlmIChzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IGFuY2VzdG9yc09mVHlwZTxFbGVtZW50PigqdGhpcykpIHsKKyAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBjb21wb3NlZFRyZWVBbmNlc3RvcnMoY29uc3RfY2FzdDxFbGVtZW50Jj4o
KnRoaXMpKSkgewogICAgICAgICBpZiAoZWxlbWVudC5leGlzdGluZ0NvbXB1dGVkU3R5bGUoKS0+
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>