<?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>226730</bug_id>
          
          <creation_ts>2021-06-07 08:36:11 -0700</creation_ts>
          <short_desc>Convert WebCore::SnapshotOptions into an enum class</short_desc>
          <delta_ts>2021-06-07 22:04:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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=225942</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>
          
          <blocked>226756</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767452</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-07 08:36:11 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767456</commentid>
    <comment_count>1</comment_count>
      <attachid>430749</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-07 08:41:28 -0700</bug_when>
    <thetext>Created attachment 430749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767460</commentid>
    <comment_count>2</comment_count>
      <attachid>430749</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-07 08:45:34 -0700</bug_when>
    <thetext>Comment on attachment 430749
Patch

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

r=mews

&gt; Source/WebCore/page/FrameSnapshotting.h:57
&gt; +    OptionSet&lt;SnapshotFlags&gt; flags = { };

Nit - you don&apos;t need the `= { }` here.

&gt; Source/WebCore/page/FrameSnapshotting.h:59
&gt; +    std::optional&lt;PixelFormat&gt; pixelFormat = std::nullopt;
&gt; +    std::optional&lt;DestinationColorSpace&gt; colorSpace = std::nullopt;

Ditto (don&apos;t need the `= std::nullopt`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767463</commentid>
    <comment_count>3</comment_count>
      <attachid>430751</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-07 08:52:29 -0700</bug_when>
    <thetext>Created attachment 430751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767473</commentid>
    <comment_count>4</comment_count>
      <attachid>430749</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-07 09:17:16 -0700</bug_when>
    <thetext>Comment on attachment 430749
Patch

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

&gt;&gt; Source/WebCore/page/FrameSnapshotting.h:59
&gt;&gt; +    std::optional&lt;DestinationColorSpace&gt; colorSpace = std::nullopt;
&gt; 
&gt; Ditto (don&apos;t need the `= std::nullopt`).

without these I seem to be getting errors related to missing field initializers :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767474</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-07 09:17:59 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #4)
&gt; Comment on attachment 430749 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430749&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/page/FrameSnapshotting.h:59
&gt; &gt;&gt; +    std::optional&lt;DestinationColorSpace&gt; colorSpace = std::nullopt;
&gt; &gt; 
&gt; &gt; Ditto (don&apos;t need the `= std::nullopt`).
&gt; 
&gt; without these I seem to be getting errors related to missing field
&gt; initializers :/

I see. Maybe just remove the `=` then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767479</commentid>
    <comment_count>6</comment_count>
      <attachid>430755</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-07 09:29:10 -0700</bug_when>
    <thetext>Created attachment 430755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767498</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-07 11:54:02 -0700</bug_when>
    <thetext>Committed r278565 (238563@main): &lt;https://commits.webkit.org/238563@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430755.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767499</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-07 11:55:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/78956259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767514</commentid>
    <comment_count>9</comment_count>
      <attachid>430755</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-07 12:35:18 -0700</bug_when>
    <thetext>Comment on attachment 430755
Patch

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

&gt; Source/WebCore/page/FrameSnapshotting.h:59
&gt; +    std::optional&lt;PixelFormat&gt; pixelFormat { };
&gt; +    std::optional&lt;DestinationColorSpace&gt; colorSpace { };

We&apos;ve been trying to move to making these kind of parameters non-optional, as you really always need to specify them. What was the rationale here for making them optional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767669</commentid>
    <comment_count>10</comment_count>
      <attachid>430755</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-07 22:04:41 -0700</bug_when>
    <thetext>Comment on attachment 430755
Patch

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

&gt;&gt; Source/WebCore/page/FrameSnapshotting.h:59
&gt;&gt; +    std::optional&lt;DestinationColorSpace&gt; colorSpace { };
&gt; 
&gt; We&apos;ve been trying to move to making these kind of parameters non-optional, as you really always need to specify them. What was the rationale here for making them optional?

Oh!  I was not aware of that.  I&apos;ll change these to be non-optional and specify them at callsites :)

&lt;https://webkit.org/b/226756&gt; (Require that callsites of `SnapshotOptions` specify a `DestinationColorSpace` and `PixelFormat`)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430749</attachid>
            <date>2021-06-07 08:41:28 -0700</date>
            <delta_ts>2021-06-07 09:33:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226730-20210607094124.patch</filename>
            <type>text/plain</type>
            <size>21191</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkN2UyNTBmZWMwZTIyNTkwMjM1NTgxYjFjNmEzYThmODNhYWE2YmViLi4z
