<?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>221934</bug_id>
          
          <creation_ts>2021-02-15 15:47:17 -0800</creation_ts>
          <short_desc>PCM: Add high entropy attributionSourceNonce attribute to anchor tags</short_desc>
          <delta_ts>2021-02-15 22:26:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local 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=221945</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>221291</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729435</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 15:47:17 -0800</bug_when>
    <thetext>The source site needs to provide an optional high entropy nonce with which PCM can asynchronously validate its subsequent, asynchronous request for a signature of its unlinkable token.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729436</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 15:47:44 -0800</bug_when>
    <thetext>&lt;rdar://73581230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729439</commentid>
    <comment_count>2</comment_count>
      <attachid>420388</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 15:56:03 -0800</bug_when>
    <thetext>Created attachment 420388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729489</commentid>
    <comment_count>3</comment_count>
      <attachid>420388</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-15 17:45:58 -0800</bug_when>
    <thetext>Comment on attachment 420388
Patch

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

Overall, LGTM. Please address my comments.

&gt; Source/WebCore/html/HTMLAnchorElement.cpp:458
&gt; +        if (ephemeralNonce.isValid())

Can we just use if but for early return and remove the else statement?
if (!ephemeralNonce.isValid()) {
    document().addConsoleMessage(MessageSource::Other, MessageLevel::Warning, &quot;attributionsourcenonce was not valid.&quot;_s);
    return WTF::nullopt;
}

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:204
&gt; +    struct EphemeralSourceNonce {

Seem unnecessary to have ephemeral? Every nonce is supposed to be used once?

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:213
&gt; +        bool isValid() const

Instead of dong a separate isValid check from the caller. Maybe we can have a create method that only returns a valid object if the input is valid. Otherwise a null opt?

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:215
&gt; +            Vector&lt;uint8_t&gt; digest;

So we don&apos;t store the nonce? Then I guess we can just check the string&apos;s length? Not necessary need to decode it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729496</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 17:54:57 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #3)
&gt; Comment on attachment 420388 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420388&amp;action=review
&gt; 
&gt; Overall, LGTM. Please address my comments.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAnchorElement.cpp:458
&gt; &gt; +        if (ephemeralNonce.isValid())
&gt; 
&gt; Can we just use if but for early return and remove the else statement?
&gt; if (!ephemeralNonce.isValid()) {
&gt;     document().addConsoleMessage(MessageSource::Other,
&gt; MessageLevel::Warning, &quot;attributionsourcenonce was not valid.&quot;_s);
&gt;     return WTF::nullopt;
&gt; }

Yes! I often miss these these things when I add the fail path last.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.h:204
&gt; &gt; +    struct EphemeralSourceNonce {
&gt; 
&gt; Seem unnecessary to have ephemeral? Every nonce is supposed to be used once?

I chose this name to make it reasonably clear that this nonce should not be stored in the database. We will transfer it to the network process where PCM data is then persisted. This value should never be persisted since it&apos;s tied to the user. That&apos;s why I call it ephemeral.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.h:213
&gt; &gt; +        bool isValid() const
&gt; 
&gt; Instead of dong a separate isValid check from the caller. Maybe we can have
&gt; a create method that only returns a valid object if the input is valid.
&gt; Otherwise a null opt?

Normally I&apos;d only allow objects to be created if the input is valid but I believe it&apos;s the IPC encoding/decoding that requires empty objects to be allowed. I can certainly make the getter only return valid nonces but since this is a struct, I think any caller can just grab it.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.h:215
&gt; &gt; +            Vector&lt;uint8_t&gt; digest;
&gt; 
&gt; So we don&apos;t store the nonce? Then I guess we can just check the string&apos;s
&gt; length? Not necessary need to decode it?

We don&apos;t *persist* it but we will transfer it to the network process and use it in a request.

We&apos;d have to check that its characters are in the valid set for Base64URL and that it is exactly 128 bits. I don&apos;t know if there&apos;s an exact length match between encoded values and 128 bits. Maybe the allowed 64 characters makes it align that way?

Thanks for your comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729500</commentid>
    <comment_count>5</comment_count>
      <attachid>420388</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-15 18:04:10 -0800</bug_when>
    <thetext>Comment on attachment 420388
Patch

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

&gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:213
&gt;&gt;&gt; +        bool isValid() const
&gt;&gt; 
&gt;&gt; Instead of dong a separate isValid check from the caller. Maybe we can have a create method that only returns a valid object if the input is valid. Otherwise a null opt?
&gt; 
&gt; Normally I&apos;d only allow objects to be created if the input is valid but I believe it&apos;s the IPC encoding/decoding that requires empty objects to be allowed. I can certainly make the getter only return valid nonces but since this is a struct, I think any caller can just grab it.

Got you.

&gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:215
&gt;&gt;&gt; +            Vector&lt;uint8_t&gt; digest;
&gt;&gt; 
&gt;&gt; So we don&apos;t store the nonce? Then I guess we can just check the string&apos;s length? Not necessary need to decode it?
&gt; 
&gt; We don&apos;t *persist* it but we will transfer it to the network process and use it in a request.
&gt; 
&gt; We&apos;d have to check that its characters are in the valid set for Base64URL and that it is exactly 128 bits. I don&apos;t know if there&apos;s an exact length match between encoded values and 128 bits. Maybe the allowed 64 characters makes it align that way?
&gt; 
&gt; Thanks for your comments!

It will be good to investigate, then we can save the decoding steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729502</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 18:12:39 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #5)
&gt; Comment on attachment 420388 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420388&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:213
&gt; &gt;&gt;&gt; +        bool isValid() const
&gt; &gt;&gt; 
&gt; &gt;&gt; Instead of dong a separate isValid check from the caller. Maybe we can have a create method that only returns a valid object if the input is valid. Otherwise a null opt?
&gt; &gt; 
&gt; &gt; Normally I&apos;d only allow objects to be created if the input is valid but I believe it&apos;s the IPC encoding/decoding that requires empty objects to be allowed. I can certainly make the getter only return valid nonces but since this is a struct, I think any caller can just grab it.
&gt; 
&gt; Got you.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:215
&gt; &gt;&gt;&gt; +            Vector&lt;uint8_t&gt; digest;
&gt; &gt;&gt; 
&gt; &gt;&gt; So we don&apos;t store the nonce? Then I guess we can just check the string&apos;s length? Not necessary need to decode it?
&gt; &gt; 
&gt; &gt; We don&apos;t *persist* it but we will transfer it to the network process and use it in a request.
&gt; &gt; 
&gt; &gt; We&apos;d have to check that its characters are in the valid set for Base64URL and that it is exactly 128 bits. I don&apos;t know if there&apos;s an exact length match between encoded values and 128 bits. Maybe the allowed 64 characters makes it align that way?
&gt; &gt; 
&gt; &gt; Thanks for your comments!
&gt; 
&gt; It will be good to investigate, then we can save the decoding steps.

Would it be OK with you to land it with decoding and investigate later? I&apos;ve made the other changes and can get a new patch up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729506</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-15 18:32:43 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #6)
&gt; (In reply to Jiewen Tan from comment #5)
&gt; &gt; Comment on attachment 420388 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=420388&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:213
&gt; &gt; &gt;&gt;&gt; +        bool isValid() const
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Instead of dong a separate isValid check from the caller. Maybe we can have a create method that only returns a valid object if the input is valid. Otherwise a null opt?
&gt; &gt; &gt; 
&gt; &gt; &gt; Normally I&apos;d only allow objects to be created if the input is valid but I believe it&apos;s the IPC encoding/decoding that requires empty objects to be allowed. I can certainly make the getter only return valid nonces but since this is a struct, I think any caller can just grab it.
&gt; &gt; 
&gt; &gt; Got you.
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:215
&gt; &gt; &gt;&gt;&gt; +            Vector&lt;uint8_t&gt; digest;
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; So we don&apos;t store the nonce? Then I guess we can just check the string&apos;s length? Not necessary need to decode it?
&gt; &gt; &gt; 
&gt; &gt; &gt; We don&apos;t *persist* it but we will transfer it to the network process and use it in a request.
&gt; &gt; &gt; 
&gt; &gt; &gt; We&apos;d have to check that its characters are in the valid set for Base64URL and that it is exactly 128 bits. I don&apos;t know if there&apos;s an exact length match between encoded values and 128 bits. Maybe the allowed 64 characters makes it align that way?
&gt; &gt; &gt; 
&gt; &gt; &gt; Thanks for your comments!
&gt; &gt; 
&gt; &gt; It will be good to investigate, then we can save the decoding steps.
&gt; 
&gt; Would it be OK with you to land it with decoding and investigate later? I&apos;ve
&gt; made the other changes and can get a new patch up.

Sure, let&apos;s file a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729507</commentid>
    <comment_count>8</comment_count>
      <attachid>420411</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 18:33:19 -0800</bug_when>
    <thetext>Created attachment 420411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729508</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 18:34:48 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #7)
&gt; (In reply to John Wilander from comment #6)
&gt; &gt; (In reply to Jiewen Tan from comment #5)
&gt; &gt; &gt; Comment on attachment 420388 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=420388&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:213
&gt; &gt; &gt; &gt;&gt;&gt; +        bool isValid() const
&gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt;&gt; Instead of dong a separate isValid check from the caller. Maybe we can have a create method that only returns a valid object if the input is valid. Otherwise a null opt?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Normally I&apos;d only allow objects to be created if the input is valid but I believe it&apos;s the IPC encoding/decoding that requires empty objects to be allowed. I can certainly make the getter only return valid nonces but since this is a struct, I think any caller can just grab it.
&gt; &gt; &gt; 
&gt; &gt; &gt; Got you.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt;&gt; Source/WebCore/loader/PrivateClickMeasurement.h:215
&gt; &gt; &gt; &gt;&gt;&gt; +            Vector&lt;uint8_t&gt; digest;
&gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt;&gt; So we don&apos;t store the nonce? Then I guess we can just check the string&apos;s length? Not necessary need to decode it?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; We don&apos;t *persist* it but we will transfer it to the network process and use it in a request.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; We&apos;d have to check that its characters are in the valid set for Base64URL and that it is exactly 128 bits. I don&apos;t know if there&apos;s an exact length match between encoded values and 128 bits. Maybe the allowed 64 characters makes it align that way?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Thanks for your comments!
&gt; &gt; &gt; 
&gt; &gt; &gt; It will be good to investigate, then we can save the decoding steps.
&gt; &gt; 
&gt; &gt; Would it be OK with you to land it with decoding and investigate later? I&apos;ve
&gt; &gt; made the other changes and can get a new patch up.
&gt; 
&gt; Sure, let&apos;s file a follow up.

I&apos;ll file a follow-up and add a fixme. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729511</commentid>
    <comment_count>10</comment_count>
      <attachid>420412</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 18:38:10 -0800</bug_when>
    <thetext>Created attachment 420412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729513</commentid>
    <comment_count>11</comment_count>
      <attachid>420412</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2021-02-15 18:41:25 -0800</bug_when>
    <thetext>Comment on attachment 420412
Patch

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

r=me. Please address the FIXME before landing.

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:214
&gt; +        // https://bugs.webkit.org/show_bug.cgi?id=221945

I think it should be FIXME(221945)? Instead of having the whole bug report URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729528</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 19:40:30 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #11)
&gt; Comment on attachment 420412 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420412&amp;action=review
&gt; 
&gt; r=me. Please address the FIXME before landing.
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.h:214
&gt; &gt; +        // https://bugs.webkit.org/show_bug.cgi?id=221945
&gt; 
&gt; I think it should be FIXME(221945)? Instead of having the whole bug report
&gt; URL.

Huh. I&apos;ve always heard people want a clickable URL in there and I mostly hear people want it on its own line unless the comment is super short. Looking through the code, I can see all kinds of formats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729529</commentid>
    <comment_count>13</comment_count>
      <attachid>420412</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-15 19:41:00 -0800</bug_when>
    <thetext>Comment on attachment 420412
Patch

Thanks, Jiewen!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729542</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-15 20:11:37 -0800</bug_when>
    <thetext>Committed r272894: &lt;https://commits.webkit.org/r272894&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420412.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420388</attachid>
            <date>2021-02-15 15:56:03 -0800</date>
            <delta_ts>2021-02-15 18:33:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221934-20210215155603.patch</filename>
            <type>text/plain</type>
            <size>10560</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uNDk2ZWY5ZTgxYzA3YWM3MzVmZDI1ZjFkZDIwZWJk
NTkzZjQyMzI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTE1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogQWRkIGhpZ2gg
ZW50cm9weSBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlIGF0dHJpYnV0ZSB0byBhbmNob3IgdGFncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTM0Cisg
ICAgICAgIDxyZGFyOi8vNzM1ODEyMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCAoUENNKSwgdGhl
IHNvdXJjZSBzaXRlIHNob3VsZCBoYXZlIHRoZSBvcHRpb24gdG8KKyAgICAgICAgcHJvdmlkZSBh
IGhpZ2ggZW50cm9weSBub25jZSB3aXRoIHdoaWNoIFBDTSBjYW4gYXN5bmNocm9ub3VzbHkgdmFs
aWRhdGUgaXRzCisgICAgICAgIHN1YnNlcXVlbnQsIGFzeW5jaHJvbm91cyByZXF1ZXN0IGZvciBh
IHNpZ25hdHVyZSBvZiBpdHMgdW5saW5rYWJsZSB0b2tlbi4KKworICAgICAgICBUaGUgbm9uY2Ug
YXR0cmlidXRlJ3MgbmFtZSBpcyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlIGFuZCBpdCdzIGEKKyAg
ICAgICAgMTI4LWJpdC8xNi1ieXRlIEJhc2U2NFVSTCBlbmNvZGVkIHN0cmluZy4KKworICAgICAg
ICBUaGUgYXR0cmlidXRlIGlzIGJlaGluZCB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZwor
ICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvbi4KKworICAgICAg
ICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICog
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OkVwaGVtZXJhbFNvdXJj
ZU5vbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxTb3VyY2VOb25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0RXBoZW1lcmFsU291cmNlTm9uY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmVwaGVtZXJhbFNvdXJjZU5vbmNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjbGVhckVw
aGVtZXJhbFNvdXJjZU5vbmNlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisKIDIw
MjEtMDItMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgV2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkIHRvIFBhZ2UgU2V0dGlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggOThhYmJh
MTdkNWJiZTc4OGE1NDY4NjRiY2E4NWRiYTMyNjNhMTc4Ni4uNjY0ZDQ4M2UzNzZmNmM1MTE2ZjM5
ZmU1ZDA1YmRkNTIxMmZhNGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKQEAgLTQ1MCw3ICs0NTAsMjAgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW4KICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1cm4gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgeyBTb3VyY2VJRChhdHRyaWJ1dGlvblNvdXJjZUlELnZhbHVlKCkpLCBT
b3VyY2VTaXRlKGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4pLCBBdHRyaWJ1dGVPblNpdGUoYXR0
cmlidXRlT25VUkwpIH07CisgICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50IHsgU291cmNlSUQoYXR0cmlidXRpb25Tb3VyY2VJRC52YWx1ZSgp
KSwgU291cmNlU2l0ZShkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluKSwgQXR0cmlidXRlT25TaXRl
KGF0dHJpYnV0ZU9uVVJMKSB9OworCisgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0
ciA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRpb25zb3VyY2Vub25j
ZUF0dHIpOworICAgIGlmICghYXR0cmlidXRpb25Tb3VyY2VOb25jZUF0dHIuaXNFbXB0eSgpKSB7
CisgICAgICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
RXBoZW1lcmFsU291cmNlTm9uY2UgeyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ciB9OworICAg
ICAgICBpZiAoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKQorICAgICAgICAgICAgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuc2V0RXBoZW1lcmFsU291cmNlTm9uY2UoV1RGTW92ZShlcGhlbWVyYWxO
b25jZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgImF0
dHJpYnV0aW9uc291cmNlbm9uY2Ugd2FzIG5vdCB2YWxpZC4iX3MpOworICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDsKIH0KIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xp
Y2soRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50Lmlk
bAppbmRleCAxNDhhZThmYTk0M2RlNzFjNGI4OGY3NGRiMWQ4NjQ1MmQ4ZjI1YzExLi5lOWE2ZDNl
MTYxNzM4ZTI4Njg5NGJhMzQ4MDI5NDRlNTFmNWUxZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmlkbApAQCAtMjMsNiArMjMsNyBAQAogXSBpbnRlcmZhY2UgSFRN
TEFuY2hvckVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgRW5hYmxlZEJ5U2V0dGluZz1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyBhdHRyaWJ1dGlvbnNvdXJjZWlkOwogICAgIFtDRVJlYWN0aW9ucz1O
b3ROZWVkZWQsIEVuYWJsZWRCeVNldHRpbmc9UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYXR0cmlidXRlb247CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgRW5hYmxlZEJ5U2V0dGluZz1Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJl
dmVudGlvbiwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhdHRyaWJ1dGlvbnNvdXJjZW5v
bmNlOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01T
dHJpbmcgY2hhcnNldDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGNvb3JkczsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBDb25k
aXRpb25hbD1ET1dOTE9BRF9BVFRSSUJVVEUsIEVuYWJsZWRCeVNldHRpbmc9RG93bmxvYWRBdHRy
aWJ1dGUsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZG93bmxvYWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDBjZmViYmI3NGRlZWNhM2YxMDg3
NmFlNjdmZTBlMDQ3NDljZmUxNTYuLjUwMWVjMDAwNTgxMTdmNmE0MGNiNWUzYmFhNmRhYzVlMTA3
YWY1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC02
OSw2ICs2OSw3IEBAIGFyaWEtdmFsdWV0ZXh0CiBhcwogYXN5bmMKIGF0dHJpYnV0aW9uc291cmNl
aWQKK2F0dHJpYnV0aW9uc291cmNlbm9uY2UKIGF0dHJpYnV0ZW9uCiBhdXRvY29tcGxldGUKIGF1
dG9mb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuaAppbmRleCAwMWYwZDhmNzE2YTk1NjllYmRkNTY0MGZmOGQyZDFhZmI1NTA1MTk0Li45MWI5
ZDFhN2M0ZjU2MjBlYTcyNTEzZmRhZmE3MGQ2OTdmY2E5MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTIwMCw2ICsyMDEsMjYgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAgIH07CiAKKyAgICBz
dHJ1Y3QgRXBoZW1lcmFsU291cmNlTm9uY2UgeworICAgICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IFJlcXVpcmVkTnVtYmVyT2ZCeXRlcyA9IDE2OworCisgICAgICAgIEVwaGVtZXJhbFNv
dXJjZU5vbmNlKCkgPSBkZWZhdWx0OworICAgICAgICBleHBsaWNpdCBFcGhlbWVyYWxTb3VyY2VO
b25jZShjb25zdCBTdHJpbmcmIG5vbmNlU3RyaW5nKQorICAgICAgICAgICAgOiBub25jZSB7IG5v
bmNlU3RyaW5nIH0KKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdDsK
KyAgICAgICAgICAgIGlmICghYmFzZTY0VVJMRGVjb2RlKG5vbmNlLCBkaWdlc3QpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBkaWdlc3Quc2l6ZSgp
ID09IFJlcXVpcmVkTnVtYmVyT2ZCeXRlczsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBu
b25jZTsKKyAgICB9OworCiAgICAgc3RydWN0IFByaW9yaXR5IHsKICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBNYXhFbnRyb3B5ID0gNjM7CiAKQEAgLTI1NSw2ICsyNzYsOSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEpTT046Ok9iamVjdD4ganNvbigpIGNvbnN0
OwogICAgIGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZVNpdGU7IH07CiAgICAgY29uc3QgQXR0cmlidXRlT25TaXRlJiBhdHRyaWJ1dGVPblNpdGUo
KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZU9uU2l0ZTsgfTsKKyAgICB2b2lkIHNldEVwaGVt
ZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNlJiYgbm9uY2UpIHsgbV9lcGhlbWVy
YWxTb3VyY2VOb25jZSA9IFdURk1vdmUobm9uY2UpOyB9OworICAgIE9wdGlvbmFsPEVwaGVtZXJh
bFNvdXJjZU5vbmNlPiBlcGhlbWVyYWxTb3VyY2VOb25jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXBo
ZW1lcmFsU291cmNlTm9uY2U7IH07CisgICAgdm9pZCBjbGVhckVwaGVtZXJhbFNvdXJjZU5vbmNl
KCkgeyBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlICA9IFdURjo6bnVsbG9wdDsgfTsKICAgICBXYWxs
VGltZSB0aW1lT2ZBZENsaWNrKCkgY29uc3QgeyByZXR1cm4gbV90aW1lT2ZBZENsaWNrOyB9CiAg
ICAgT3B0aW9uYWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2VuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZWFybGllc3RUaW1lVG9TZW5kOyB9OwogICAgIHZvaWQgc2V0RWFybGllc3RUaW1lVG9TZW5k
KFdhbGxUaW1lIHRpbWUpIHsgbV9lYXJsaWVzdFRpbWVUb1NlbmQgPSB0aW1lOyB9CkBAIC0yNzgs
NiArMzAyLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wdXJjaGFzZXI7CiAgICAgV2FsbFRp
bWUgbV90aW1lT2ZBZENsaWNrOwogCisgICAgT3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+
IG1fZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAgT3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YT4gbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBt
X2VhcmxpZXN0VGltZVRvU2VuZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXgg
ODQ2ZDg1YWE5NjQyZTBmZmNkZWQ3YzMwNjgyZjBhZmFhZWM2NmNiZC4uOWQ2YTViMjFjOWNiYzE0
MzU1YjFhMzJkMjA2YTgxM2I3YmY0ZTk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApA
QCAtNDM3LDYgKzQzNywxMiBAQCBQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOgogICAg
IFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZyYXVkUHJldmVudGlvbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOgor
ICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEyYTQxMzEwMGNmZGM3
YjE2ZWRiNjQ1NjZiM2M5ZGM2ZDFkYjI4MzQuLjgzODExY2JkMjQ4MGUzM2E4YjIyMzViMGQwNjZj
MTc2YmEyMTE0MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0wMi0xNSAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEFkZCBoaWdoIGVudHJvcHkgYXR0cmlidXRp
b25Tb3VyY2VOb25jZSBhdHRyaWJ1dGUgdG8gYW5jaG9yIHRhZ3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzNAorICAgICAgICA8cmRhcjovLzcz
NTgxMjMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgKFBDTSksIHRoZSBzb3VyY2Ugc2l0ZSBzaG91
bGQgaGF2ZSB0aGUgb3B0aW9uIHRvCisgICAgICAgIHByb3ZpZGUgYSBoaWdoIGVudHJvcHkgbm9u
Y2Ugd2l0aCB3aGljaCBQQ00gY2FuIGFzeW5jaHJvbm91c2x5IHZhbGlkYXRlIGl0cworICAgICAg
ICBzdWJzZXF1ZW50LCBhc3luY2hyb25vdXMgcmVxdWVzdCBmb3IgYSBzaWduYXR1cmUgb2YgaXRz
IHVubGlua2FibGUgdG9rZW4uCisKKyAgICAgICAgVGhlIG5vbmNlIGF0dHJpYnV0ZSdzIG5hbWUg
aXMgYXR0cmlidXRpb25Tb3VyY2VOb25jZSBhbmQgaXQncyBhCisgICAgICAgIDEyOC1iaXQvMTYt
Ynl0ZSBCYXNlNjRVUkwgZW5jb2RlZCBzdHJpbmcuCisKKyAgICAgICAgVGhlIGF0dHJpYnV0ZSBp
cyBiZWhpbmQgdGhlIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcKKyAgICAgICAgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZlbnRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDItMTUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBgZ2l0IGNvbW1pdCAtdmAgc3VwcG9ydCB0byBjb21taXQt
bG9nLWVkaXRvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXggOTI2MjA3OTNkNWI1ZjVj
YjNiNjU4NWY2ZDU5YmM2OGRhZTZmZmZlNC4uN2NkNzc1YjRjNjA0MjBlZmFlMWRlMTY3NDE4MWQw
ZTkxZjllNjJiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCkBAIC0xMjMsNiArMTIzLDEy
IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkQ29udmVyc2lvblVSTHMpCiAg
ICAgQVNTRVJUX0VRKG9wdGlvbmFsQ29udmVyc2lvbi0+cHJpb3JpdHksICh1aW50MzJfdCkyKTsK
IH0KIAorVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRTb3VyY2VOb25jZSkKK3sK
KyAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVt
ZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2RlZjAxMjM0NTY3ODkiX3MgfTsKKyAgICBBU1NF
UlRfVFJVRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOworfQorCiAvLyBOZWdhdGl2ZSB0ZXN0
IGNhc2VzLgogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBJbnZhbGlkU291cmNlSUQp
CkBAIC0yNzUsNCArMjgxLDIzIEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEludmFs
aWRDb252ZXJzaW9uV2l0aERpc2FsbG93ZWRVUkxDb21wb25lbnRzKQogICAgIEFTU0VSVF9GQUxT
RShvcHRpb25hbENvbnZlcnNpb24pOwogfQogCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBJbnZhbGlkU291cmNlTm9uY2UpCit7CisgICAgLy8gRmV3ZXIgdGhhbiB0aGUgcmVxdXJpZWQg
bnVtYmVyIG9mIGJ5dGVzLgorICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDRGFiY2QwMTIzNDU2Nzg5Il9z
IH07CisgICAgQVNTRVJUX0ZBTFNFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CisgICAgLy8g
TW9yZSB0aGFuIHRoZSByZXF1cmllZCBudW1iZXIgb2YgYnl0ZXMuCisgICAgZXBoZW1lcmFsTm9u
Y2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJD
REVGR0hJYWJjZGVmZ2hpMDEyMzQ1Njc4OSJfcyB9OworICAgIEFTU0VSVF9GQUxTRShlcGhlbWVy
YWxOb25jZS5pc1ZhbGlkKCkpOworICAgIC8vIElsbGVnYWwsIEFTQ0lJIGNoYXJhY3RlciAnLycu
CisgICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFs
U291cmNlTm9uY2UgeyAiQUJDREVGYWJjZGUvMDEyMzQ1Njc4OSJfcyB9OworICAgIEFTU0VSVF9G
QUxTRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOworICAgIC8vIElsbGVnYWwsIG5vbi1BU0NJ
SSBjaGFyYWN0ZXIgJ8OlJy4KKyAgICBlcGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZSB7ICJBQkNERUZhYmNkZcOlMDEyMzQ1Njc4OSIg
fTsKKyAgICBBU1NFUlRfRkFMU0UoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKTsKKyAgICAvLyBF
bXB0eSBzdHJpbmcuCisgICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyBTdHJpbmdJbXBsOjplbXB0eSgpIH07CisgICAgQVNT
RVJUX0ZBTFNFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420411</attachid>
            <date>2021-02-15 18:33:19 -0800</date>
            <delta_ts>2021-02-15 18:35:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221934-20210215183318.patch</filename>
            <type>text/plain</type>
            <size>10635</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uNDk2ZWY5ZTgxYzA3YWM3MzVmZDI1ZjFkZDIwZWJk
NTkzZjQyMzI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTE1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogQWRkIGhpZ2gg
ZW50cm9weSBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlIGF0dHJpYnV0ZSB0byBhbmNob3IgdGFncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTM0Cisg
ICAgICAgIDxyZGFyOi8vNzM1ODEyMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCAoUENNKSwgdGhl
IHNvdXJjZSBzaXRlIHNob3VsZCBoYXZlIHRoZSBvcHRpb24gdG8KKyAgICAgICAgcHJvdmlkZSBh
IGhpZ2ggZW50cm9weSBub25jZSB3aXRoIHdoaWNoIFBDTSBjYW4gYXN5bmNocm9ub3VzbHkgdmFs
aWRhdGUgaXRzCisgICAgICAgIHN1YnNlcXVlbnQsIGFzeW5jaHJvbm91cyByZXF1ZXN0IGZvciBh
IHNpZ25hdHVyZSBvZiBpdHMgdW5saW5rYWJsZSB0b2tlbi4KKworICAgICAgICBUaGUgbm9uY2Ug
YXR0cmlidXRlJ3MgbmFtZSBpcyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlIGFuZCBpdCdzIGEKKyAg
ICAgICAgMTI4LWJpdC8xNi1ieXRlIEJhc2U2NFVSTCBlbmNvZGVkIHN0cmluZy4KKworICAgICAg
ICBUaGUgYXR0cmlidXRlIGlzIGJlaGluZCB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZwor
ICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvbi4KKworICAgICAg
ICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICog
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OkVwaGVtZXJhbFNvdXJj
ZU5vbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxTb3VyY2VOb25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0RXBoZW1lcmFsU291cmNlTm9uY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmVwaGVtZXJhbFNvdXJjZU5vbmNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjbGVhckVw
aGVtZXJhbFNvdXJjZU5vbmNlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisKIDIw
MjEtMDItMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgV2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkIHRvIFBhZ2UgU2V0dGlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggOThhYmJh
MTdkNWJiZTc4OGE1NDY4NjRiY2E4NWRiYTMyNjNhMTc4Ni4uZWMzZDkwYmVjMjlkMzM4N2ViYzhi
MjNhZGM2MmFmYmM3MzMyOGQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKQEAgLTQ1MCw3ICs0NTAsMTkgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW4KICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1cm4gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgeyBTb3VyY2VJRChhdHRyaWJ1dGlvblNvdXJjZUlELnZhbHVlKCkpLCBT
b3VyY2VTaXRlKGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4pLCBBdHRyaWJ1dGVPblNpdGUoYXR0
cmlidXRlT25VUkwpIH07CisgICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50IHsgU291cmNlSUQoYXR0cmlidXRpb25Tb3VyY2VJRC52YWx1ZSgp
KSwgU291cmNlU2l0ZShkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluKSwgQXR0cmlidXRlT25TaXRl
KGF0dHJpYnV0ZU9uVVJMKSB9OworCisgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0
ciA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRpb25zb3VyY2Vub25j
ZUF0dHIpOworICAgIGlmICghYXR0cmlidXRpb25Tb3VyY2VOb25jZUF0dHIuaXNFbXB0eSgpKSB7
CisgICAgICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
RXBoZW1lcmFsU291cmNlTm9uY2UgeyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ciB9OworICAg
ICAgICBpZiAoIWVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZG9jdW1l
bnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiYXR0cmlidXRpb25zb3VyY2Vub25jZSB3YXMgbm90IHZhbGlkLiJfcyk7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIHByaXZh
dGVDbGlja01lYXN1cmVtZW50LnNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKFdURk1vdmUoZXBoZW1l
cmFsTm9uY2UpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwKaW5kZXggMTQ4YWU4ZmE5
NDNkZTcxYzRiODhmNzRkYjFkODY0NTJkOGYyNWMxMS4uZTlhNmQzZTE2MTczOGUyODY4OTRiYTM0
ODAyOTQ0ZTUxZjVlMWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5pZGwKQEAgLTIzLDYgKzIzLDcgQEAKIF0gaW50ZXJmYWNlIEhUTUxBbmNob3JFbGVtZW50IDog
SFRNTEVsZW1lbnQgewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEVuYWJsZWRCeVNldHRp
bmc9UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcg
YXR0cmlidXRpb25zb3VyY2VpZDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBFbmFibGVk
QnlTZXR0aW5nPVByaXZhdGVDbGlja01lYXN1cmVtZW50LCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGF0dHJpYnV0ZW9uOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEVuYWJsZWRC
eVNldHRpbmc9UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZlbnRpb24sIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBET01TdHJpbmcgYXR0cmlidXRpb25zb3VyY2Vub25jZTsKICAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoYXJzZXQ7CiAg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBj
b29yZHM7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgQ29uZGl0aW9uYWw9RE9XTkxPQURf
QVRUUklCVVRFLCBFbmFibGVkQnlTZXR0aW5nPURvd25sb2FkQXR0cmlidXRlLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGRvd25sb2FkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgppbmRleCAwY2ZlYmJiNzRkZWVjYTNmMTA4NzZhZTY3ZmUwZTA0NzQ5Y2Zl
MTU2Li41MDFlYzAwMDU4MTE3ZjZhNDBjYjVlM2JhYTZkYWM1ZTEwN2FmNTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtNjksNiArNjksNyBAQCBhcmlh
LXZhbHVldGV4dAogYXMKIGFzeW5jCiBhdHRyaWJ1dGlvbnNvdXJjZWlkCithdHRyaWJ1dGlvbnNv
dXJjZW5vbmNlCiBhdHRyaWJ1dGVvbgogYXV0b2NvbXBsZXRlCiBhdXRvZm9jdXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggMDFmMGQ4
ZjcxNmE5NTY5ZWJkZDU2NDBmZjhkMmQxYWZiNTUwNTE5NC4uNmQxZTE1OWZkOTY1Y2IwYzhiMTc3
YmM1Zjk0ZmM5MDIxODdjMDJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0yMDAsNiArMjAx
LDI2IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKICAgICB9OwogCisgICAgc3RydWN0IEVwaGVtZXJhbFNv
dXJjZU5vbmNlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBSZXF1aXJlZE51
bWJlck9mQnl0ZXMgPSAxNjsKKworICAgICAgICBFcGhlbWVyYWxTb3VyY2VOb25jZSgpID0gZGVm
YXVsdDsKKyAgICAgICAgZXhwbGljaXQgRXBoZW1lcmFsU291cmNlTm9uY2UoY29uc3QgU3RyaW5n
JiBub25jZVN0cmluZykKKyAgICAgICAgICAgIDogbm9uY2UgeyBub25jZVN0cmluZyB9CisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3Q7CisgICAgICAgICAgICBpZiAo
IWJhc2U2NFVSTERlY29kZShub25jZSwgZGlnZXN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gZGlnZXN0LnNpemUoKSA9PSBSZXF1aXJlZE51bWJl
ck9mQnl0ZXM7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgbm9uY2U7CisgICAgfTsKKwog
ICAgIHN0cnVjdCBQcmlvcml0eSB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
TWF4RW50cm9weSA9IDYzOwogCkBAIC0yNTUsNiArMjc2LDkgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxKU09OOjpPYmplY3Q+IGpzb24oKSBjb25zdDsKICAgICBjb25zdCBTb3Vy
Y2VTaXRlJiBzb3VyY2VTaXRlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTaXRlOyB9OwogICAg
IGNvbnN0IEF0dHJpYnV0ZU9uU2l0ZSYgYXR0cmlidXRlT25TaXRlKCkgY29uc3QgeyByZXR1cm4g
bV9hdHRyaWJ1dGVPblNpdGU7IH07CisgICAgdm9pZCBzZXRFcGhlbWVyYWxTb3VyY2VOb25jZShF
cGhlbWVyYWxTb3VyY2VOb25jZSYmIG5vbmNlKSB7IG1fZXBoZW1lcmFsU291cmNlTm9uY2UgPSBX
VEZNb3ZlKG5vbmNlKTsgfTsKKyAgICBPcHRpb25hbDxFcGhlbWVyYWxTb3VyY2VOb25jZT4gZXBo
ZW1lcmFsU291cmNlTm9uY2UoKSBjb25zdCB7IHJldHVybiAhbV9lcGhlbWVyYWxTb3VyY2VOb25j
ZSA/IFdURjo6bnVsbG9wdCA6IG1fZXBoZW1lcmFsU291cmNlTm9uY2UtPmlzVmFsaWQoKSA/IG1f
ZXBoZW1lcmFsU291cmNlTm9uY2UgOiBXVEY6Om51bGxvcHQ7IH07CisgICAgdm9pZCBjbGVhckVw
aGVtZXJhbFNvdXJjZU5vbmNlKCkgeyBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlICA9IFdURjo6bnVs
bG9wdDsgfTsKICAgICBXYWxsVGltZSB0aW1lT2ZBZENsaWNrKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lT2ZBZENsaWNrOyB9CiAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IGVhcmxpZXN0VGltZVRvU2Vu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWFybGllc3RUaW1lVG9TZW5kOyB9OwogICAgIHZvaWQgc2V0
RWFybGllc3RUaW1lVG9TZW5kKFdhbGxUaW1lIHRpbWUpIHsgbV9lYXJsaWVzdFRpbWVUb1NlbmQg
PSB0aW1lOyB9CkBAIC0yNzgsNiArMzAyLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wdXJj
aGFzZXI7CiAgICAgV2FsbFRpbWUgbV90aW1lT2ZBZENsaWNrOwogCisgICAgT3B0aW9uYWw8RXBo
ZW1lcmFsU291cmNlTm9uY2U+IG1fZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAgT3B0aW9uYWw8
QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIE9w
dGlvbmFsPFdhbGxUaW1lPiBtX2VhcmxpZXN0VGltZVRvU2VuZDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLnlhbWwKaW5kZXggODQ2ZDg1YWE5NjQyZTBmZmNkZWQ3YzMwNjgyZjBhZmFhZWM2NmNi
ZC4uOWQ2YTViMjFjOWNiYzE0MzU1YjFhMzJkMjA2YTgxM2I3YmY0ZTk2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MueWFtbApAQCAtNDM3LDYgKzQzNywxMiBAQCBQcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogCitQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wK
KyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVs
dFZhbHVlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDEyYTQxMzEwMGNmZGM3YjE2ZWRiNjQ1NjZiM2M5ZGM2ZDFkYjI4MzQuLjgzODExY2JkMjQ4
MGUzM2E4YjIyMzViMGQwNjZjMTc2YmEyMTE0MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0wMi0xNSAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEFkZCBoaWdo
IGVudHJvcHkgYXR0cmlidXRpb25Tb3VyY2VOb25jZSBhdHRyaWJ1dGUgdG8gYW5jaG9yIHRhZ3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzNAor
ICAgICAgICA8cmRhcjovLzczNTgxMjMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgKFBDTSksIHRo
ZSBzb3VyY2Ugc2l0ZSBzaG91bGQgaGF2ZSB0aGUgb3B0aW9uIHRvCisgICAgICAgIHByb3ZpZGUg
YSBoaWdoIGVudHJvcHkgbm9uY2Ugd2l0aCB3aGljaCBQQ00gY2FuIGFzeW5jaHJvbm91c2x5IHZh
bGlkYXRlIGl0cworICAgICAgICBzdWJzZXF1ZW50LCBhc3luY2hyb25vdXMgcmVxdWVzdCBmb3Ig
YSBzaWduYXR1cmUgb2YgaXRzIHVubGlua2FibGUgdG9rZW4uCisKKyAgICAgICAgVGhlIG5vbmNl
IGF0dHJpYnV0ZSdzIG5hbWUgaXMgYXR0cmlidXRpb25Tb3VyY2VOb25jZSBhbmQgaXQncyBhCisg
ICAgICAgIDEyOC1iaXQvMTYtYnl0ZSBCYXNlNjRVUkwgZW5jb2RlZCBzdHJpbmcuCisKKyAgICAg
ICAgVGhlIGF0dHJpYnV0ZSBpcyBiZWhpbmQgdGhlIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcK
KyAgICAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZlbnRpb24uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDItMTUgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBgZ2l0IGNvbW1pdCAtdmAg
c3VwcG9ydCB0byBjb21taXQtbG9nLWVkaXRvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5k
ZXggOTI2MjA3OTNkNWI1ZjVjYjNiNjU4NWY2ZDU5YmM2OGRhZTZmZmZlNC4uN2NkNzc1YjRjNjA0
MjBlZmFlMWRlMTY3NDE4MWQwZTkxZjllNjJiMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3Bw
CkBAIC0xMjMsNiArMTIzLDEyIEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlk
Q29udmVyc2lvblVSTHMpCiAgICAgQVNTRVJUX0VRKG9wdGlvbmFsQ29udmVyc2lvbi0+cHJpb3Jp
dHksICh1aW50MzJfdCkyKTsKIH0KIAorVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFs
aWRTb3VyY2VOb25jZSkKK3sKKyAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2RlZjAxMjM0NTY3
ODkiX3MgfTsKKyAgICBBU1NFUlRfVFJVRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOworfQor
CiAvLyBOZWdhdGl2ZSB0ZXN0IGNhc2VzLgogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBJbnZhbGlkU291cmNlSUQpCkBAIC0yNzUsNCArMjgxLDIzIEBAIFRFU1QoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsIEludmFsaWRDb252ZXJzaW9uV2l0aERpc2FsbG93ZWRVUkxDb21wb25lbnRz
KQogICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24pOwogfQogCitURVNUKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBJbnZhbGlkU291cmNlTm9uY2UpCit7CisgICAgLy8gRmV3ZXIg
dGhhbiB0aGUgcmVxdXJpZWQgbnVtYmVyIG9mIGJ5dGVzLgorICAgIGF1dG8gZXBoZW1lcmFsTm9u
Y2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJD
RGFiY2QwMTIzNDU2Nzg5Il9zIH07CisgICAgQVNTRVJUX0ZBTFNFKGVwaGVtZXJhbE5vbmNlLmlz
VmFsaWQoKSk7CisgICAgLy8gTW9yZSB0aGFuIHRoZSByZXF1cmllZCBudW1iZXIgb2YgYnl0ZXMu
CisgICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFs
U291cmNlTm9uY2UgeyAiQUJDREVGR0hJYWJjZGVmZ2hpMDEyMzQ1Njc4OSJfcyB9OworICAgIEFT
U0VSVF9GQUxTRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOworICAgIC8vIElsbGVnYWwsIEFT
Q0lJIGNoYXJhY3RlciAnLycuCisgICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGYWJjZGUvMDEyMzQ1Njc4OSJf
cyB9OworICAgIEFTU0VSVF9GQUxTRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOworICAgIC8v
IElsbGVnYWwsIG5vbi1BU0NJSSBjaGFyYWN0ZXIgJ8OlJy4KKyAgICBlcGhlbWVyYWxOb25jZSA9
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZSB7ICJBQkNERUZh
YmNkZcOlMDEyMzQ1Njc4OSIgfTsKKyAgICBBU1NFUlRfRkFMU0UoZXBoZW1lcmFsTm9uY2UuaXNW
YWxpZCgpKTsKKyAgICAvLyBFbXB0eSBzdHJpbmcuCisgICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyBTdHJpbmdJbXBsOjpl
bXB0eSgpIH07CisgICAgQVNTRVJUX0ZBTFNFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420412</attachid>
            <date>2021-02-15 18:38:10 -0800</date>
            <delta_ts>2021-02-15 20:11:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221934-20210215183809.patch</filename>
            <type>text/plain</type>
            <size>10786</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIzNmIyODBmM2Y5MTM3
ZDFmMTBiM2JlODU4ZjNiZWUzZDc4YzY0Ni4uNDk2ZWY5ZTgxYzA3YWM3MzVmZDI1ZjFkZDIwZWJk
NTkzZjQyMzI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAyLTE1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogQWRkIGhpZ2gg
ZW50cm9weSBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlIGF0dHJpYnV0ZSB0byBhbmNob3IgdGFncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTM0Cisg
ICAgICAgIDxyZGFyOi8vNzM1ODEyMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCAoUENNKSwgdGhl
IHNvdXJjZSBzaXRlIHNob3VsZCBoYXZlIHRoZSBvcHRpb24gdG8KKyAgICAgICAgcHJvdmlkZSBh
IGhpZ2ggZW50cm9weSBub25jZSB3aXRoIHdoaWNoIFBDTSBjYW4gYXN5bmNocm9ub3VzbHkgdmFs
aWRhdGUgaXRzCisgICAgICAgIHN1YnNlcXVlbnQsIGFzeW5jaHJvbm91cyByZXF1ZXN0IGZvciBh
IHNpZ25hdHVyZSBvZiBpdHMgdW5saW5rYWJsZSB0b2tlbi4KKworICAgICAgICBUaGUgbm9uY2Ug
YXR0cmlidXRlJ3MgbmFtZSBpcyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlIGFuZCBpdCdzIGEKKyAg
ICAgICAgMTI4LWJpdC8xNi1ieXRlIEJhc2U2NFVSTCBlbmNvZGVkIHN0cmluZy4KKworICAgICAg
ICBUaGUgYXR0cmlidXRlIGlzIGJlaGluZCB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZwor
ICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvbi4KKworICAgICAg
ICBOZXcgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICog
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OkVwaGVtZXJhbFNvdXJj
ZU5vbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxTb3VyY2VOb25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0RXBoZW1lcmFsU291cmNlTm9uY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmVwaGVtZXJhbFNvdXJjZU5vbmNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjbGVhckVw
aGVtZXJhbFNvdXJjZU5vbmNlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisKIDIw
MjEtMDItMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgV2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkIHRvIFBhZ2UgU2V0dGlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggOThhYmJh
MTdkNWJiZTc4OGE1NDY4NjRiY2E4NWRiYTMyNjNhMTc4Ni4uZWMzZDkwYmVjMjlkMzM4N2ViYzhi
MjNhZGM2MmFmYmM3MzMyOGQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKQEAgLTQ1MCw3ICs0NTAsMTkgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW4KICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1cm4gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgeyBTb3VyY2VJRChhdHRyaWJ1dGlvblNvdXJjZUlELnZhbHVlKCkpLCBT
b3VyY2VTaXRlKGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4pLCBBdHRyaWJ1dGVPblNpdGUoYXR0
cmlidXRlT25VUkwpIH07CisgICAgYXV0byBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50IHsgU291cmNlSUQoYXR0cmlidXRpb25Tb3VyY2VJRC52YWx1ZSgp
KSwgU291cmNlU2l0ZShkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluKSwgQXR0cmlidXRlT25TaXRl
KGF0dHJpYnV0ZU9uVVJMKSB9OworCisgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0
ciA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRpb25zb3VyY2Vub25j
ZUF0dHIpOworICAgIGlmICghYXR0cmlidXRpb25Tb3VyY2VOb25jZUF0dHIuaXNFbXB0eSgpKSB7
CisgICAgICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
RXBoZW1lcmFsU291cmNlTm9uY2UgeyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ciB9OworICAg
ICAgICBpZiAoIWVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZG9jdW1l
bnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiYXR0cmlidXRpb25zb3VyY2Vub25jZSB3YXMgbm90IHZhbGlkLiJfcyk7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIHByaXZh
dGVDbGlja01lYXN1cmVtZW50LnNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKFdURk1vdmUoZXBoZW1l
cmFsTm9uY2UpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7
CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwKaW5kZXggMTQ4YWU4ZmE5
NDNkZTcxYzRiODhmNzRkYjFkODY0NTJkOGYyNWMxMS4uZTlhNmQzZTE2MTczOGUyODY4OTRiYTM0
ODAyOTQ0ZTUxZjVlMWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5pZGwKQEAgLTIzLDYgKzIzLDcgQEAKIF0gaW50ZXJmYWNlIEhUTUxBbmNob3JFbGVtZW50IDog
SFRNTEVsZW1lbnQgewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEVuYWJsZWRCeVNldHRp
bmc9UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcg
YXR0cmlidXRpb25zb3VyY2VpZDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBFbmFibGVk
QnlTZXR0aW5nPVByaXZhdGVDbGlja01lYXN1cmVtZW50LCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGF0dHJpYnV0ZW9uOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEVuYWJsZWRC
eVNldHRpbmc9UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZlbnRpb24sIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBET01TdHJpbmcgYXR0cmlidXRpb25zb3VyY2Vub25jZTsKICAgICBbQ0VSZWFj
dGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoYXJzZXQ7CiAg
ICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBj
b29yZHM7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgQ29uZGl0aW9uYWw9RE9XTkxPQURf
QVRUUklCVVRFLCBFbmFibGVkQnlTZXR0aW5nPURvd25sb2FkQXR0cmlidXRlLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGRvd25sb2FkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbgppbmRleCAwY2ZlYmJiNzRkZWVjYTNmMTA4NzZhZTY3ZmUwZTA0NzQ5Y2Zl
MTU2Li41MDFlYzAwMDU4MTE3ZjZhNDBjYjVlM2JhYTZkYWM1ZTEwN2FmNTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtNjksNiArNjksNyBAQCBhcmlh
LXZhbHVldGV4dAogYXMKIGFzeW5jCiBhdHRyaWJ1dGlvbnNvdXJjZWlkCithdHRyaWJ1dGlvbnNv
dXJjZW5vbmNlCiBhdHRyaWJ1dGVvbgogYXV0b2NvbXBsZXRlCiBhdXRvZm9jdXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggMDFmMGQ4
ZjcxNmE5NTY5ZWJkZDU2NDBmZjhkMmQxYWZiNTUwNTE5NC4uYTRjOTZjYTFlMGE0ZDAwYjJhYWYx
Y2M1NjkzMzI5NzlhOWY4MjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0yMDAsNiArMjAx
LDI4IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKICAgICB9OwogCisgICAgc3RydWN0IEVwaGVtZXJhbFNv
dXJjZU5vbmNlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBSZXF1aXJlZE51
bWJlck9mQnl0ZXMgPSAxNjsKKworICAgICAgICBFcGhlbWVyYWxTb3VyY2VOb25jZSgpID0gZGVm
YXVsdDsKKyAgICAgICAgZXhwbGljaXQgRXBoZW1lcmFsU291cmNlTm9uY2UoY29uc3QgU3RyaW5n
JiBub25jZVN0cmluZykKKyAgICAgICAgICAgIDogbm9uY2UgeyBub25jZVN0cmluZyB9CisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBpZiB3ZSBj
YW4gZG8gd2l0aCBhIHNpbXBsZSBsZW5ndGggY2hlY2sgaW5zdGVhZCBvZiBkZWNvZGluZy4KKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk0NQor
ICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGlnZXN0OworICAgICAgICAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUobm9u
Y2UsIGRpZ2VzdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuIGRpZ2VzdC5zaXplKCkgPT0gUmVxdWlyZWROdW1iZXJPZkJ5dGVzOworICAgICAgICB9
CisKKyAgICAgICAgU3RyaW5nIG5vbmNlOworICAgIH07CisKICAgICBzdHJ1Y3QgUHJpb3JpdHkg
ewogICAgICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IE1heEVudHJvcHkgPSA2MzsKIApA
QCAtMjU1LDYgKzI3OCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6
T2JqZWN0PiBqc29uKCkgY29uc3Q7CiAgICAgY29uc3QgU291cmNlU2l0ZSYgc291cmNlU2l0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2l0ZTsgfTsKICAgICBjb25zdCBBdHRyaWJ1dGVPblNp
dGUmIGF0dHJpYnV0ZU9uU2l0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlT25TaXRlOyB9
OworICAgIHZvaWQgc2V0RXBoZW1lcmFsU291cmNlTm9uY2UoRXBoZW1lcmFsU291cmNlTm9uY2Um
JiBub25jZSkgeyBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlID0gV1RGTW92ZShub25jZSk7IH07Cisg
ICAgT3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IGVwaGVtZXJhbFNvdXJjZU5vbmNlKCkg
Y29uc3QgeyByZXR1cm4gIW1fZXBoZW1lcmFsU291cmNlTm9uY2UgPyBXVEY6Om51bGxvcHQgOiBt
X2VwaGVtZXJhbFNvdXJjZU5vbmNlLT5pc1ZhbGlkKCkgPyBtX2VwaGVtZXJhbFNvdXJjZU5vbmNl
IDogV1RGOjpudWxsb3B0OyB9OworICAgIHZvaWQgY2xlYXJFcGhlbWVyYWxTb3VyY2VOb25jZSgp
IHsgbV9lcGhlbWVyYWxTb3VyY2VOb25jZSAgPSBXVEY6Om51bGxvcHQ7IH07CiAgICAgV2FsbFRp
bWUgdGltZU9mQWRDbGljaygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZU9mQWRDbGljazsgfQogICAg
IE9wdGlvbmFsPFdhbGxUaW1lPiBlYXJsaWVzdFRpbWVUb1NlbmQoKSBjb25zdCB7IHJldHVybiBt
X2VhcmxpZXN0VGltZVRvU2VuZDsgfTsKICAgICB2b2lkIHNldEVhcmxpZXN0VGltZVRvU2VuZChX
YWxsVGltZSB0aW1lKSB7IG1fZWFybGllc3RUaW1lVG9TZW5kID0gdGltZTsgfQpAQCAtMjc4LDYg
KzMwNCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcHVyY2hhc2VyOwogICAgIFdhbGxUaW1l
IG1fdGltZU9mQWRDbGljazsKIAorICAgIE9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBt
X2VwaGVtZXJhbFNvdXJjZU5vbmNlOwogICAgIE9wdGlvbmFsPEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE+IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBPcHRpb25hbDxXYWxsVGltZT4gbV9l
YXJsaWVzdFRpbWVUb1NlbmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDg0
NmQ4NWFhOTY0MmUwZmZjZGVkN2MzMDY4MmYwYWZhYWVjNjZjYmQuLjlkNmE1YjIxYzljYmMxNDM1
NWIxYTMyZDIwNmE4MTNiN2JmNGU5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAg
LTQzNyw2ICs0MzcsMTIgQEAgUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaDoKICAgICBX
ZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UKIAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRG
cmF1ZFByZXZlbnRpb25FbmFibGVkOgorICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZToKKyAg
ICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnRFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZToKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmE0MTMxMDBjZmRjN2Ix
NmVkYjY0NTY2YjNjOWRjNmQxZGIyODM0Li44MzgxMWNiZDI0ODBlMzNhOGIyMjM1YjBkMDY2YzE3
NmJhMjExNDJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDItMTUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBBZGQgaGlnaCBlbnRyb3B5IGF0dHJpYnV0aW9u
U291cmNlTm9uY2UgYXR0cmlidXRlIHRvIGFuY2hvciB0YWdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5MzQKKyAgICAgICAgPHJkYXI6Ly83MzU4
MTIzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
biBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IChQQ00pLCB0aGUgc291cmNlIHNpdGUgc2hvdWxk
IGhhdmUgdGhlIG9wdGlvbiB0bworICAgICAgICBwcm92aWRlIGEgaGlnaCBlbnRyb3B5IG5vbmNl
IHdpdGggd2hpY2ggUENNIGNhbiBhc3luY2hyb25vdXNseSB2YWxpZGF0ZSBpdHMKKyAgICAgICAg
c3Vic2VxdWVudCwgYXN5bmNocm9ub3VzIHJlcXVlc3QgZm9yIGEgc2lnbmF0dXJlIG9mIGl0cyB1
bmxpbmthYmxlIHRva2VuLgorCisgICAgICAgIFRoZSBub25jZSBhdHRyaWJ1dGUncyBuYW1lIGlz
IGF0dHJpYnV0aW9uU291cmNlTm9uY2UgYW5kIGl0J3MgYQorICAgICAgICAxMjgtYml0LzE2LWJ5
dGUgQmFzZTY0VVJMIGVuY29kZWQgc3RyaW5nLgorCisgICAgICAgIFRoZSBhdHRyaWJ1dGUgaXMg
YmVoaW5kIHRoZSBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnCisgICAgICAgIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJhdWRQcmV2ZW50aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTAyLTE1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgYGdpdCBjb21taXQgLXZgIHN1cHBvcnQgdG8gY29tbWl0LWxv
Zy1lZGl0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IDkyNjIwNzkzZDViNWY1Y2Iz
YjY1ODVmNmQ1OWJjNjhkYWU2ZmZmZTQuLjdjZDc3NWI0YzYwNDIwZWZhZTFkZTE2NzQxODFkMGU5
MWY5ZTYyYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcApAQCAtMTIzLDYgKzEyMywxMiBA
QCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZENvbnZlcnNpb25VUkxzKQogICAg
IEFTU0VSVF9FUShvcHRpb25hbENvbnZlcnNpb24tPnByaW9yaXR5LCAodWludDMyX3QpMik7CiB9
CiAKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkU291cmNlTm9uY2UpCit7Cisg
ICAgYXV0byBlcGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVy
YWxTb3VyY2VOb25jZSB7ICJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5Il9zIH07CisgICAgQVNTRVJU
X1RSVUUoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKTsKK30KKwogLy8gTmVnYXRpdmUgdGVzdCBj
YXNlcy4KIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgSW52YWxpZFNvdXJjZUlEKQpA
QCAtMjc1LDQgKzI4MSwyMyBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBJbnZhbGlk
Q29udmVyc2lvbldpdGhEaXNhbGxvd2VkVVJMQ29tcG9uZW50cykKICAgICBBU1NFUlRfRkFMU0Uo
b3B0aW9uYWxDb252ZXJzaW9uKTsKIH0KIAorVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
SW52YWxpZFNvdXJjZU5vbmNlKQoreworICAgIC8vIEZld2VyIHRoYW4gdGhlIHJlcXVyaWVkIG51
bWJlciBvZiBieXRlcy4KKyAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RhYmNkMDEyMzQ1Njc4OSJfcyB9
OworICAgIEFTU0VSVF9GQUxTRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOworICAgIC8vIE1v
cmUgdGhhbiB0aGUgcmVxdXJpZWQgbnVtYmVyIG9mIGJ5dGVzLgorICAgIGVwaGVtZXJhbE5vbmNl
ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RF
RkdISWFiY2RlZmdoaTAxMjM0NTY3ODkiX3MgfTsKKyAgICBBU1NFUlRfRkFMU0UoZXBoZW1lcmFs
Tm9uY2UuaXNWYWxpZCgpKTsKKyAgICAvLyBJbGxlZ2FsLCBBU0NJSSBjaGFyYWN0ZXIgJy8nLgor
ICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNv
dXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2RlLzAxMjM0NTY3ODkiX3MgfTsKKyAgICBBU1NFUlRfRkFM
U0UoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKTsKKyAgICAvLyBJbGxlZ2FsLCBub24tQVNDSUkg
Y2hhcmFjdGVyICfDpScuCisgICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGYWJjZGXDpTAxMjM0NTY3ODkiIH07
CisgICAgQVNTRVJUX0ZBTFNFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CisgICAgLy8gRW1w
dHkgc3RyaW5nLgorICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgU3RyaW5nSW1wbDo6ZW1wdHkoKSB9OworICAgIEFTU0VS
VF9GQUxTRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>