N2FhMjU0M2EzMjRhNzJmMTNhZjQ2NWJlN2NhOWJmMDY2NzA0NmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIENvbnZlcnQgV2ViQ29yZTo6U25hcHNob3RPcHRpb25zIGludG8gYW4gZW51
bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q29udmVydCBgU25hcHNob3RPcHRpb25zYCBpbnRvIGFuIGBlbnVtIGNsYXNzIFNuYXBzaG90Rmxh
Z3NgIGFuZCBjcmVhdGUgYSBjb250YWluZXIgYHN0cnVjdAorICAgICAgICBTbmFwc2hvdE9wdGlv
bnNgIHRoYXQgYWxzbyBhbGxvd3MgZm9yIGNoYW5naW5nIHRoZSBgRGVzdGluYXRpb25Db2xvclNw
YWNlYCAoZGVmYXVsdHMgdG8gc1JHQikKKyAgICAgICAgYW5kIGBQaXhlbEZvcm1hdGAgKGRlZmF1
bHRzIHRvIEJHUkE4KS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmg6CisgICAgICAgICogcGFnZS9GcmFtZVNuYXBzaG90
dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1lUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6
OnNuYXBzaG90U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90Tm9kZSk6CisK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90UmVjdCk6CisgICAgICAg
ICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUNv
bG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAgKiBwYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RPcHRpb25zRm9yVGV4
dEluZGljYXRvck9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6dGFrZVNuYXBzaG90KToKKyAg
ICAgICAgKFdlYkNvcmU6OnRha2VTbmFwc2hvdHMpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UpOgorCiAyMDIxLTA2
LTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmZvcmNl
IGEgcXVvdGEgaW4gd2luZG93LnNlc3Npb25TdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAyMWMzZDNmZmM3
ZWNkYzk2Nzc2MjJjOTgyMmQ1ZTVjNWNlMGJlNTQuLjJiMTViNTEyMGIzNDM3YjVhMTdkMWRjNjdl
YTJiNjJhMzQxM2E3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDYtMDcgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgV2ViQ29y
ZTo6U25hcHNob3RPcHRpb25zIGludG8gYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBgU25hcHNob3RPcHRpb25zYCBp
bnRvIGFuIGBlbnVtIGNsYXNzIFNuYXBzaG90RmxhZ3NgIGFuZCBjcmVhdGUgYSBjb250YWluZXIg
YHN0cnVjdAorICAgICAgICBTbmFwc2hvdE9wdGlvbnNgIHRoYXQgYWxzbyBhbGxvd3MgZm9yIGNo
YW5naW5nIHRoZSBgRGVzdGluYXRpb25Db2xvclNwYWNlYCAoZGVmYXVsdHMgdG8gc1JHQikKKyAg
ICAgICAgYW5kIGBQaXhlbEZvcm1hdGAgKGRlZmF1bHRzIHRvIEJHUkE4KS4KKworICAgICAgICBO
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNo
b3QgY29uc3QpOgorCiAyMDIxLTA2LTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1lYW5pbmdmdWwgY2xpY2sgaGV1cmlzdGljIHNob3Vs
ZCBhY2NvdW50IGZvciBtZWRpYSBzdGF0ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZjU1Y2Jl
ZjM3ZTI5NGVhN2FiZTkzODlhNmIwYTQ0YjFjYjcxYWRiYi4uNTg2OTY4NGFmYzMzZjE4MDkwZWEw
YTJmNzk2MGJlMWEwODQxZTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTA4MSwxMiArMTA4MSwxMiBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25h
cHNob3ROb2RlKFByb3RvY29sOjpET006OgogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJp
bmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0KGludCB4LCBpbnQgeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBQcm90b2NvbDo6UGFnZTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGlu
YXRlU3lzdGVtKQogewotICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gU25hcHNob3RPcHRp
b25zTm9uZTsKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9uczsKICAgICBpZiAoY29vcmRpbmF0
ZVN5c3RlbSA9PSBQcm90b2NvbDo6UGFnZTo6Q29vcmRpbmF0ZVN5c3RlbTo6Vmlld3BvcnQpCi0g
ICAgICAgIG9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXM7CisgICAg
ICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6OkluVmlld0Nvb3JkaW5hdGVzKTsK
IAogICAgIEludFJlY3QgcmVjdGFuZ2xlKHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIGF1dG8g
c25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCks
IHJlY3RhbmdsZSwgb3B0aW9ucyk7CisgICAgYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90RnJhbWVS
ZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSwgcmVjdGFuZ2xlLCBXVEZNb3ZlKG9wdGlv
bnMpKTsKIAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAyODMxNDIxMTE0MTM3ZWMxZWI3MDMyYzViYjg5OTkx
NzUwODI0YmIwLi4xYThlYjIzNmYzMjZhOWY4ZmI0NWM3ZDk4OGI4Nzk2YjJiMjM3MjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lU25hcHNob3R0aW5nLmgiCiAK
KyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zOSw4ICs0
MCwxMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3
dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsMTMgKzcwLDEz
IEBAIHN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewogICAgIGNvbnN0IENvbG9yIGJh
Y2tncm91bmRDb2xvcjsKIH07CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJl
Y3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFNuYXBzaG90T3B0aW9u
cyBvcHRpb25zKQorUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYg
ZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25hcHNob3RPcHRpb25zJiYgb3B0aW9u
cykKIHsKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBjbGlwUmVjdHM7Ci0gICAgcmV0dXJuIHNuYXBz
aG90RnJhbWVSZWN0V2l0aENsaXAoZnJhbWUsIGltYWdlUmVjdCwgY2xpcFJlY3RzLCBvcHRpb25z
KTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChmcmFtZSwgaW1hZ2VSZWN0
LCBjbGlwUmVjdHMsIFdURk1vdmUob3B0aW9ucykpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+
IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBp
bWFnZVJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlwUmVjdHMsIFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zKQorUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhD
bGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBWZWN0b3I8
RmxvYXRSZWN0PiYgY2xpcFJlY3RzLCBTbmFwc2hvdE9wdGlvbnMmJiBvcHRpb25zKQogewogICAg
IGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgxLDIzICs4
NCwyMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJh
bWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAgIGZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dCgpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBzaG90IHNob3Vs
ZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247Ci0gICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQor
ICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OkV4Y2x1ZGVTZWxl
Y3Rpb25IaWdobGlnaHRpbmcpKQogICAgICAgICBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJh
bWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uOwogCiAgICAgRnJhbWVWaWV3OjpDb29yZGluYXRlU3Bh
Y2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRp
bmF0ZXM7Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRl
cykKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpJblZpZXdD
b29yZGluYXRlcykpCiAgICAgICAgIGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nv
b3JkaW5hdGVzOwogCiAgICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCBu
dWxscHRyKTsKIAogICAgIGF1dG8gcGFpbnRCZWhhdmlvciA9IHN0YXRlLnBhaW50QmVoYXZpb3I7
Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKKyAgICBp
ZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpGb3JjZUJsYWNrVGV4dCkp
CiAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0
KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uT25seSkK
KyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQYWludFNlbGVj
dGlvbk9ubHkpKQogICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTZWxl
Y3Rpb25Pbmx5KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0
aW9uQW5kQmFja2dyb3VuZHNPbmx5KQorICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNu
YXBzaG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KSkKICAgICAgICAg
cGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNP
bmx5KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50RXZlcnl0aGluZ0V4
Y2x1ZGluZ1NlbGVjdGlvbikKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hv
dEZsYWdzOjpQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24pKQogICAgICAgICBwYWlu
dEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKTsKIAogICAgIC8v
IE90aGVyIHBhaW50IGJlaGF2aW9ycyBhcmUgc2V0IGJ5IHBhaW50Q29udGVudHNGb3JTbmFwc2hv
dC4KQEAgLTEwOCwxMCArMTExLDEwIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFt
ZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlCiAgICAgaWYg
KGZyYW1lLnBhZ2UoKS0+ZGVsZWdhdGVzU2NhbGluZygpKQogICAgICAgICBzY2FsZUZhY3RvciAq
PSBmcmFtZS5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwogCi0gICAgaWYgKG9wdGlvbnMgJiBT
bmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKQorICAgIGlmIChvcHRp
b25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OlBhaW50V2l0aEludGVncmFsU2NhbGVG
YWN0b3IpKQogICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3BhY2UudmFsdWVfb3IoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpLCBvcHRpb25zLnBpeGVsRm9ybWF0LnZhbHVlX29yKFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFn
ZVJlY3QueSgpKTsKQEAgLTEyNyw3ICsxMzAsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBz
aG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQog
ICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxl
Y3Rpb24oRnJhbWUmIGZyYW1lLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBTbmFwc2hvdE9wdGlvbnMm
JiBvcHRpb25zKQogewogICAgIGF1dG8mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpOwog
CkBAIC0xNDAsMTEgKzE0MywxMSBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90U2VsZWN0
aW9uKEZyYW1lJiBmcmFtZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiAgICAgaWYgKHNlbGVj
dGlvbkJvdW5kcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgb3B0
aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHk7Ci0gICAgcmV0dXJuIHNu
YXBzaG90RnJhbWVSZWN0KGZyYW1lLCBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kcyks
IG9wdGlvbnMpOworICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6OlBhaW50U2Vs
ZWN0aW9uT25seSk7CisgICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBlbmNsb3Np
bmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kcyksIFdURk1vdmUob3B0aW9ucykpOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUpCitS
ZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUs
IFNuYXBzaG90T3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFub2RlLnJlbmRlcmVyKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU1LDcgKzE1OCw3IEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSkKICAgICBmcmFt
ZS52aWV3KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCiAgICAgTGF5b3V0UmVjdCB0b3BMZXZl
bFJlY3Q7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBzbmFwcGVkSW50UmVj
dChub2RlLnJlbmRlcmVyKCktPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSkpOworICAg
IHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc25hcHBlZEludFJlY3Qobm9kZS5yZW5k
ZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5oCmluZGV4IDEwMjM3MzhhZjg3ZjczZDQzMTNhYjE3Zjc5M2U2N2U5NjYzYTM2
ZjkuLmE4Y2U3OGM0ZWU3ZWNjYTNhNTNjN2RlZjFjN2JmNjkwOGI4OTY4ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTMwLDMxICszMCwzOCBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIE5vZGU7CitlbnVtIGNsYXNzIFBpeGVs
Rm9ybWF0IDogdWludDhfdDsKIAotZW51bSB7Ci0gICAgU25hcHNob3RPcHRpb25zTm9uZSA9IDAs
Ci0gICAgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZyA9IDEgPDwg
MCwKLSAgICBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHkgPSAxIDw8IDEsCi0gICAg
U25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMgPSAxIDw8IDIsCi0gICAgU25hcHNob3RP
cHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDMsCi0gICAgU25hcHNob3RPcHRpb25zUGFpbnRT
ZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDQsCi0gICAgU25hcHNob3RPcHRpb25z
UGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0gMSA8PCA1LAotICAgIFNuYXBzaG90
T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IgPSAxIDw8IDYsCitlbnVtIGNsYXNz
IFNuYXBzaG90RmxhZ3MgOiB1aW50OF90IHsKKyAgICBFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0
aW5nID0gMSA8PCAwLAorICAgIFBhaW50U2VsZWN0aW9uT25seSA9IDEgPDwgMSwKKyAgICBJblZp
ZXdDb29yZGluYXRlcyA9IDEgPDwgMiwKKyAgICBGb3JjZUJsYWNrVGV4dCA9IDEgPDwgMywKKyAg
ICBQYWludFNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSA9IDEgPDwgNCwKKyAgICBQYWludEV2
ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24gPSAxIDw8IDUsCisgICAgUGFpbnRXaXRoSW50ZWdy
YWxTY2FsZUZhY3RvciA9IDEgPDwgNiwKIH07Ci10eXBlZGVmIHVuc2lnbmVkIFNuYXBzaG90T3B0
aW9uczsKIAotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1l
UmVjdChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9w
dGlvbnNOb25lKTsKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xp
cChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJl
Y3RzLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKLVJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYpOwotV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNuYXBzaG90T3B0aW9u
cyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOworc3RydWN0IFNuYXBzaG90T3B0aW9ucyB7CisgICAg
T3B0aW9uU2V0PFNuYXBzaG90RmxhZ3M+IGZsYWdzID0geyB9OworICAgIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0ID0gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9u
YWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlID0gc3RkOjpudWxsb3B0OworfTsK
KworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChG
cmFtZSYsIGNvbnN0IEludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMmJiA9IHsgfSk7CitSZWZQdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0cywgU25hcHNob3RPcHRpb25z
JiYgPSB7IH0pOworUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmLCBOb2Rl
JiwgU25hcHNob3RPcHRpb25zJiYgPSB7IH0pOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdl
QnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNuYXBzaG90T3B0aW9ucyYmID0geyB9
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9y
U2FtcGxlci5jcHAKaW5kZXggZDVhMGZlMmNiYWZjN2M4OTQ2ZjNkMDFmZjMyNTJkNmQ1NDY3NDY5
NC4uMWMwYTMwMmFiMDc3Yzk3NzVhZmUwZDZjYjlhZTNiYWM3NmE2NGNlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCkBAIC0xMTYsMTIgKzExNiwxNSBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1l
bnQsIEludFBvaW50JiYgbG9jYQogICAgIGlmICghaXNWYWxpZFNhbXBsZUxvY2F0aW9uKGRvY3Vt
ZW50LCBsb2NhdGlvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICAvLyBG
SVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIyNTk0Mj4gKFNhbXBsZWQgUGFnZSBUb3AgQ29s
b3I6IHN1cHBvcnQgc2FtcGxpbmcgbm9uLVJHQiB2YWx1ZXMgbGlrZSBQMykKKyAgICBhdXRvIGNv
bG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKwogICAgIEFTU0VSVChk
b2N1bWVudC52aWV3KCkpOwotICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChk
b2N1bWVudC52aWV3KCktPmZyYW1lKCksIEludFJlY3QobG9jYXRpb24sIEludFNpemUoMSwgMSkp
LCBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nIHwgU25hcHNob3RP
cHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKTsKKyAgICBhdXRvIHNuYXBz
aG90ID0gc25hcHNob3RGcmFtZVJlY3QoZG9jdW1lbnQudmlldygpLT5mcmFtZSgpLCBJbnRSZWN0
KGxvY2F0aW9uLCBJbnRTaXplKDEsIDEpKSwgeyAuZmxhZ3MgPSB7IFNuYXBzaG90RmxhZ3M6OkV4
Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcsIFNuYXBzaG90RmxhZ3M6OlBhaW50RXZlcnl0aGlu
Z0V4Y2x1ZGluZ1NlbGVjdGlvbiB9LCBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbG9yU3BhY2UgfSk7
CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6ZSgp
IH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JB
OCwgY29sb3JTcGFjZSB9LCB7IHsgfSwgc25hcHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAg
aWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAxYzEzMDI2NDc0OTI5ZTU2
NGYwZmYwYjk2ZWI0YjI3Njk0Yzk0NWY5Li43ZGRkOGU4YzAyN2M3Yzk2ZWYwZjgwOTliZTM2ZDZh
YjMzNmY0ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApA
QCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgIGlmICgh
dGFyZ2V0KSB7CiAgICAgICAgICAgICAvLyBJZiBubyB0YXJnZXQgaXMgcHJvdmlkZWQsIGNhcHR1
cmUgYW4gaW1hZ2Ugb2YgdGhlIHZpZXdwb3J0LgogICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+c2l6ZUZvclZp
c2libGVDb250ZW50KCkpOwotICAgICAgICAgICAgaWYgKGF1dG8gc25hcHNob3QgPSBXZWJDb3Jl
OjpzbmFwc2hvdEZyYW1lUmVjdChtX3BhZ2UubWFpbkZyYW1lKCksIGltYWdlUmVjdCwgU25hcHNo
b3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMpKQorICAgICAgICAgICAgaWYgKGF1dG8gc25hcHNo
b3QgPSBXZWJDb3JlOjpzbmFwc2hvdEZyYW1lUmVjdChtX3BhZ2UubWFpbkZyYW1lKCksIGltYWdl
UmVjdCwgeyAuZmxhZ3MgPSB7IFNuYXBzaG90RmxhZ3M6OkluVmlld0Nvb3JkaW5hdGVzIH0gfSkp
CiAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3Bu
ZyJfcywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggMDg5NWFiMjQxYTk5MDMx
YmQwNDM2MWU4ZGU0ZTI1YjliMWM2NmFhNi4uZDdkMzQ4ZGUzNDQyZmRiYmM5MTk4YzI1ZjMyYWRi
MjY3NGYwMjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0xMjcs
MjYgKzEyNywyNyBAQCBzdGF0aWMgYm9vbCBoYXNOb25JbmxpbmVPclJlcGxhY2VkRWxlbWVudHMo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogCiBzdGF0aWMgU25hcHNob3RPcHRpb25zIHNuYXBz
aG90T3B0aW9uc0ZvclRleHRJbmRpY2F0b3JPcHRpb25zKE9wdGlvblNldDxUZXh0SW5kaWNhdG9y
T3B0aW9uPiBvcHRpb25zKQogewotICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMg
PSBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yOworICAgIFNuYXBz
aG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnM7CisgICAgc25hcHNob3RPcHRpb25zLmZsYWdzLmFk
ZChTbmFwc2hvdEZsYWdzOjpQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKTsKIAogICAgIGlm
ICghb3B0aW9ucy5jb250YWlucyhUZXh0SW5kaWNhdG9yT3B0aW9uOjpQYWludEFsbENvbnRlbnQp
KSB7CiAgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFRleHRJbmRpY2F0b3JPcHRpb246OlBh
aW50QmFja2dyb3VuZHMpKQotICAgICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90
T3B0aW9uc1BhaW50U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5OworICAgICAgICAgICAgc25h
cHNob3RPcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZsYWdzOjpQYWludFNlbGVjdGlvbkFuZEJh
Y2tncm91bmRzT25seSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc25hcHNob3RPcHRp
b25zIHw9IFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uT25seTsKKyAgICAgICAgICAgIHNu
YXBzaG90T3B0aW9ucy5mbGFncy5hZGQoU25hcHNob3RGbGFnczo6UGFpbnRTZWxlY3Rpb25Pbmx5
KTsKIAogICAgICAgICAgICAgaWYgKCFvcHRpb25zLmNvbnRhaW5zKFRleHRJbmRpY2F0b3JPcHRp
b246OlJlc3BlY3RUZXh0Q29sb3IpKQotICAgICAgICAgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8
PSBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dDsKKyAgICAgICAgICAgICAgICBzbmFwc2hv
dE9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6OkZvcmNlQmxhY2tUZXh0KTsKICAgICAg
ICAgfQogICAgIH0gZWxzZQotICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRp
b25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZzsKKyAgICAgICAgc25hcHNob3RPcHRpb25z
LmZsYWdzLmFkZChTbmFwc2hvdEZsYWdzOjpFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKTsK
IAogICAgIHJldHVybiBzbmFwc2hvdE9wdGlvbnM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+
IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25z
IG9wdGlvbnMsIGZsb2F0JiBzY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNs
aXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcykKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VT
bmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25zJiYgb3B0
aW9ucywgZmxvYXQmIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJl
Y3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzKQogewotICAgIGF1dG8gYnVmZmVyID0gc25hcHNob3RG
cmFtZVJlY3RXaXRoQ2xpcChmcmFtZSwgcmVjdCwgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5h
dGVzLCBvcHRpb25zKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNuYXBzaG90RnJhbWVSZWN0V2l0aENs
aXAoZnJhbWUsIHJlY3QsIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcywgV1RGTW92ZShv
cHRpb25zKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHNjYWxlRmFjdG9yID0gYnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUoKTsKQEAgLTE1NSwyMiArMTU2
LDIwIEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIElu
dFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wCiAKIHN0YXRpYyBib29sIHRha2VTbmFwc2hv
dHMoVGV4dEluZGljYXRvckRhdGEmIGRhdGEsIEZyYW1lJiBmcmFtZSwgSW50UmVjdCBzbmFwc2hv
dFJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRp
bmF0ZXMpCiB7Ci0gICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHNuYXBzaG90
T3B0aW9uc0ZvclRleHRJbmRpY2F0b3JPcHRpb25zKGRhdGEub3B0aW9ucyk7Ci0KLSAgICBkYXRh
LmNvbnRlbnRJbWFnZSA9IHRha2VTbmFwc2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBzbmFwc2hv
dE9wdGlvbnMsIGRhdGEuY29udGVudEltYWdlU2NhbGVGYWN0b3IsIGNsaXBSZWN0c0luRG9jdW1l
bnRDb29yZGluYXRlcyk7CisgICAgZGF0YS5jb250ZW50SW1hZ2UgPSB0YWtlU25hcHNob3QoZnJh
bWUsIHNuYXBzaG90UmVjdCwgc25hcHNob3RPcHRpb25zRm9yVGV4dEluZGljYXRvck9wdGlvbnMo
ZGF0YS5vcHRpb25zKSwgZGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvciwgY2xpcFJlY3RzSW5E
b2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBpZiAoIWRhdGEuY29udGVudEltYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZGF0YS5vcHRpb25zLmNvbnRhaW5zKFRleHRJbmRp
Y2F0b3JPcHRpb246OkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQpKSB7CiAg
ICAgICAgIGZsb2F0IHNuYXBzaG90U2NhbGVGYWN0b3I7Ci0gICAgICAgIGRhdGEuY29udGVudElt
YWdlV2l0aEhpZ2hsaWdodCA9IHRha2VTbmFwc2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBTbmFw
c2hvdE9wdGlvbnNOb25lLCBzbmFwc2hvdFNjYWxlRmFjdG9yLCBjbGlwUmVjdHNJbkRvY3VtZW50
Q29vcmRpbmF0ZXMpOworICAgICAgICBkYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgPSB0
YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVjdCwgeyB9LCBzbmFwc2hvdFNjYWxlRmFjdG9y
LCBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogICAgICAgICBBU1NFUlQoIWRhdGEu
Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCB8fCBkYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9y
ID49IHNuYXBzaG90U2NhbGVGYWN0b3IpOwogICAgIH0KIAogICAgIGlmIChkYXRhLm9wdGlvbnMu
Y29udGFpbnMoVGV4dEluZGljYXRvck9wdGlvbjo6SW5jbHVkZVNuYXBzaG90T2ZBbGxWaXNpYmxl
Q29udGVudFdpdGhvdXRTZWxlY3Rpb24pKSB7CiAgICAgICAgIGZsb2F0IHNuYXBzaG90U2NhbGVG
YWN0b3I7CiAgICAgICAgIGF1dG8gc25hcHNob3RSZWN0ID0gZnJhbWUudmlldygpLT52aXNpYmxl
Q29udGVudFJlY3QoKTsKLSAgICAgICAgZGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9u
ID0gdGFrZVNuYXBzaG90KGZyYW1lLCBzbmFwc2hvdFJlY3QsIFNuYXBzaG90T3B0aW9uc1BhaW50
RXZlcnl0aGluZ0V4Y2x1ZGluZ1NlbGVjdGlvbiwgc25hcHNob3RTY2FsZUZhY3RvciwgeyB9KTsK
KyAgICAgICAgZGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gdGFrZVNuYXBzaG90
KGZyYW1lLCBzbmFwc2hvdFJlY3QsIHsgLmZsYWdzID0geyBTbmFwc2hvdEZsYWdzOjpQYWludEV2
ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24gfSB9LCBzbmFwc2hvdFNjYWxlRmFjdG9yLCB7IH0p
OwogICAgICAgICBkYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoc25hcHNob3RS
ZWN0KTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRl
eCA5MDM0MjhmM2VhNjQzM2E3MGRjMWI4ZDU1ODAxZTM3NzQ2NTk2YzBmLi43YmM1MzZjZjVkYjUw
ZTcxYTA0OTViMjhlYjkzNzNlYzExOTllNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5jcHAKQEAgLTEyNiw4ICsxMjYsMTAgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZvck5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgVGV4dEluZGljYXRvckRhdGEmLCBi
b29sIGZvcmNlQmxhY2tUZXh0KQogewotICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gZm9y
Y2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA6IFNuYXBzaG90T3B0
aW9uc05vbmU7Ci0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hvdChzbmFwc2hv
dFNlbGVjdGlvbihmcmFtZSwgb3B0aW9ucyksIG51bGxwdHIpOworICAgIFNuYXBzaG90T3B0aW9u
cyBvcHRpb25zOworICAgIGlmIChmb3JjZUJsYWNrVGV4dCkKKyAgICAgICAgb3B0aW9ucy5mbGFn
cy5hZGQoU25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQpOworICAgIHJldHVybiBjcmVhdGVE
cmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3RTZWxlY3Rpb24oZnJhbWUsIFdURk1vdmUob3B0
aW9ucykpLCBudWxscHRyKTsKIH0KIAogI2VuZGlmCkBAIC0xODIsMTQgKzE4NCwxOCBAQCBEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW1w
bGVSYW5nZSYgcmFuZ2UsIGJvbwogICAgIGlmICghc3RhcnRSZW5kZXJlciB8fCAhZW5kUmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU25hcHNob3RPcHRpb25zIG9wdGlv
bnMgPSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQg
PyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA6IFNuYXBzaG90T3B0aW9uc05vbmUpOwor
ICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBz
aG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uT25seSk7CisgICAgaWYgKGZvcmNlQmxhY2tUZXh0KQor
ICAgICAgICBvcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZsYWdzOjpGb3JjZUJsYWNrVGV4dCk7
CisKICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
OwogICAgIGludCBlbmRPZmZzZXQgPSBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAg
ICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0gMCk7CiAgICAgdmlldy0+
c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQp
IH0sIFNlbGVjdGlvblJhbmdlRGF0YTo6UmVwYWludE1vZGU6Ok5vdGhpbmcpOwogICAgIC8vIFdl
IGNhcHR1cmUgdXNpbmcgc25hcHNob3RGcmFtZVJlY3QoKSBiZWNhdXNlIHdlIGZha2UgdXAgdGhl
IHNlbGVjdGlvbiB1c2luZwogICAgIC8vIEZyYW1lVmlldyBidXQgc25hcHNob3RTZWxlY3Rpb24o
KSB1c2VzIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRnJhbWUgaXRzZWxmLgotICAgIHJldHVybiBj
cmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3RGcmFtZVJlY3QoZnJhbWUsIHZpZXct
PnNlbGVjdGlvbigpLmJvdW5kc0NsaXBwZWRUb1Zpc2libGVDb250ZW50KCksIG9wdGlvbnMpLCBu
dWxscHRyKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHNuYXBzaG90
RnJhbWVSZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rpb24oKS5ib3VuZHNDbGlwcGVkVG9WaXNpYmxl
Q29udGVudCgpLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbnVsbHB0cik7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDE1NDE1
NmJkYjQ2ZjFmZjY0OTIxNjczYmNhNDY1MDEwZmY5Y2E3MGUuLjE1ZjZjMTk4YzVhZmU4ZjgyMzRk
ZTc1NDhmZWUwODVmNWNkMWJkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKQEAgLTg0Miw3ICs4NDIsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywg
dm9pZAogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9u
U25hcHNob3QoKSBjb25zdAogewotICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlv
bigqY29yZUZyYW1lKCksIFdlYkNvcmU6OlNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KTsK
KyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IC5m
bGFncyA9IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQgfSB9KTsKICAg
ICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAo=
</data>
<flag name="commit-queue"
          id="452332"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430751</attachid>
            <date>2021-06-07 08:52:29 -0700</date>
            <delta_ts>2021-06-07 09:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226730-20210607095226.patch</filename>
            <type>text/plain</type>
            <size>21140</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YmIxMzczNjhjYmVhZWQ0NGY4MDQyYzEyYTA1N2Y2N2QxMTJlZTk0Li45
YzdiYjljMzRhNGExMmU4ZjAyMjgyNzNkYWE2OTczMDAwMmZhYWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIENvbnZlcnQgV2ViQ29yZTo6U25hcHNob3RPcHRpb25zIGludG8gYW4gZW51
bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIENv
bnZlcnQgYFNuYXBzaG90T3B0aW9uc2AgaW50byBhbiBgZW51bSBjbGFzcyBTbmFwc2hvdEZsYWdz
YCBhbmQgY3JlYXRlIGEgY29udGFpbmVyIGBzdHJ1Y3QKKyAgICAgICAgU25hcHNob3RPcHRpb25z
YCB0aGF0IGFsc28gYWxsb3dzIGZvciBjaGFuZ2luZyB0aGUgYERlc3RpbmF0aW9uQ29sb3JTcGFj
ZWAgKGRlZmF1bHRzIHRvIHNSR0IpCisgICAgICAgIGFuZCBgUGl4ZWxGb3JtYXRgIChkZWZhdWx0
cyB0byBCR1JBOCkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICog
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpz
bmFwc2hvdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdE5vZGUpOgorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVDb2xv
cik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICogcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90T3B0aW9uc0ZvclRleHRJ
bmRpY2F0b3JPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJDb3JlOjp0YWtlU25hcHNob3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKToKKwogMjAyMS0wNi0w
NyAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
c2UgM0QgcG9pbnRzIHRvIG1hcCB0aGUgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgYm91bmRz
IHRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZjZhMWU4OTNhOThiMGM4YTIyYmY4MDdiM2RiNzllZDMy
ZDRkNzg5Li4yMTRhZGFlYzBiNzE4YzhlMTE2YzhhM2JmMmY2MWUwNTJiNzQyNjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IFdlYkNvcmU6OlNuYXBzaG90T3B0aW9ucyBpbnRv
IGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjczMAorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAg
ICAgICBDb252ZXJ0IGBTbmFwc2hvdE9wdGlvbnNgIGludG8gYW4gYGVudW0gY2xhc3MgU25hcHNo
b3RGbGFnc2AgYW5kIGNyZWF0ZSBhIGNvbnRhaW5lciBgc3RydWN0CisgICAgICAgIFNuYXBzaG90
T3B0aW9uc2AgdGhhdCBhbHNvIGFsbG93cyBmb3IgY2hhbmdpbmcgdGhlIGBEZXN0aW5hdGlvbkNv
bG9yU3BhY2VgIChkZWZhdWx0cyB0byBzUkdCKQorICAgICAgICBhbmQgYFBpeGVsRm9ybWF0YCAo
ZGVmYXVsdHMgdG8gQkdSQTgpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCBjb25zdCk6CisKIDIwMjEtMDYtMDcg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBGaW5kLWluLXBhZ2Ugc2hvdWxkIG1hdGNoIHRleHQgaW5zaWRlIGltYWdlIG92ZXJsYXlzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggZTMyNWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2Ny4u
ZjA4MDZlZDM2ZGM2YjcyZmI5YTk3YzRhNGZiMjJiYzhhMDk1NmUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtMTA4MSwxMiArMTA4MSwxMiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IElu
c3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKFByb3RvY29sOjpET006OgogCiBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0
KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBQcm90b2NvbDo6UGFnZTo6Q29v
cmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQogewotICAgIFNuYXBzaG90T3B0aW9ucyBv
cHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZTsKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9u
czsKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBQcm90b2NvbDo6UGFnZTo6Q29vcmRpbmF0
ZVN5c3RlbTo6Vmlld3BvcnQpCi0gICAgICAgIG9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zSW5W
aWV3Q29vcmRpbmF0ZXM7CisgICAgICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6
OkluVmlld0Nvb3JkaW5hdGVzKTsKIAogICAgIEludFJlY3QgcmVjdGFuZ2xlKHgsIHksIHdpZHRo
LCBoZWlnaHQpOwotICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChtX2luc3Bl
Y3RlZFBhZ2UubWFpbkZyYW1lKCksIHJlY3RhbmdsZSwgb3B0aW9ucyk7CisgICAgYXV0byBzbmFw
c2hvdCA9IHNuYXBzaG90RnJhbWVSZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSwgcmVj
dGFuZ2xlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKIAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAyODMxNDIxMTE0
MTM3ZWMxZWI3MDMyYzViYjg5OTkxNzUwODI0YmIwLi4xYThlYjIzNmYzMjZhOWY4ZmI0NWM3ZDk4
OGI4Nzk2YjJiMjM3MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZy
YW1lU25hcHNob3R0aW5nLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zOSw4ICs0MCwxMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlBpeGVsRm9ybWF0LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjcsMTMgKzcwLDEzIEBAIHN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUg
ewogICAgIGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcjsKIH07CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFn
ZVJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFw
c2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25h
cHNob3RPcHRpb25zJiYgb3B0aW9ucykKIHsKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBjbGlwUmVj
dHM7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoZnJhbWUsIGltYWdlUmVj
dCwgY2xpcFJlY3RzLCBvcHRpb25zKTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3RXaXRo
Q2xpcChmcmFtZSwgaW1hZ2VSZWN0LCBjbGlwUmVjdHMsIFdURk1vdmUob3B0aW9ucykpOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZy
YW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBj
bGlwUmVjdHMsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPEltYWdlQnVmZmVyPiBz
bmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2VSZWN0LCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzLCBTbmFwc2hvdE9wdGlv
bnMmJiBvcHRpb25zKQogewogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTgxLDIzICs4NCwyMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90
RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAg
IGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxl
Y3Rpb25JblNuYXBzaG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1
ZGVTZWxlY3Rpb247Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2Vs
ZWN0aW9uSGlnaGxpZ2h0aW5nKQorICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBz
aG90RmxhZ3M6OkV4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpKQogICAgICAgICBzaG91bGRJ
bmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uOwogCiAgICAgRnJh
bWVWaWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2UgPSBGcmFt
ZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXM7Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9w
dGlvbnNJblZpZXdDb29yZGluYXRlcykKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhT
bmFwc2hvdEZsYWdzOjpJblZpZXdDb29yZGluYXRlcykpCiAgICAgICAgIGNvb3JkaW5hdGVTcGFj
ZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOwogCiAgICAgU2NvcGVkRnJhbWVQYWludGlu
Z1N0YXRlIHN0YXRlKGZyYW1lLCBudWxscHRyKTsKIAogICAgIGF1dG8gcGFpbnRCZWhhdmlvciA9
IHN0YXRlLnBhaW50QmVoYXZpb3I7Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNG
b3JjZUJsYWNrVGV4dCkKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZs
YWdzOjpGb3JjZUJsYWNrVGV4dCkpCiAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVo
YXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9u
c1BhaW50U2VsZWN0aW9uT25seSkKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFw
c2hvdEZsYWdzOjpQYWludFNlbGVjdGlvbk9ubHkpKQogICAgICAgICBwYWludEJlaGF2aW9yLmFk
ZChQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc1BhaW50U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KQorICAgIGlmIChvcHRp
b25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uQW5kQmFja2dy
b3VuZHNPbmx5KSkKICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2Vs
ZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc1BhaW50RXZlcnl0aGluZ0V4Y2x1ZGluZ1NlbGVjdGlvbikKKyAgICBpZiAob3B0aW9ucy5m
bGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxl
Y3Rpb24pKQogICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRl
U2VsZWN0aW9uKTsKIAogICAgIC8vIE90aGVyIHBhaW50IGJlaGF2aW9ycyBhcmUgc2V0IGJ5IHBh
aW50Q29udGVudHNGb3JTbmFwc2hvdC4KQEAgLTEwOCwxMCArMTExLDEwIEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IElu
dFJlY3QmIGltYWdlCiAgICAgaWYgKGZyYW1lLnBhZ2UoKS0+ZGVsZWdhdGVzU2NhbGluZygpKQog
ICAgICAgICBzY2FsZUZhY3RvciAqPSBmcmFtZS5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwog
Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yKQorICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OlBh
aW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpKQogICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxm
KHNjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShp
bWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3Rv
ciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3Bh
Y2UudmFsdWVfb3IoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpLCBvcHRpb25zLnBpeGVs
Rm9ybWF0LnZhbHVlX29yKFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUo
LWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKQEAgLTEyNyw3ICsxMzAsNyBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBj
b25zdCBJbnRSZWN0JiBpbWFnZQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZy
YW1lLCBTbmFwc2hvdE9wdGlvbnMmJiBvcHRpb25zKQogewogICAgIGF1dG8mIHNlbGVjdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpOwogCkBAIC0xNDAsMTEgKzE0MywxMSBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU25hcHNob3RPcHRpb25zIG9w
dGlvbnMpCiAgICAgaWYgKHNlbGVjdGlvbkJvdW5kcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgb3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bk9ubHk7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBlbmNsb3NpbmdJbnRS
ZWN0KHNlbGVjdGlvbkJvdW5kcyksIG9wdGlvbnMpOworICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNu
YXBzaG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uT25seSk7CisgICAgcmV0dXJuIHNuYXBzaG90RnJh
bWVSZWN0KGZyYW1lLCBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kcyksIFdURk1vdmUo
b3B0aW9ucykpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYg
ZnJhbWUsIE5vZGUmIG5vZGUpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFt
ZSYgZnJhbWUsIE5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAg
aWYgKCFub2RlLnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU1LDcg
KzE1OCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwg
Tm9kZSYgbm9kZSkKICAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCiAg
ICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0
KGZyYW1lLCBzbmFwcGVkSW50UmVjdChub2RlLnJlbmRlcmVyKCktPnBhaW50aW5nUm9vdFJlY3Qo
dG9wTGV2ZWxSZWN0KSkpOworICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc25h
cHBlZEludFJlY3Qobm9kZS5yZW5kZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVj
dCkpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IDEwMjM3MzhhZjg3ZjczZDQz
MTNhYjE3Zjc5M2U2N2U5NjYzYTM2ZjkuLjA4ZTAzMWZjYjQ0MjU4N2M1MDU3YzE0NzAxNTgxNDA1
MTAyOTAyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTMw
LDMxICszMCwzOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFJlY3Q7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIE5v
ZGU7CitlbnVtIGNsYXNzIFBpeGVsRm9ybWF0IDogdWludDhfdDsKIAotZW51bSB7Ci0gICAgU25h
cHNob3RPcHRpb25zTm9uZSA9IDAsCi0gICAgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlv
bkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKLSAgICBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bk9ubHkgPSAxIDw8IDEsCi0gICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMgPSAx
IDw8IDIsCi0gICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDMsCi0gICAg
U25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDQs
Ci0gICAgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0g
MSA8PCA1LAotICAgIFNuYXBzaG90T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3Ig
PSAxIDw8IDYsCitlbnVtIGNsYXNzIFNuYXBzaG90RmxhZ3MgOiB1aW50OF90IHsKKyAgICBFeGNs
dWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nID0gMSA8PCAwLAorICAgIFBhaW50U2VsZWN0aW9uT25s
eSA9IDEgPDwgMSwKKyAgICBJblZpZXdDb29yZGluYXRlcyA9IDEgPDwgMiwKKyAgICBGb3JjZUJs
YWNrVGV4dCA9IDEgPDwgMywKKyAgICBQYWludFNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSA9
IDEgPDwgNCwKKyAgICBQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24gPSAxIDw8IDUs
CisgICAgUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvciA9IDEgPDwgNiwKIH07Ci10eXBlZGVm
IHVuc2lnbmVkIFNuYXBzaG90T3B0aW9uczsKIAotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdl
QnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBTbmFwc2hv
dE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0
b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlv
bnNOb25lKTsKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYp
OwotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihG
cmFtZSYsIFNuYXBzaG90T3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOworc3RydWN0IFNu
YXBzaG90T3B0aW9ucyB7CisgICAgT3B0aW9uU2V0PFNuYXBzaG90RmxhZ3M+IGZsYWdzOworICAg
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIHN0ZDo6b3B0aW9u
YWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworfTsKKworV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYsIGNvbnN0IElu
dFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMmJiA9IHsgfSk7CitSZWZQdHI8SW1hZ2VCdWZmZXI+IHNu
YXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVmVj
dG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0cywgU25hcHNob3RPcHRpb25zJiYgPSB7IH0pOworUmVm
UHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmLCBOb2RlJiwgU25hcHNob3RPcHRp
b25zJiYgPSB7IH0pOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hv
dFNlbGVjdGlvbihGcmFtZSYsIFNuYXBzaG90T3B0aW9ucyYmID0geyB9KTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JT
YW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKaW5k
ZXggZDVhMGZlMmNiYWZjN2M4OTQ2ZjNkMDFmZjMyNTJkNmQ1NDY3NDY5NC4uYmYzNWMyMDkyYzgw
MDg4YTlkNmRmNjJiY2FlNDBiNTk2MWQ2OTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b2xvclNhbXBsZXIuY3BwCkBAIC0xMTYsMTIgKzExNiwxNSBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQsIEludFBvaW50JiYg
bG9jYQogICAgIGlmICghaXNWYWxpZFNhbXBsZUxvY2F0aW9uKGRvY3VtZW50LCBsb2NhdGlvbikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICAvLyBGSVhNRTogPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIyNTk0Mj4gKFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IHN1cHBvcnQgc2Ft
cGxpbmcgbm9uLVJHQiB2YWx1ZXMgbGlrZSBQMykKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKwogICAgIEFTU0VSVChkb2N1bWVudC52aWV3KCkp
OwotICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChkb2N1bWVudC52aWV3KCkt
PmZyYW1lKCksIEludFJlY3QobG9jYXRpb24sIEludFNpemUoMSwgMSkpLCBTbmFwc2hvdE9wdGlv
bnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nIHwgU25hcHNob3RPcHRpb25zUGFpbnRFdmVy
eXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RG
cmFtZVJlY3QoZG9jdW1lbnQudmlldygpLT5mcmFtZSgpLCBJbnRSZWN0KGxvY2F0aW9uLCBJbnRT
aXplKDEsIDEpKSwgeyB7IFNuYXBzaG90RmxhZ3M6OkV4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRp
bmcsIFNuYXBzaG90RmxhZ3M6OlBhaW50RXZlcnl0aGluZ0V4Y2x1ZGluZ1NlbGVjdGlvbiB9LCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGNvbG9yU3BhY2UgfSk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFw
c2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkg
fSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZm
ZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgY29sb3JTcGFjZSB9LCB7IHsgfSwg
c25hcHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xl
Q2xpZW50LmNwcAppbmRleCAxYzEzMDI2NDc0OTI5ZTU2NGYwZmYwYjk2ZWI0YjI3Njk0Yzk0NWY5
Li4yMjRlNWMzY2YyYzQzNTMwZGI0ZmI4NmVjZmNiNDIzMzBlMmY0N2NmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgIGlmICghdGFyZ2V0KSB7CiAgICAgICAgICAgICAv
LyBJZiBubyB0YXJnZXQgaXMgcHJvdmlkZWQsIGNhcHR1cmUgYW4gaW1hZ2Ugb2YgdGhlIHZpZXdw
b3J0LgogICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9w
YWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+c2l6ZUZvclZpc2libGVDb250ZW50KCkpOwotICAgICAg
ICAgICAgaWYgKGF1dG8gc25hcHNob3QgPSBXZWJDb3JlOjpzbmFwc2hvdEZyYW1lUmVjdChtX3Bh
Z2UubWFpbkZyYW1lKCksIGltYWdlUmVjdCwgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0
ZXMpKQorICAgICAgICAgICAgaWYgKGF1dG8gc25hcHNob3QgPSBXZWJDb3JlOjpzbmFwc2hvdEZy
YW1lUmVjdChtX3BhZ2UubWFpbkZyYW1lKCksIGltYWdlUmVjdCwgeyB7IFNuYXBzaG90RmxhZ3M6
OkluVmlld0Nvb3JkaW5hdGVzIH0gfSkpCiAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IHNuYXBz
aG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29s
dXRpb246Olllcyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5j
cHAKaW5kZXggMDg5NWFiMjQxYTk5MDMxYmQwNDM2MWU4ZGU0ZTI1YjliMWM2NmFhNi4uYTQ5NzJi
NGYwNTUwNTk3OTMwMjAwMzFjNzhhZDQ1Njg0Yjk0ZTBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwCkBAIC0xMjcsMjYgKzEyNywyNyBAQCBzdGF0aWMgYm9vbCBoYXNOb25J
bmxpbmVPclJlcGxhY2VkRWxlbWVudHMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogCiBzdGF0
aWMgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9uc0ZvclRleHRJbmRpY2F0b3JPcHRpb25z
KE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiBvcHRpb25zKQogewotICAgIFNuYXBzaG90
T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3Jh
bFNjYWxlRmFjdG9yOworICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnM7CisgICAg
c25hcHNob3RPcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZsYWdzOjpQYWludFdpdGhJbnRlZ3Jh
bFNjYWxlRmFjdG9yKTsKIAogICAgIGlmICghb3B0aW9ucy5jb250YWlucyhUZXh0SW5kaWNhdG9y
T3B0aW9uOjpQYWludEFsbENvbnRlbnQpKSB7CiAgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5z
KFRleHRJbmRpY2F0b3JPcHRpb246OlBhaW50QmFja2dyb3VuZHMpKQotICAgICAgICAgICAgc25h
cHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uQW5kQmFja2dyb3Vu
ZHNPbmx5OworICAgICAgICAgICAgc25hcHNob3RPcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZs
YWdzOjpQYWludFNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0
aW9uT25seTsKKyAgICAgICAgICAgIHNuYXBzaG90T3B0aW9ucy5mbGFncy5hZGQoU25hcHNob3RG
bGFnczo6UGFpbnRTZWxlY3Rpb25Pbmx5KTsKIAogICAgICAgICAgICAgaWYgKCFvcHRpb25zLmNv
bnRhaW5zKFRleHRJbmRpY2F0b3JPcHRpb246OlJlc3BlY3RUZXh0Q29sb3IpKQotICAgICAgICAg
ICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dDsK
KyAgICAgICAgICAgICAgICBzbmFwc2hvdE9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6
OkZvcmNlQmxhY2tUZXh0KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBzbmFwc2hv
dE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZzsK
KyAgICAgICAgc25hcHNob3RPcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZsYWdzOjpFeGNsdWRl
U2VsZWN0aW9uSGlnaGxpZ2h0aW5nKTsKIAogICAgIHJldHVybiBzbmFwc2hvdE9wdGlvbnM7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJl
Y3QgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIGZsb2F0JiBzY2FsZUZhY3RvciwgY29u
c3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcykKK3N0
YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVj
dCwgU25hcHNob3RPcHRpb25zJiYgb3B0aW9ucywgZmxvYXQmIHNjYWxlRmFjdG9yLCBjb25zdCBW
ZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzKQogewotICAg
IGF1dG8gYnVmZmVyID0gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChmcmFtZSwgcmVjdCwgY2xp
cFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzLCBvcHRpb25zKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoZnJhbWUsIHJlY3QsIGNsaXBSZWN0c0luRG9jdW1l
bnRDb29yZGluYXRlcywgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHNjYWxlRmFjdG9yID0gYnVmZmVyLT5yZXNvbHV0aW9u
U2NhbGUoKTsKQEAgLTE1NSwyMiArMTU2LDIwIEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VT
bmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wCiAK
IHN0YXRpYyBib29sIHRha2VTbmFwc2hvdHMoVGV4dEluZGljYXRvckRhdGEmIGRhdGEsIEZyYW1l
JiBmcmFtZSwgSW50UmVjdCBzbmFwc2hvdFJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBj
bGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpCiB7Ci0gICAgU25hcHNob3RPcHRpb25zIHNu
YXBzaG90T3B0aW9ucyA9IHNuYXBzaG90T3B0aW9uc0ZvclRleHRJbmRpY2F0b3JPcHRpb25zKGRh
dGEub3B0aW9ucyk7Ci0KLSAgICBkYXRhLmNvbnRlbnRJbWFnZSA9IHRha2VTbmFwc2hvdChmcmFt
ZSwgc25hcHNob3RSZWN0LCBzbmFwc2hvdE9wdGlvbnMsIGRhdGEuY29udGVudEltYWdlU2NhbGVG
YWN0b3IsIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAgZGF0YS5jb250ZW50
SW1hZ2UgPSB0YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVjdCwgc25hcHNob3RPcHRpb25z
Rm9yVGV4dEluZGljYXRvck9wdGlvbnMoZGF0YS5vcHRpb25zKSwgZGF0YS5jb250ZW50SW1hZ2VT
Y2FsZUZhY3RvciwgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBpZiAoIWRh
dGEuY29udGVudEltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZGF0YS5v
cHRpb25zLmNvbnRhaW5zKFRleHRJbmRpY2F0b3JPcHRpb246OkluY2x1ZGVTbmFwc2hvdFdpdGhT
ZWxlY3Rpb25IaWdobGlnaHQpKSB7CiAgICAgICAgIGZsb2F0IHNuYXBzaG90U2NhbGVGYWN0b3I7
Ci0gICAgICAgIGRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IHRha2VTbmFwc2hvdChm
cmFtZSwgc25hcHNob3RSZWN0LCBTbmFwc2hvdE9wdGlvbnNOb25lLCBzbmFwc2hvdFNjYWxlRmFj
dG9yLCBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgICAgICBkYXRhLmNvbnRl
bnRJbWFnZVdpdGhIaWdobGlnaHQgPSB0YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVjdCwg
eyB9LCBzbmFwc2hvdFNjYWxlRmFjdG9yLCBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMp
OwogICAgICAgICBBU1NFUlQoIWRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCB8fCBkYXRh
LmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID49IHNuYXBzaG90U2NhbGVGYWN0b3IpOwogICAgIH0K
IAogICAgIGlmIChkYXRhLm9wdGlvbnMuY29udGFpbnMoVGV4dEluZGljYXRvck9wdGlvbjo6SW5j
bHVkZVNuYXBzaG90T2ZBbGxWaXNpYmxlQ29udGVudFdpdGhvdXRTZWxlY3Rpb24pKSB7CiAgICAg
ICAgIGZsb2F0IHNuYXBzaG90U2NhbGVGYWN0b3I7CiAgICAgICAgIGF1dG8gc25hcHNob3RSZWN0
ID0gZnJhbWUudmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSAgICAgICAgZGF0YS5jb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gdGFrZVNuYXBzaG90KGZyYW1lLCBzbmFwc2hvdFJl
Y3QsIFNuYXBzaG90T3B0aW9uc1BhaW50RXZlcnl0aGluZ0V4Y2x1ZGluZ1NlbGVjdGlvbiwgc25h
cHNob3RTY2FsZUZhY3RvciwgeyB9KTsKKyAgICAgICAgZGF0YS5jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uID0gdGFrZVNuYXBzaG90KGZyYW1lLCBzbmFwc2hvdFJlY3QsIHsgeyBTbmFwc2hv
dEZsYWdzOjpQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24gfSB9LCBzbmFwc2hvdFNj
YWxlRmFjdG9yLCB7IH0pOwogICAgICAgICBkYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rp
b25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9v
dFZpZXcoc25hcHNob3RSZWN0KTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0ltYWdlLmNwcAppbmRleCA5MDM0MjhmM2VhNjQzM2E3MGRjMWI4ZDU1ODAxZTM3NzQ2NTk2YzBm
Li43YmM1MzZjZjVkYjUwZTcxYTA0OTViMjhlYjkzNzNlYzExOTllNTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAgLTEyNiw4ICsxMjYsMTAgQEAgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlKQogCiBEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgVGV4dElu
ZGljYXRvckRhdGEmLCBib29sIGZvcmNlQmxhY2tUZXh0KQogewotICAgIFNuYXBzaG90T3B0aW9u
cyBvcHRpb25zID0gZm9yY2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4
dCA6IFNuYXBzaG90T3B0aW9uc05vbmU7Ci0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21T
bmFwc2hvdChzbmFwc2hvdFNlbGVjdGlvbihmcmFtZSwgb3B0aW9ucyksIG51bGxwdHIpOworICAg
IFNuYXBzaG90T3B0aW9ucyBvcHRpb25zOworICAgIGlmIChmb3JjZUJsYWNrVGV4dCkKKyAgICAg
ICAgb3B0aW9ucy5mbGFncy5hZGQoU25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQpOworICAg
IHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3RTZWxlY3Rpb24oZnJh
bWUsIFdURk1vdmUob3B0aW9ucykpLCBudWxscHRyKTsKIH0KIAogI2VuZGlmCkBAIC0xODIsMTQg
KzE4NCwxOCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmIGZy
YW1lLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvbwogICAgIGlmICghc3RhcnRSZW5kZXJl
ciB8fCAhZW5kUmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHkgfCAo
Zm9yY2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA6IFNuYXBzaG90
T3B0aW9uc05vbmUpOworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMu
ZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uT25seSk7CisgICAgaWYgKGZv
cmNlQmxhY2tUZXh0KQorICAgICAgICBvcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZsYWdzOjpG
b3JjZUJsYWNrVGV4dCk7CisKICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydC5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpOwogICAgIGludCBlbmRPZmZzZXQgPSBlbmQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKTsKICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBlbmRPZmZzZXQgPj0g
MCk7CiAgICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVy
ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlbmRPZmZzZXQpIH0sIFNlbGVjdGlvblJhbmdlRGF0YTo6UmVwYWludE1vZGU6Ok5vdGhp
bmcpOwogICAgIC8vIFdlIGNhcHR1cmUgdXNpbmcgc25hcHNob3RGcmFtZVJlY3QoKSBiZWNhdXNl
IHdlIGZha2UgdXAgdGhlIHNlbGVjdGlvbiB1c2luZwogICAgIC8vIEZyYW1lVmlldyBidXQgc25h
cHNob3RTZWxlY3Rpb24oKSB1c2VzIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgRnJhbWUgaXRzZWxm
LgotICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3RGcmFtZVJl
Y3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbigpLmJvdW5kc0NsaXBwZWRUb1Zpc2libGVDb250ZW50
KCksIG9wdGlvbnMpLCBudWxscHRyKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNu
YXBzaG90KHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rpb24oKS5ib3VuZHND
bGlwcGVkVG9WaXNpYmxlQ29udGVudCgpLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbnVsbHB0cik7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCmluZGV4IDE1NDE1NmJkYjQ2ZjFmZjY0OTIxNjczYmNhNDY1MDEwZmY5Y2E3MGUuLjgxNTMw
ZDVlZTljZjI2MGI4MTExZDhkMDY2MjMwNzFjNzc1ZDI5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTg0Miw3ICs4NDIsNyBAQCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5j
dGlvbiBjYWxsYmFjaywgdm9pZAogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFtZTo6
Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogewotICAgIGF1dG8gc25hcHNob3QgPSBz
bmFwc2hvdFNlbGVjdGlvbigqY29yZUZyYW1lKCksIFdlYkNvcmU6OlNuYXBzaG90T3B0aW9uc0Zv
cmNlQmxhY2tUZXh0KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNv
cmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VCbGFja1RleHQgfSB9
KTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAo=
</data>
<flag name="commit-queue"
          id="452333"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430755</attachid>
            <date>2021-06-07 09:29:10 -0700</date>
            <delta_ts>2021-06-07 11:54:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226730-20210607102907.patch</filename>
            <type>text/plain</type>
            <size>21152</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YmIxMzczNjhjYmVhZWQ0NGY4MDQyYzEyYTA1N2Y2N2QxMTJlZTk0Li45
YzdiYjljMzRhNGExMmU4ZjAyMjgyNzNkYWE2OTczMDAwMmZhYWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMjEtMDYtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIENvbnZlcnQgV2ViQ29yZTo6U25hcHNob3RPcHRpb25zIGludG8gYW4gZW51
bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIENv
bnZlcnQgYFNuYXBzaG90T3B0aW9uc2AgaW50byBhbiBgZW51bSBjbGFzcyBTbmFwc2hvdEZsYWdz
YCBhbmQgY3JlYXRlIGEgY29udGFpbmVyIGBzdHJ1Y3QKKyAgICAgICAgU25hcHNob3RPcHRpb25z
YCB0aGF0IGFsc28gYWxsb3dzIGZvciBjaGFuZ2luZyB0aGUgYERlc3RpbmF0aW9uQ29sb3JTcGFj
ZWAgKGRlZmF1bHRzIHRvIHNSR0IpCisgICAgICAgIGFuZCBgUGl4ZWxGb3JtYXRgIChkZWZhdWx0
cyB0byBCR1JBOCkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICog
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpz
bmFwc2hvdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdE5vZGUpOgorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVDb2xv
cik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICogcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90T3B0aW9uc0ZvclRleHRJ
bmRpY2F0b3JPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJDb3JlOjp0YWtlU25hcHNob3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKToKKwogMjAyMS0wNi0w
NyAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
c2UgM0QgcG9pbnRzIHRvIG1hcCB0aGUgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgYm91bmRz
IHRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZjZhMWU4OTNhOThiMGM4YTIyYmY4MDdiM2RiNzllZDMy
ZDRkNzg5Li4yMTRhZGFlYzBiNzE4YzhlMTE2YzhhM2JmMmY2MWUwNTJiNzQyNjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IFdlYkNvcmU6OlNuYXBzaG90T3B0aW9ucyBpbnRv
IGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjczMAorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAg
ICAgICBDb252ZXJ0IGBTbmFwc2hvdE9wdGlvbnNgIGludG8gYW4gYGVudW0gY2xhc3MgU25hcHNo
b3RGbGFnc2AgYW5kIGNyZWF0ZSBhIGNvbnRhaW5lciBgc3RydWN0CisgICAgICAgIFNuYXBzaG90
T3B0aW9uc2AgdGhhdCBhbHNvIGFsbG93cyBmb3IgY2hhbmdpbmcgdGhlIGBEZXN0aW5hdGlvbkNv
bG9yU3BhY2VgIChkZWZhdWx0cyB0byBzUkdCKQorICAgICAgICBhbmQgYFBpeGVsRm9ybWF0YCAo
ZGVmYXVsdHMgdG8gQkdSQTgpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCBjb25zdCk6CisKIDIwMjEtMDYtMDcg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBGaW5kLWluLXBhZ2Ugc2hvdWxkIG1hdGNoIHRleHQgaW5zaWRlIGltYWdlIG92ZXJsYXlzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggZTMyNWMxOGRkNGQ3ZDFlNmQxNTdjMDljZDQ4NGVhZDI0YWY0ODQ2Ny4u
ZjA4MDZlZDM2ZGM2YjcyZmI5YTk3YzRhNGZiMjJiYzhhMDk1NmUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtMTA4MSwxMiArMTA4MSwxMiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IElu
c3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKFByb3RvY29sOjpET006OgogCiBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0
KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBQcm90b2NvbDo6UGFnZTo6Q29v
cmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQogewotICAgIFNuYXBzaG90T3B0aW9ucyBv
cHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZTsKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9u
czsKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBQcm90b2NvbDo6UGFnZTo6Q29vcmRpbmF0
ZVN5c3RlbTo6Vmlld3BvcnQpCi0gICAgICAgIG9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zSW5W
aWV3Q29vcmRpbmF0ZXM7CisgICAgICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6
OkluVmlld0Nvb3JkaW5hdGVzKTsKIAogICAgIEludFJlY3QgcmVjdGFuZ2xlKHgsIHksIHdpZHRo
LCBoZWlnaHQpOwotICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChtX2luc3Bl
Y3RlZFBhZ2UubWFpbkZyYW1lKCksIHJlY3RhbmdsZSwgb3B0aW9ucyk7CisgICAgYXV0byBzbmFw
c2hvdCA9IHNuYXBzaG90RnJhbWVSZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSwgcmVj
dGFuZ2xlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKIAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAyODMxNDIxMTE0
MTM3ZWMxZWI3MDMyYzViYjg5OTkxNzUwODI0YmIwLi4xYThlYjIzNmYzMjZhOWY4ZmI0NWM3ZDk4
OGI4Nzk2YjJiMjM3MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZy
YW1lU25hcHNob3R0aW5nLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zOSw4ICs0MCwxMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlBpeGVsRm9ybWF0LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjcsMTMgKzcwLDEzIEBAIHN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUg
ewogICAgIGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcjsKIH07CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFn
ZVJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFw
c2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25h
cHNob3RPcHRpb25zJiYgb3B0aW9ucykKIHsKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBjbGlwUmVj
dHM7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoZnJhbWUsIGltYWdlUmVj
dCwgY2xpcFJlY3RzLCBvcHRpb25zKTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3RXaXRo
Q2xpcChmcmFtZSwgaW1hZ2VSZWN0LCBjbGlwUmVjdHMsIFdURk1vdmUob3B0aW9ucykpOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZy
YW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBj
bGlwUmVjdHMsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPEltYWdlQnVmZmVyPiBz
bmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2VSZWN0LCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzLCBTbmFwc2hvdE9wdGlv
bnMmJiBvcHRpb25zKQogewogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTgxLDIzICs4NCwyMyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90
RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZQogICAg
IGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxl
Y3Rpb25JblNuYXBzaG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1
ZGVTZWxlY3Rpb247Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2Vs
ZWN0aW9uSGlnaGxpZ2h0aW5nKQorICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBz
aG90RmxhZ3M6OkV4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpKQogICAgICAgICBzaG91bGRJ
bmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uOwogCiAgICAgRnJh
bWVWaWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2UgPSBGcmFt
ZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXM7Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9w
dGlvbnNJblZpZXdDb29yZGluYXRlcykKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhT
bmFwc2hvdEZsYWdzOjpJblZpZXdDb29yZGluYXRlcykpCiAgICAgICAgIGNvb3JkaW5hdGVTcGFj
ZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOwogCiAgICAgU2NvcGVkRnJhbWVQYWludGlu
Z1N0YXRlIHN0YXRlKGZyYW1lLCBudWxscHRyKTsKIAogICAgIGF1dG8gcGFpbnRCZWhhdmlvciA9
IHN0YXRlLnBhaW50QmVoYXZpb3I7Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNG
b3JjZUJsYWNrVGV4dCkKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZs
YWdzOjpGb3JjZUJsYWNrVGV4dCkpCiAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVo
YXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9u
c1BhaW50U2VsZWN0aW9uT25seSkKKyAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFw
c2hvdEZsYWdzOjpQYWludFNlbGVjdGlvbk9ubHkpKQogICAgICAgICBwYWludEJlaGF2aW9yLmFk
ZChQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc1BhaW50U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KQorICAgIGlmIChvcHRp
b25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uQW5kQmFja2dy
b3VuZHNPbmx5KSkKICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2Vs
ZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KTsKLSAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc1BhaW50RXZlcnl0aGluZ0V4Y2x1ZGluZ1NlbGVjdGlvbikKKyAgICBpZiAob3B0aW9ucy5m
bGFncy5jb250YWlucyhTbmFwc2hvdEZsYWdzOjpQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxl
Y3Rpb24pKQogICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRl
U2VsZWN0aW9uKTsKIAogICAgIC8vIE90aGVyIHBhaW50IGJlaGF2aW9ycyBhcmUgc2V0IGJ5IHBh
aW50Q29udGVudHNGb3JTbmFwc2hvdC4KQEAgLTEwOCwxMCArMTExLDEwIEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IElu
dFJlY3QmIGltYWdlCiAgICAgaWYgKGZyYW1lLnBhZ2UoKS0+ZGVsZWdhdGVzU2NhbGluZygpKQog
ICAgICAgICBzY2FsZUZhY3RvciAqPSBmcmFtZS5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwog
Ci0gICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yKQorICAgIGlmIChvcHRpb25zLmZsYWdzLmNvbnRhaW5zKFNuYXBzaG90RmxhZ3M6OlBh
aW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpKQogICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxm
KHNjYWxlRmFjdG9yKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShp
bWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3Rv
ciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3Bh
Y2UudmFsdWVfb3IoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpLCBvcHRpb25zLnBpeGVs
Rm9ybWF0LnZhbHVlX29yKFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUo
LWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKQEAgLTEyNyw3ICsxMzAsNyBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBj
b25zdCBJbnRSZWN0JiBpbWFnZQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZy
YW1lLCBTbmFwc2hvdE9wdGlvbnMmJiBvcHRpb25zKQogewogICAgIGF1dG8mIHNlbGVjdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpOwogCkBAIC0xNDAsMTEgKzE0MywxMSBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU25hcHNob3RPcHRpb25zIG9w
dGlvbnMpCiAgICAgaWYgKHNlbGVjdGlvbkJvdW5kcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgb3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bk9ubHk7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBlbmNsb3NpbmdJbnRS
ZWN0KHNlbGVjdGlvbkJvdW5kcyksIG9wdGlvbnMpOworICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNu
YXBzaG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uT25seSk7CisgICAgcmV0dXJuIHNuYXBzaG90RnJh
bWVSZWN0KGZyYW1lLCBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kcyksIFdURk1vdmUo
b3B0aW9ucykpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYg
ZnJhbWUsIE5vZGUmIG5vZGUpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFt
ZSYgZnJhbWUsIE5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAg
aWYgKCFub2RlLnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU1LDcg
KzE1OCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwg
Tm9kZSYgbm9kZSkKICAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCiAg
ICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0
KGZyYW1lLCBzbmFwcGVkSW50UmVjdChub2RlLnJlbmRlcmVyKCktPnBhaW50aW5nUm9vdFJlY3Qo
dG9wTGV2ZWxSZWN0KSkpOworICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc25h
cHBlZEludFJlY3Qobm9kZS5yZW5kZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVj
dCkpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IDEwMjM3MzhhZjg3ZjczZDQz
MTNhYjE3Zjc5M2U2N2U5NjYzYTM2ZjkuLjA4ODZhNzE0ODY3NjhjODQzMTY2OTM2ODg3ZDhhMzhh
ZmY2YTg2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTMw
LDMxICszMCwzOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFJlY3Q7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIE5v
ZGU7CitlbnVtIGNsYXNzIFBpeGVsRm9ybWF0IDogdWludDhfdDsKIAotZW51bSB7Ci0gICAgU25h
cHNob3RPcHRpb25zTm9uZSA9IDAsCi0gICAgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlv
bkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKLSAgICBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bk9ubHkgPSAxIDw8IDEsCi0gICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMgPSAx
IDw8IDIsCi0gICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDMsCi0gICAg
U25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDQs
Ci0gICAgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uID0g
MSA8PCA1LAotICAgIFNuYXBzaG90T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3Ig
PSAxIDw8IDYsCitlbnVtIGNsYXNzIFNuYXBzaG90RmxhZ3MgOiB1aW50OF90IHsKKyAgICBFeGNs
dWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nID0gMSA8PCAwLAorICAgIFBhaW50U2VsZWN0aW9uT25s
eSA9IDEgPDwgMSwKKyAgICBJblZpZXdDb29yZGluYXRlcyA9IDEgPDwgMiwKKyAgICBGb3JjZUJs
YWNrVGV4dCA9IDEgPDwgMywKKyAgICBQYWludFNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSA9
IDEgPDwgNCwKKyAgICBQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24gPSAxIDw8IDUs
CisgICAgUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvciA9IDEgPDwgNiwKIH07Ci10eXBlZGVm
IHVuc2lnbmVkIFNuYXBzaG90T3B0aW9uczsKIAotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdl
QnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBTbmFwc2hv
dE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0
b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlv
bnNOb25lKTsKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYp
OwotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihG
cmFtZSYsIFNuYXBzaG90T3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOworc3RydWN0IFNu
YXBzaG90T3B0aW9ucyB7CisgICAgT3B0aW9uU2V0PFNuYXBzaG90RmxhZ3M+IGZsYWdzIHsgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdCB7IH07CisgICAgc3Rk
OjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UgeyB9OworfTsKKwor
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFt
ZSYsIGNvbnN0IEludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMmJiA9IHsgfSk7CitSZWZQdHI8SW1h
Z2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0cywgU25hcHNob3RPcHRpb25zJiYg
PSB7IH0pOworUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmLCBOb2RlJiwg
U25hcHNob3RPcHRpb25zJiYgPSB7IH0pOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVm
ZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNuYXBzaG90T3B0aW9ucyYmID0geyB9KTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29sb3JTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2Ft
cGxlci5jcHAKaW5kZXggZDVhMGZlMmNiYWZjN2M4OTQ2ZjNkMDFmZjMyNTJkNmQ1NDY3NDY5NC4u
YmYzNWMyMDkyYzgwMDg4YTlkNmRmNjJiY2FlNDBiNTk2MWQ2OTZhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCkBAIC0xMTYsMTIgKzExNiwxNSBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQs
IEludFBvaW50JiYgbG9jYQogICAgIGlmICghaXNWYWxpZFNhbXBsZUxvY2F0aW9uKGRvY3VtZW50
LCBsb2NhdGlvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIyNTk0Mj4gKFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6
IHN1cHBvcnQgc2FtcGxpbmcgbm9uLVJHQiB2YWx1ZXMgbGlrZSBQMykKKyAgICBhdXRvIGNvbG9y
U3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKwogICAgIEFTU0VSVChkb2N1
bWVudC52aWV3KCkpOwotICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChkb2N1
bWVudC52aWV3KCktPmZyYW1lKCksIEludFJlY3QobG9jYXRpb24sIEludFNpemUoMSwgMSkpLCBT
bmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nIHwgU25hcHNob3RPcHRp
b25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKTsKKyAgICBhdXRvIHNuYXBzaG90
ID0gc25hcHNob3RGcmFtZVJlY3QoZG9jdW1lbnQudmlldygpLT5mcmFtZSgpLCBJbnRSZWN0KGxv
Y2F0aW9uLCBJbnRTaXplKDEsIDEpKSwgeyB7IFNuYXBzaG90RmxhZ3M6OkV4Y2x1ZGVTZWxlY3Rp
b25IaWdobGlnaHRpbmcsIFNuYXBzaG90RmxhZ3M6OlBhaW50RXZlcnl0aGluZ0V4Y2x1ZGluZ1Nl
bGVjdGlvbiB9LCBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbG9yU3BhY2UgfSk7CiAgICAgaWYgKCFz
bmFwc2hvdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6ZSgpIH0pOworICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgY29sb3JTcGFj
ZSB9LCB7IHsgfSwgc25hcHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAxYzEzMDI2NDc0OTI5ZTU2NGYwZmYwYjk2ZWI0
YjI3Njk0Yzk0NWY5Li4yMjRlNWMzY2YyYzQzNTMwZGI0ZmI4NmVjZmNiNDIzMzBlMmY0N2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtNDA0LDcgKzQw
NCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgIGlmICghdGFyZ2V0KSB7CiAg
ICAgICAgICAgICAvLyBJZiBubyB0YXJnZXQgaXMgcHJvdmlkZWQsIGNhcHR1cmUgYW4gaW1hZ2Ug
b2YgdGhlIHZpZXdwb3J0LgogICAgICAgICAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+c2l6ZUZvclZpc2libGVDb250ZW50
KCkpOwotICAgICAgICAgICAgaWYgKGF1dG8gc25hcHNob3QgPSBXZWJDb3JlOjpzbmFwc2hvdEZy
YW1lUmVjdChtX3BhZ2UubWFpbkZyYW1lKCksIGltYWdlUmVjdCwgU25hcHNob3RPcHRpb25zSW5W
aWV3Q29vcmRpbmF0ZXMpKQorICAgICAgICAgICAgaWYgKGF1dG8gc25hcHNob3QgPSBXZWJDb3Jl
OjpzbmFwc2hvdEZyYW1lUmVjdChtX3BhZ2UubWFpbkZyYW1lKCksIGltYWdlUmVjdCwgeyB7IFNu
YXBzaG90RmxhZ3M6OkluVmlld0Nvb3JkaW5hdGVzIH0gfSkpCiAgICAgICAgICAgICAgICAgZGF0
YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQ
cmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4
dEluZGljYXRvci5jcHAKaW5kZXggMDg5NWFiMjQxYTk5MDMxYmQwNDM2MWU4ZGU0ZTI1YjliMWM2
NmFhNi4uYTQ5NzJiNGYwNTUwNTk3OTMwMjAwMzFjNzhhZDQ1Njg0Yjk0ZTBkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0xMjcsMjYgKzEyNywyNyBAQCBzdGF0aWMg
Ym9vbCBoYXNOb25JbmxpbmVPclJlcGxhY2VkRWxlbWVudHMoY29uc3QgU2ltcGxlUmFuZ2UmIHJh
bmdlKQogCiBzdGF0aWMgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9uc0ZvclRleHRJbmRp
Y2F0b3JPcHRpb25zKE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiBvcHRpb25zKQogewot
ICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNQYWlu
dFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yOworICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9w
dGlvbnM7CisgICAgc25hcHNob3RPcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZsYWdzOjpQYWlu
dFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKTsKIAogICAgIGlmICghb3B0aW9ucy5jb250YWlucyhU
ZXh0SW5kaWNhdG9yT3B0aW9uOjpQYWludEFsbENvbnRlbnQpKSB7CiAgICAgICAgIGlmIChvcHRp
b25zLmNvbnRhaW5zKFRleHRJbmRpY2F0b3JPcHRpb246OlBhaW50QmFja2dyb3VuZHMpKQotICAg
ICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9u
QW5kQmFja2dyb3VuZHNPbmx5OworICAgICAgICAgICAgc25hcHNob3RPcHRpb25zLmZsYWdzLmFk
ZChTbmFwc2hvdEZsYWdzOjpQYWludFNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9u
c1BhaW50U2VsZWN0aW9uT25seTsKKyAgICAgICAgICAgIHNuYXBzaG90T3B0aW9ucy5mbGFncy5h
ZGQoU25hcHNob3RGbGFnczo6UGFpbnRTZWxlY3Rpb25Pbmx5KTsKIAogICAgICAgICAgICAgaWYg
KCFvcHRpb25zLmNvbnRhaW5zKFRleHRJbmRpY2F0b3JPcHRpb246OlJlc3BlY3RUZXh0Q29sb3Ip
KQotICAgICAgICAgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNGb3Jj
ZUJsYWNrVGV4dDsKKyAgICAgICAgICAgICAgICBzbmFwc2hvdE9wdGlvbnMuZmxhZ3MuYWRkKFNu
YXBzaG90RmxhZ3M6OkZvcmNlQmxhY2tUZXh0KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAg
ICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhp
Z2hsaWdodGluZzsKKyAgICAgICAgc25hcHNob3RPcHRpb25zLmZsYWdzLmFkZChTbmFwc2hvdEZs
YWdzOjpFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKTsKIAogICAgIHJldHVybiBzbmFwc2hv
dE9wdGlvbnM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFtZSYg
ZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIGZsb2F0JiBzY2Fs
ZUZhY3RvciwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0c0luRG9jdW1lbnRDb29y
ZGluYXRlcykKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUs
IEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRpb25zJiYgb3B0aW9ucywgZmxvYXQmIHNjYWxlRmFj
dG9yLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5h
dGVzKQogewotICAgIGF1dG8gYnVmZmVyID0gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChmcmFt
ZSwgcmVjdCwgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzLCBvcHRpb25zKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoZnJhbWUsIHJlY3QsIGNsaXBS
ZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcywgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHNjYWxlRmFjdG9yID0gYnVmZmVy
LT5yZXNvbHV0aW9uU2NhbGUoKTsKQEAgLTE1NSwyMiArMTU2LDIwIEBAIHN0YXRpYyBSZWZQdHI8
SW1hZ2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RP
cHRpb25zIG9wCiAKIHN0YXRpYyBib29sIHRha2VTbmFwc2hvdHMoVGV4dEluZGljYXRvckRhdGEm
IGRhdGEsIEZyYW1lJiBmcmFtZSwgSW50UmVjdCBzbmFwc2hvdFJlY3QsIGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpCiB7Ci0gICAgU25hcHNo
b3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHNuYXBzaG90T3B0aW9uc0ZvclRleHRJbmRpY2F0
b3JPcHRpb25zKGRhdGEub3B0aW9ucyk7Ci0KLSAgICBkYXRhLmNvbnRlbnRJbWFnZSA9IHRha2VT
bmFwc2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBzbmFwc2hvdE9wdGlvbnMsIGRhdGEuY29udGVu
dEltYWdlU2NhbGVGYWN0b3IsIGNsaXBSZWN0c0luRG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAg
ZGF0YS5jb250ZW50SW1hZ2UgPSB0YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVjdCwgc25h
cHNob3RPcHRpb25zRm9yVGV4dEluZGljYXRvck9wdGlvbnMoZGF0YS5vcHRpb25zKSwgZGF0YS5j
b250ZW50SW1hZ2VTY2FsZUZhY3RvciwgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzKTsK
ICAgICBpZiAoIWRhdGEuY29udGVudEltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoZGF0YS5vcHRpb25zLmNvbnRhaW5zKFRleHRJbmRpY2F0b3JPcHRpb246OkluY2x1ZGVT
bmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQpKSB7CiAgICAgICAgIGZsb2F0IHNuYXBzaG90
U2NhbGVGYWN0b3I7Ci0gICAgICAgIGRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IHRh
a2VTbmFwc2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBTbmFwc2hvdE9wdGlvbnNOb25lLCBzbmFw
c2hvdFNjYWxlRmFjdG9yLCBjbGlwUmVjdHNJbkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgICAg
ICBkYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgPSB0YWtlU25hcHNob3QoZnJhbWUsIHNu
YXBzaG90UmVjdCwgeyB9LCBzbmFwc2hvdFNjYWxlRmFjdG9yLCBjbGlwUmVjdHNJbkRvY3VtZW50
Q29vcmRpbmF0ZXMpOwogICAgICAgICBBU1NFUlQoIWRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hs
aWdodCB8fCBkYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID49IHNuYXBzaG90U2NhbGVGYWN0
b3IpOwogICAgIH0KIAogICAgIGlmIChkYXRhLm9wdGlvbnMuY29udGFpbnMoVGV4dEluZGljYXRv
ck9wdGlvbjo6SW5jbHVkZVNuYXBzaG90T2ZBbGxWaXNpYmxlQ29udGVudFdpdGhvdXRTZWxlY3Rp
b24pKSB7CiAgICAgICAgIGZsb2F0IHNuYXBzaG90U2NhbGVGYWN0b3I7CiAgICAgICAgIGF1dG8g
c25hcHNob3RSZWN0ID0gZnJhbWUudmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKLSAgICAg
ICAgZGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gdGFrZVNuYXBzaG90KGZyYW1l
LCBzbmFwc2hvdFJlY3QsIFNuYXBzaG90T3B0aW9uc1BhaW50RXZlcnl0aGluZ0V4Y2x1ZGluZ1Nl
bGVjdGlvbiwgc25hcHNob3RTY2FsZUZhY3RvciwgeyB9KTsKKyAgICAgICAgZGF0YS5jb250ZW50
SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gdGFrZVNuYXBzaG90KGZyYW1lLCBzbmFwc2hvdFJlY3Qs
IHsgeyBTbmFwc2hvdEZsYWdzOjpQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24gfSB9
LCBzbmFwc2hvdFNjYWxlRmFjdG9yLCB7IH0pOwogICAgICAgICBkYXRhLmNvbnRlbnRJbWFnZVdp
dGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5j
b250ZW50c1RvUm9vdFZpZXcoc25hcHNob3RSZWN0KTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCA5MDM0MjhmM2VhNjQzM2E3MGRjMWI4ZDU1ODAx
ZTM3NzQ2NTk2YzBmLi43YmM1MzZjZjVkYjUwZTcxYTA0OTViMjhlYjkzNzNlYzExOTllNTgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAgLTEyNiw4ICsxMjYsMTAgQEAg
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBu
b2RlKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBm
cmFtZSwgVGV4dEluZGljYXRvckRhdGEmLCBib29sIGZvcmNlQmxhY2tUZXh0KQogewotICAgIFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zID0gZm9yY2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNG
b3JjZUJsYWNrVGV4dCA6IFNuYXBzaG90T3B0aW9uc05vbmU7Ci0gICAgcmV0dXJuIGNyZWF0ZURy
YWdJbWFnZUZyb21TbmFwc2hvdChzbmFwc2hvdFNlbGVjdGlvbihmcmFtZSwgb3B0aW9ucyksIG51
bGxwdHIpOworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zOworICAgIGlmIChmb3JjZUJsYWNr
VGV4dCkKKyAgICAgICAgb3B0aW9ucy5mbGFncy5hZGQoU25hcHNob3RGbGFnczo6Rm9yY2VCbGFj
a1RleHQpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3RT
ZWxlY3Rpb24oZnJhbWUsIFdURk1vdmUob3B0aW9ucykpLCBudWxscHRyKTsKIH0KIAogI2VuZGlm
CkBAIC0xODIsMTQgKzE4NCwxOCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFu
Z2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvbwogICAgIGlmICgh
c3RhcnRSZW5kZXJlciB8fCAhZW5kUmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVj
dGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4
dCA6IFNuYXBzaG90T3B0aW9uc05vbmUpOworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zOwor
ICAgIG9wdGlvbnMuZmxhZ3MuYWRkKFNuYXBzaG90RmxhZ3M6OlBhaW50U2VsZWN0aW9uT25seSk7
CisgICAgaWYgKGZvcmNlQmxhY2tUZXh0KQorICAgICAgICBvcHRpb25zLmZsYWdzLmFkZChTbmFw
c2hvdEZsYWdzOjpGb3JjZUJsYWNrVGV4dCk7CisKICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFy
dC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIGludCBlbmRPZmZzZXQgPSBlbmQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPj0gMCAmJiBl
bmRPZmZzZXQgPj0gMCk7CiAgICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJl
ciwgZW5kUmVuZGVyZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydE9mZnNldCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpIH0sIFNlbGVjdGlvblJhbmdlRGF0YTo6UmVwYWlu
dE1vZGU6Ok5vdGhpbmcpOwogICAgIC8vIFdlIGNhcHR1cmUgdXNpbmcgc25hcHNob3RGcmFtZVJl
Y3QoKSBiZWNhdXNlIHdlIGZha2UgdXAgdGhlIHNlbGVjdGlvbiB1c2luZwogICAgIC8vIEZyYW1l
VmlldyBidXQgc25hcHNob3RTZWxlY3Rpb24oKSB1c2VzIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUg
RnJhbWUgaXRzZWxmLgotICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25h
cHNob3RGcmFtZVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbigpLmJvdW5kc0NsaXBwZWRUb1Zp
c2libGVDb250ZW50KCksIG9wdGlvbnMpLCBudWxscHRyKTsKKyAgICByZXR1cm4gY3JlYXRlRHJh
Z0ltYWdlRnJvbVNuYXBzaG90KHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rp
b24oKS5ib3VuZHNDbGlwcGVkVG9WaXNpYmxlQ29udGVudCgpLCBXVEZNb3ZlKG9wdGlvbnMpKSwg
bnVsbHB0cik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCmluZGV4IDE1NDE1NmJkYjQ2ZjFmZjY0OTIxNjczYmNhNDY1MDEwZmY5
Y2E3MGUuLjgxNTMwZDVlZTljZjI2MGI4MTExZDhkMDY2MjMwNzFjNzc1ZDI5MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTg0Miw3ICs4
NDIsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJh
bWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZAogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogewotICAgIGF1dG8g
c25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlvbigqY29yZUZyYW1lKCksIFdlYkNvcmU6OlNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gc25hcHNob3RT
ZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCB7IHsgV2ViQ29yZTo6U25hcHNob3RGbGFnczo6Rm9yY2VC
bGFja1RleHQgfSB9KTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>