<?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>185412</bug_id>
          
          <creation_ts>2018-05-07 21:30:30 -0700</creation_ts>
          <short_desc>Use PlatformStrategies to switch between WebKit and WebKitLegacy checking of CSP frame-ancestors and X-Frame-Options</short_desc>
          <delta_ts>2018-05-10 22:35:23 -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>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=185443</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=185410</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1421626</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-07 21:30:30 -0700</bug_when>
    <thetext>Following up on Ryosuke Niwa&apos;s remark in bug 185410, comment 3, we should look to use PlatformStrategies to switch between WebKit and WebKitLegacy checking of CSP frame-ancestors and X-Frame-Options instead of a setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422867</commentid>
    <comment_count>1</comment_count>
      <attachid>340128</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-10 14:14:50 -0700</bug_when>
    <thetext>Created attachment 340128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422872</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-10 14:26:58 -0700</bug_when>
    <thetext>In addition to using loader strategy to toggle whether we perform CSP frame-ancestors and X-Frame-Options checking in DocumentLoader this patch represents a step towards removing duplication and making it clear when we depend on the loader strategy to perform security checks for a request and when we expect those checks to have been performed on a ResourceResponse. We should look to remove the need to query the loader strategy for this information as it is error prone. In particular, LoaderStrategy::havePerformedSecurityChecks() is error prone as it must be kept up-to-date with the kinds of loads performed by NetworkProcess.


From talking with Andy Estes and Brady Eidson today (05/10) we felt it is that it would be less error prone to encode whether a response had been security checked in the ResourceResponse object itself as opposed to indirectly determining this fact by having LoaderStrategy::havePerformedSecurityChecks() look at ResourceResponse::Source. The NetworkProcess loading code would be responsible for setting this state on each ResourceResponse it sends to WebContent process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423021</commentid>
    <comment_count>3</comment_count>
      <attachid>340128</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-10 21:03:18 -0700</bug_when>
    <thetext>Comment on attachment 340128
Patch

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

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:684
&gt; +    case ResourceResponse::Source::Unknown:

Should we ASSERT_NOT_REACHED() for Source::Unknown?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423037</commentid>
    <comment_count>4</comment_count>
      <attachid>340128</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-10 21:48:08 -0700</bug_when>
    <thetext>Comment on attachment 340128
Patch

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

&gt; Source/WebCore/loader/LoaderStrategy.h:84
&gt; +    virtual bool shouldPerformSecurityChecks() const { return false; }

This doesn&apos;t tell us what kind of security checks we&apos;re performing.
How about shouldRestrictedHTTPResponseAccess instead?
That would be very descriptive of the feature we&apos;re conditioning.

&gt; Source/WebCore/loader/LoaderStrategy.h:85
&gt; +    virtual bool havePerformedSecurityChecks(const ResourceResponse&amp;) const { return false; }

And how about haveRestrictedHTTPResponseAccess for this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423047</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-10 22:28:08 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #4)
&gt; Comment on attachment 340128 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340128&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/LoaderStrategy.h:84
&gt; &gt; +    virtual bool shouldPerformSecurityChecks() const { return false; }
&gt; 
&gt; This doesn&apos;t tell us what kind of security checks we&apos;re performing.

I am not happy that we need this function and I am also not happy with the name of this function for the same reason.

&gt; How about shouldRestrictedHTTPResponseAccess instead?

I thought about this name. I ruled it out because it does not convey to the reader the implications of &quot;restricted HTTP response access&quot; in the same sense that a function named &quot;canAccessDocument&quot; or &quot;allowFrameAncestors&quot; does. Notice that RuntimeEnabledFeatures::restrictedHTTPResponseAccess() is enabled in Legacy WebKit by &lt;https://trac.webkit.org/browser/trunk/Source/WebCore/page/RuntimeEnabledFeatures.h?rev=231501#L394&gt;. Maybe this is bug? As a result, the implications of &quot;restricted HTTP response access&quot; are even less clear because it is enabled in WebKit Legacy and conditionally enabled in WebKit. For now, I will defer considering such a renaming until we address whether RuntimeEnabledFeatures::restrictedHTTPResponseAccess() being enabled in Legacy WebKit is intentional.

&gt; That would be very descriptive of the feature we&apos;re conditioning.
&gt; 
&gt; &gt; Source/WebCore/loader/LoaderStrategy.h:85
&gt; &gt; +    virtual bool havePerformedSecurityChecks(const ResourceResponse&amp;) const { return false; }
&gt; 
&gt; And how about haveRestrictedHTTPResponseAccess for this one?

Similarly, I will defer considering such a renaming until we address whether RuntimeEnabledFeatures::restrictedHTTPResponseAccess() being enabled in Legacy WebKit is intentional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423050</commentid>
    <comment_count>6</comment_count>
      <attachid>340128</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-10 22:34:27 -0700</bug_when>
    <thetext>Comment on attachment 340128
Patch

Clearing flags on attachment: 340128

Committed r231692: &lt;https://trac.webkit.org/changeset/231692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423051</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-10 22:34:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423052</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-10 22:35:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/40154076&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340128</attachid>
            <date>2018-05-10 14:14:50 -0700</date>
            <delta_ts>2018-05-10 22:34:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185412-20180510141450.patch</filename>
            <type>text/plain</type>
            <size>23797</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY4ZGY3YWIxOGNlNWU0
NTdmMWM0ZGY5ODJlZGM1Y2EzYmI2NjRhMy4uMjhlNDYxM2M3MDIxYWRjMzQxNzljYjM5YzUyZmNh
NzA3MTY2ZjYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTA1LTEwICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUGxhdGZvcm1TdHJh
dGVnaWVzIHRvIHN3aXRjaCBiZXR3ZWVuIFdlYktpdCBhbmQgV2ViS2l0TGVnYWN5IGNoZWNraW5n
IG9mIENTUCBmcmFtZS1hbmNlc3RvcnMgYW5kIFgtRnJhbWUtT3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NDEyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29uc29saWRhdGUgdGhlIGtub3ds
ZWRnZSBvbiBob3cgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgc2VjdXJpdHkgY2hlY2tzIHdlcmUgcGVy
Zm9ybWVkIG9uIGEgUmVzb3VyY2VSZXNwb25zZQorICAgICAgICBpbnRvIExvYWRlclN0cmF0ZWd5
OjpoYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVja3MoKSAoZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBy
ZXR1cm5zIGZhbHNlKSBhbmQgcXVlcnkgaXQKKyAgICAgICAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg
Q1NQIGZyYW1lLWFuY2VzdG9ycyBhbmQgWC1GcmFtZS1PcHRpb25zIG5lZWQgdG8gYmUgY2hlY2tl
ZCBmb3IgYSBSZXNvdXJjZVJlc3BvbnNlLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgcmVuYW1l
IExvYWRlclN0cmF0ZWd5Ojppc0RvaW5nTG9hZGluZ1NlY3VyaXR5Q2hlY2tzKCkgdG8gc2hvdWxk
UGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCkKKyAgICAgICAgZm9yIGNvbnNpc3RlbmN5IHdpdGggaGF2
ZVBlcmZvcm1lZFNlY3VyaXR5Q2hlY2tzKCkuIFF1ZXJ5aW5nIHNob3VsZFBlcmZvcm1TZWN1cml0
eUNoZWNrcygpIGFuc3dlcnMgdGhlCisgICAgICAgIHF1ZXN0aW9uIG9mIHdoZXRoZXIgdGhlIGxv
YWRlciBzdHJhdGVneSBpcyByZXNwb25zaWJsZSBmb3IgcGVyZm9ybWluZyBzZWN1cml0eSBjaGVj
a3Mgd2hlbiBidWlsZGluZyB1cAorICAgICAgICBhIFJlc291cmNlUmVxdWVzdCB0byBoYXZlIHRo
ZSBsb2FkZXIgc3RyYXRlZ3kgbG9hZC4gQW5kIExvYWRlclN0cmF0ZWd5OjpoYXZlUGVyZm9ybWVk
U2VjdXJpdHlDaGVja3MoKQorICAgICAgICBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRo
ZSBsb2FkZXIgc3RyYXRlZ3kgcGVyZm9ybWVkIHRoZXNlIHNlY3VyaXR5IGNoZWNrcyBmb3IgYSBn
aXZlbiBSZXNvdXJjZVJlc3BvbnNlLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVz
cG9uc2VQcm9iYWJseUNvbWluZ0Zyb21OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFBlcmZvcm1TZWN1cml0
eUNoZWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnNo
b3VsZFNldEhUVFBIZWFkZXJzVG9LZWVwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzRG9pbmdTZWN1
cml0eUNoZWNrc0luTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNSZXNwb25zZUNvbWluZ0Zyb21OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICog
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6IFJlbW92ZSBzZXR0aW5nIG5ldHdv
cmtQcm9jZXNzQ1NQRnJhbWVBbmNlc3RvcnNDaGVja2luZ0VuYWJsZWQgYXMgd2Ugbm93IG1ha2UK
KyAgICAgICAgdXNlIG9mIHRoZSBsb2FkZXIgc3RyYXRlZ3kgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg
dG8gcGVyZm9ybSBDU1AgZnJhbWUtYW5jZXN0b3JzIGFuZCBYLUZyYW1lLU9wdGlvbnMKKyAgICAg
ICAgY2hlY2tpbmcgaW4gRG9jdW1lbnRMb2FkZXIuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFNvdXJjZSk6IEFkZGVkIGFuIEFTU0VSVCB0byBjYXRjaCB0aGUgcHJvZ3Jh
bW1pbmcgZXJyb3Igb2Ygc2V0dGluZworICAgICAgICBzb3VyY2UgdG8gUmVzb3VyY2VSZXNwb25z
ZTo6U291cmNlOjpVbmtub3duLiBUaGlzIHNvdXJjZSB0eXBlIHJlcHJlc2VudHMgYW4gdW5pbml0
aWFsaXplZCBSZXNvdXJjZVJlc3BvbnNlLgorCiAyMDE4LTA1LTA5ICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjMxNDc5KTogaHR0cC90
ZXN0cy9hcHBjYWNoZS94LWZyYW1lLW9wdGlvbnMtcHJldmVudHMtZnJhbWluZy5waHAgaXMgdGlt
aW5nIG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBiY2Y2OWU4N2RiZDkwNjE5MjQ4ZWNkYzk3NjYyYmZiZjg0YTdj
NWMyLi4yNzgxMmE5YzYyOGY0YjhlZDgyNzQ3NTc1ZTU0ZDk4ODE5YjM2MjBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDE4LTA1LTEwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgUGxhdGZvcm1TdHJhdGVnaWVzIHRvIHN3aXRjaCBiZXR3ZWVu
IFdlYktpdCBhbmQgV2ViS2l0TGVnYWN5IGNoZWNraW5nIG9mIENTUCBmcmFtZS1hbmNlc3RvcnMg
YW5kIFgtRnJhbWUtT3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNvZGUgZm9yIHJlbmFtaW5nIGFuZCB3cml0ZSBpbiB0ZXJtcyBv
ZiBXZWJMb2FkZXJTdHJhdGVneTo6c2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCkKKyAgICAg
ICAgaW5zdGVhZCBvZiBleHBsaWNpdGx5IHF1ZXJ5aW5nIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkucmVzdHJpY3RlZEhUVFBSZXNwb25zZUFjY2VzcygpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGlu
Z0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRv
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNob3VsZFBlcmZvcm1TZWN1
cml0eUNoZWNrcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpo
YXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVja3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJTdHJhdGVneTo6aXNEb2luZ0xvYWRpbmdTZWN1cml0eUNoZWNrcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorCiAyMDE4LTA1LTA5ICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBUZWxsIFBERkhv
c3RWaWV3Q29udHJvbGxlciB3aGVuIGFuaW1hdGVkIHJlc2l6ZXMgYmVnaW4gYW5kIGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDQ2ZTRhZmU0Y2YwOGNjODJlMzg4ZWQ3OTQ1NTk2MjQ0NjZhODY5
NDguLmM5NTM5N2FlMzcyYTUwZWNmZjRlODUzM2Q5N2M0ZGE5MGFmZjAwNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtNDIxLDIzICs0MjEsNiBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdQogICAg
IHdpbGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UoKSwgcmVzb3VyY2VUeXBlRm9yTG9hZFR5cGUobG9hZFR5cGUpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBib29sIGlzUmVzcG9uc2VQcm9iYWJseUNvbWluZ0Zyb21OZXR3b3JrUHJvY2VzcyhS
ZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2Ugc291cmNlKQotewotICAgIHN3aXRjaCAoc291cmNlKSB7
Ci0gICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlOgotICAgIGNh
c2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNoZUFmdGVyVmFsaWRhdGlvbjoK
LSAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcjoKLSAgICBj
YXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6QXBwbGljYXRpb25DYWNoZToKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpVbmtub3du
OgotICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrOgotICAgIGNhc2Ug
UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGU6Ci0gICAgY2FzZSBSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFsaWRhdGlvbjoKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
c291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKIHsKICAgICBpZiAobV9oaWRkZW5SZXF1ZXN0
SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCkBAIC00NDYsNyArNDI5LDcgQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW4KICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNG
YWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFJlc291
cmNlUmVzcG9uc2U+IHJlYWxSZXNwb25zZTsKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5yZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzKCkgJiYgaXNS
ZXNwb25zZVByb2JhYmx5Q29taW5nRnJvbU5ldHdvcmtQcm9jZXNzKHJlc3BvbnNlLnNvdXJjZSgp
KSkgeworICAgIGlmIChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aGF2
ZVBlcmZvcm1lZFNlY3VyaXR5Q2hlY2tzKHJlc3BvbnNlKSkgewogICAgICAgICBjYWxsT25NYWlu
VGhyZWFkQW5kV2FpdChbJl0gewogICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gaXNv
bGF0ZSByZXNwb25zZSBzaW5jZSBpdCBjb21lcyBzdHJhaWdodCBmcm9tIElQQywgYnV0IHdlIG1p
Z2h0IHdhbnQgdG8gaXNvbGF0ZSBpdCBmb3IgZXh0cmEgc2FmZXR5LgogICAgICAgICAgICAgYXV0
byByZXNwb25zZSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5yZXNw
b25zZUZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKGlkZW50aWZpZXIpOwpAQCAtNTM0LDcgKzUx
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAgICAgICAgIHNvdXJjZU1hcHBpbmdVUkwg
PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKHJlc291cmNlRGF0
YS0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0
cmljcz4gcmVhbE1ldHJpY3M7Ci0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkucmVzdHJpY3RlZEhUVFBSZXNwb25zZUFjY2VzcygpICYmICFuZXR3b3JrTG9h
ZE1ldHJpY3MuaXNDb21wbGV0ZSgpKSB7CisgICAgaWYgKHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5zaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKSAmJiAhbmV0d29y
a0xvYWRNZXRyaWNzLmlzQ29tcGxldGUoKSkgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkQW5k
V2FpdChbJl0gewogICAgICAgICAgICAgcmVhbE1ldHJpY3MgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9hZGVyU3RyYXRlZ3koKS0+bmV0d29ya01ldHJpY3NGcm9tUmVzb3VyY2VMb2FkSWRlbnRp
ZmllcihpZGVudGlmaWVyKS5pc29sYXRlZENvcHkoKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyZTJiNzYzODEzNjcyMjg2ODQyMTgx
NWI5MmM3NGUzMGMxOGFmODcwLi44MzUyZTk1ZTY3OGU0MTI3OWZkNjg2ODQ0ZDA3Njc4ZGRiNDMx
YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTYwLDEx
ICs2MCwxMyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkxpbmtJY29uQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiTGlua0ljb25UeXBlLmgiCisjaW5j
bHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJQcm9ncmVz
c1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtNzY4LDcgKzc3MCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
ID0gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA/IG1faWRlbnRpZmll
ckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgOiBtX21haW5SZXNvdXJjZS0+aWRlbnRpZmll
cigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAotICAgIGlmIChtX3N1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSB8fCAhbV9mcmFtZS0+c2V0dGluZ3MoKS5uZXR3b3JrUHJvY2Vzc0NTUEZyYW1l
QW5jZXN0b3JzQ2hlY2tpbmdFbmFibGVkKCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkucmVzdHJpY3RlZEhUVFBSZXNwb25zZUFjY2VzcygpKSB7CisgICAgaWYg
KG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpIHx8ICFwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9h
ZGVyU3RyYXRlZ3koKS0+aGF2ZVBlcmZvcm1lZFNlY3VyaXR5Q2hlY2tzKHJlc3BvbnNlKSkgewog
ICAgICAgICBhdXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwogICAgICAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3kgY29udGVudFNlY3VyaXR5UG9saWN5KFVSTCB7IHVybCB9LCB0aGlzKTsKICAgICAg
ICAgY29udGVudFNlY3VyaXR5UG9saWN5LmRpZFJlY2VpdmVIZWFkZXJzKENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNlIH0sIG1fcmVxdWVzdC5odHRwUmVmZXJy
ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCmluZGV4IDc5YWU2MTZiOGRjNjg1ZjU5NDZlZjE0MzQ4ZjI2MWYxZWI4MzhkODQu
LjdlMWIwZDhmZDYzNjY0ODhiMWJhNjRlMWI3NjllZTQ2ZTI1ZTIyOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC04OSwx
NCArODksMTQgQEAgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3UKICAgICByZXR1cm4gY3JlYXRlKGRv
Y3VtZW50LCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIG51bGxwdHIsIG51bGxw
dHIsIFdURk1vdmUocmVmZXJyZXIpLCBTaG91bGRMb2dFcnJvcjo6WWVzKTsKIH0KIAotc3RhdGlj
IGlubGluZSBib29sIGlzRG9pbmdTZWN1cml0eUNoZWNrc0luTmV0d29ya1Byb2Nlc3MoKQorc3Rh
dGljIGlubGluZSBib29sIHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc0RvaW5nTG9hZGlu
Z1NlY3VyaXR5Q2hlY2tzKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Fk
ZXJTdHJhdGVneSgpLT5zaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKIH0KIAogYm9vbCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnNob3VsZFNldEhUVFBIZWFkZXJzVG9LZWVwKCkgY29u
c3QKIHsKLSAgICBpZiAobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3Jz
ICYmIGlzRG9pbmdTZWN1cml0eUNoZWNrc0luTmV0d29ya1Byb2Nlc3MoKSkKKyAgICBpZiAobV9v
cHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzICYmIHNob3VsZFBlcmZvcm1T
ZWN1cml0eUNoZWNrcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZQog
ewogICAgIEFTU0VSVChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMp
OwogCi0gICAgaWYgKChtX29wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID09IFByZWZsaWdodFBvbGlj
eTo6Q29uc2lkZXIgJiYgaXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QocmVxdWVzdC5o
dHRwTWV0aG9kKCksIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSkgfHwgbV9vcHRpb25zLnBy
ZWZsaWdodFBvbGljeSA9PSBQcmVmbGlnaHRQb2xpY3k6OlByZXZlbnQgfHwgaXNEb2luZ1NlY3Vy
aXR5Q2hlY2tzSW5OZXR3b3JrUHJvY2VzcygpKSB7CisgICAgaWYgKChtX29wdGlvbnMucHJlZmxp
Z2h0UG9saWN5ID09IFByZWZsaWdodFBvbGljeTo6Q29uc2lkZXIgJiYgaXNTaW1wbGVDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3QocmVxdWVzdC5odHRwTWV0aG9kKCksIHJlcXVlc3QuaHR0cEhlYWRl
ckZpZWxkcygpKSkgfHwgbV9vcHRpb25zLnByZWZsaWdodFBvbGljeSA9PSBQcmVmbGlnaHRQb2xp
Y3k6OlByZXZlbnQgfHwgc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCkpIHsKICAgICAgICAg
aWYgKGNoZWNrVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChyZXF1ZXN0LnVybCgpKSkKICAgICAgICAg
ICAgIG1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7
CiAgICAgfSBlbHNlIHsKQEAgLTIwNyw4ICsyMDcsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZQogCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZVNpbXBsZUNyb3NzT3JpZ2lu
QWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIEFTU0VSVCht
X29wdGlvbnMucHJlZmxpZ2h0UG9saWN5ICE9IFByZWZsaWdodFBvbGljeTo6Rm9yY2UgfHwgaXNE
b2luZ1NlY3VyaXR5Q2hlY2tzSW5OZXR3b3JrUHJvY2VzcygpKTsKLSAgICBBU1NFUlQobV9vcHRp
b25zLnByZWZsaWdodFBvbGljeSA9PSBQcmVmbGlnaHRQb2xpY3k6OlByZXZlbnQgfHwgaXNTaW1w
bGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QocmVxdWVzdC5odHRwTWV0aG9kKCksIHJlcXVlc3Qu
aHR0cEhlYWRlckZpZWxkcygpKSB8fCBpc0RvaW5nU2VjdXJpdHlDaGVja3NJbk5ldHdvcmtQcm9j
ZXNzKCkpOworICAgIEFTU0VSVChtX29wdGlvbnMucHJlZmxpZ2h0UG9saWN5ICE9IFByZWZsaWdo
dFBvbGljeTo6Rm9yY2UgfHwgc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCkpOworICAgIEFT
U0VSVChtX29wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID09IFByZWZsaWdodFBvbGljeTo6UHJldmVu
dCB8fCBpc1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChyZXF1ZXN0Lmh0dHBNZXRob2Qo
KSwgcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpIHx8IHNob3VsZFBlcmZvcm1TZWN1cml0eUNo
ZWNrcygpKTsKIAogICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJlcXVlc3QsIHNl
Y3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAgICAg
bG9hZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgRG9TZWN1cml0eUNoZWNrKTsKQEAgLTI2Niwx
MiArMjY2LDYgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNsZWFyUmVzb3VyY2Uo
KQogICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgYm9vbCBpc1Jlc3BvbnNlQ29taW5nRnJvbU5ldHdvcmtQcm9jZXNzKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIGF1dG8gc291cmNlID0gcmVzcG9uc2Uu
c291cmNlKCk7Ci0gICAgcmV0dXJuIHNvdXJjZSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6
Ok5ldHdvcmsgfHwgc291cmNlID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hl
IHx8IHNvdXJjZSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZUFmdGVyVmFs
aWRhdGlvbjsKLX0KLQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMjk1LDcgKzI4OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
UmVzb3VyCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3Qp
KTsKICAgICB9CiAKLSAgICBpZiAoaXNEb2luZ1NlY3VyaXR5Q2hlY2tzSW5OZXR3b3JrUHJvY2Vz
cygpICYmIGlzUmVzcG9uc2VDb21pbmdGcm9tTmV0d29ya1Byb2Nlc3MocmVkaXJlY3RSZXNwb25z
ZSkpIHsKKyAgICBpZiAocGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmhh
dmVQZXJmb3JtZWRTZWN1cml0eUNoZWNrcyhyZWRpcmVjdFJlc3BvbnNlKSkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTQ3MCw3ICs0NjQsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlk
RmFpbCh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcgogICAgIC8vIE5l
dHdvcmtQcm9jZXNzIG1pZ2h0IHJldHVybiBhIENTUCB2aW9sYXRpb24gYXMgYW4gQWNjZXNzQ29u
dHJvbCBlcnJvciBpbiBjYXNlIG9mIHJlZGlyZWN0aW9uLgogICAgIC8vIExldCdzIHJlY2hlY2sg
Q1NQIHRvIGdlbmVyYXRlIHRoZSByZXBvcnQgaWYgbmVlZGVkLgogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgaW50cm9kdWNlIGFuIGVycm9yIGRlZGljYXRlZCB0byBDU1AgdmlvbGF0aW9uLgotICAg
IGlmIChpc0RvaW5nU2VjdXJpdHlDaGVja3NJbk5ldHdvcmtQcm9jZXNzKCkgJiYgZXJyb3IuaXNB
Y2Nlc3NDb250cm9sKCkgJiYgZXJyb3IuZmFpbGluZ1VSTCgpLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koZXJyb3IuZmFpbGluZ1VS
TCgpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVz
KSkgeworICAgIGlmIChzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKSAmJiBlcnJvci5pc0Fj
Y2Vzc0NvbnRyb2woKSAmJiBlcnJvci5mYWlsaW5nVVJMKCkucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpICYmICFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShlcnJvci5mYWlsaW5nVVJM
KCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMp
KSB7CiAgICAgICAgIHJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeUVycm9yKG1fcmVzb3VyY2Ut
PnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU3
OSw3ICs1NzMsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKCFpc0RvaW5nU2VjdXJpdHlDaGVja3NJbk5ldHdvcmtQcm9jZXNzKCkp
IHsKKyAgICBpZiAoIXNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBGcmFtZUxvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoKSBkb2VzIG5vdCB0ZWxsIHVz
IHdoZXRoZXIgYSByZWRpcmVjdCBoYXBwZW5lZCBvciBub3QsIHNvIHdlIGd1ZXNzIGJ5IGNvbXBh
cmluZyB0aGUKICAgICAgICAgLy8gcmVxdWVzdCBhbmQgcmVzcG9uc2UgVVJMcy4gVGhpcyBpc24n
dCBhIHBlcmZlY3QgdGVzdCB0aG91Z2gsIHNpbmNlIGEgc2VydmVyIGNhbiBzZXJ2ZSBhIHJlZGly
ZWN0IHRvIHRoZSBzYW1lIFVSTCB0aGF0IHdhcwogICAgICAgICAvLyByZXF1ZXN0ZWQuIEFsc28g
Y29tcGFyaW5nIHRoZSByZXF1ZXN0IGFuZCByZXNwb25zZSBVUkxzIGFzIHN0cmluZ3Mgd2lsbCBm
YWlsIGlmIHRoZSByZXF1ZXN0VVJMIHN0aWxsIGhhcyBpdHMgY3JlZGVudGlhbHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA5YWYxY2MzMGViMzIwYmQxYjRh
ZWJhMDFhYmM5OTEwYjkzOTYzMGZmLi44Mzg2NDJkOWRlNjA5N2YwZDYzZDVhZDQ4YmJmNTUzNThh
ZGNiNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5jcHAKQEAgLTI3
LDcgKzI3LDYgQEAKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogCiAjaW5jbHVkZSAiTmV0
d29ya0xvYWRNZXRyaWNzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDJmNWVmZWI2Yjg2YjhhMDY2OWUzNDFl
YjVlNDY5MTU5MTEwMzgwNDQuLmYxNDJiNTc3MjdiM2Y1OThhZjFmYTI5N2UyZDk5M2JiM2UxNTY2
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC04MSw3ICs4MSw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNEb2luZ0xvYWRpbmdTZWN1
cml0eUNoZWNrcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNo
b3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGhhdmVQZXJmb3JtZWRTZWN1cml0eUNoZWNrcyhjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZUZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90IHJlc291
cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdv
cmtNZXRyaWNzRnJvbVJlc291cmNlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlh
bWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggNWEyY2E3MGU3NTU4
ZTg3NjhlZDhkMzliZWFkMTAwYTRlYzNmZTFkMi4uZTJlNGM3Y2Y5MmY0MjhkN2M4MDg2NmI4YzY0
Zjk3YTc2MTJlMTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55
YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzEzLDggKzMx
Myw2IEBAIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVz
dGluZzoKICAgaW5pdGlhbDogZmFsc2UKIG5vdGlmaWNhdGlvbnNFbmFibGVkOgogICBpbml0aWFs
OiB0cnVlCi1uZXR3b3JrUHJvY2Vzc0NTUEZyYW1lQW5jZXN0b3JzQ2hlY2tpbmdFbmFibGVkOgot
ICBpbml0aWFsOiBmYWxzZQogCiAjIFNvbWUgYXBwcyBuZWVkcyBpc0xvYWRpbmdJbkFQSVNlbnNl
IHRvIGFjY291bnQgZm9yIGFjdGl2ZSBzdWJyZXNvdXJjZSBsb2FkZXJzLgogbmVlZHNJc0xvYWRp
bmdJbkFQSVNlbnNlUXVpcms6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggZWJlYjMwYjc3ZjZiN2Y2OTZlZTU0
MDcyYWYxNWQ0OThjNjkyNWUyMy4uMDMyMTc2NzM2MTMwM2Q3NTc4N2VmNWJiYjY4ZDBhMDViMGM4
ZjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMTQ0LDcgKzE0NCwxMSBAQCBwdWJsaWM6CiAKICAgICBl
bnVtIGNsYXNzIFNvdXJjZSB7IFVua25vd24sIE5ldHdvcmssIERpc2tDYWNoZSwgRGlza0NhY2hl
QWZ0ZXJWYWxpZGF0aW9uLCBNZW1vcnlDYWNoZSwgTWVtb3J5Q2FjaGVBZnRlclZhbGlkYXRpb24s
IFNlcnZpY2VXb3JrZXIsIEFwcGxpY2F0aW9uQ2FjaGUgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBT
b3VyY2Ugc291cmNlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTb3VyY2UoU291cmNlIHNvdXJjZSkg
eyBtX3NvdXJjZSA9IHNvdXJjZTsgfQorICAgIHZvaWQgc2V0U291cmNlKFNvdXJjZSBzb3VyY2Up
CisgICAgeworICAgICAgICBBU1NFUlQoc291cmNlICE9IFNvdXJjZTo6VW5rbm93bik7CisgICAg
ICAgIG1fc291cmNlID0gc291cmNlOworICAgIH0KIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U0hBMTo6RGlnZXN0PiYgY2FjaGVCb2R5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZUJvZHlL
ZXk7IH0KICAgICB2b2lkIHNldENhY2hlQm9keUtleShjb25zdCBTSEExOjpEaWdlc3QmIGtleSkg
eyBtX2NhY2hlQm9keUtleSA9IGtleTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDZjMzI0MDZmMzA2ODc2
OTEyYTI2MTYwNDIzNGVkMzYxYmNjOTc1YmMuLjRmOTZkN2MyYzg1OTdlM2FmN2E1ODYxMWIxMTA5
ZjVjYTk1ZGRhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmZXJyZXJQ
b2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAgLTMyMiw3ICszMjMsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTAogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZFBhcmFtZXRlcnMuc2hv
dWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnJlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MoKTsKKyAgICBsb2Fk
UGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBlcmZv
cm1TZWN1cml0eUNoZWNrcygpOwogCiAgICAgbG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZp
Z2F0aW9uID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSAmJiByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LT5pc01haW5GcmFtZSgpICYmIHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5tb2RlID09IEZldGNo
T3B0aW9uczo6TW9kZTo6TmF2aWdhdGU7CiAKQEAgLTQ5Myw3ICs0OTQsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlciwgdW5zaQogICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ID0gb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0
ID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZTsKICAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0g
Y2xpZW50Q3JlZGVudGlhbFBvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCh3ZWJGcmFtZSA/IHdlYkZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHIp
OwotICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzID0g
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXN0cmljdGVkSFRUUFJl
c3BvbnNlQWNjZXNzKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVz
cG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKIAogICAgIGxvYWRQ
YXJhbWV0ZXJzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9y
aWdpbiA9ICZkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKQEAgLTU0NSw3ICs1NDYsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjbwogICAgIGxvYWRQYXJhbWV0ZXJzLm9wdGlvbnMgPSBvcHRp
b25zOwogICAgIGxvYWRQYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgPSBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0KCZmcmFtZSk7Ci0gICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVz
cG9uc2VBY2Nlc3MgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJl
c3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRS
ZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygp
OwogICAgIGlmICghZG9jdW1lbnQtPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSgpKSB7CiAgICAgICAgIGlmIChhdXRvICogY29udGVudFNlY3VyaXR5UG9saWN5ID0g
ZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKQogICAgICAgICAgICAgbG9hZFBhcmFt
ZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25z
ZUhlYWRlcnMoKTsKQEAgLTYwMiw3ICs2MDMsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpw
cmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBXZWJDb3JlOjpVUgog
ICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgp
IDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKICAgICBwYXJhbWV0ZXJzLnN0
b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFy
YW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7Ci0gICAg
cGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzdHJpY3RlZEhUVFBSZXNwb25zZUFjY2Vz
cygpOworICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBz
aG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBwcm9w
ZXIgZGVzdGluYXRpb24gb25jZSBhbGwgZmV0Y2ggb3B0aW9ucyBhcmUgcGFzc2VkLgogICAgIHBh
cmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246
OkVtcHR5U3RyaW5nOwogCkBAIC02NjIsOSArNjYzLDI5IEBAIE5ldHdvcmtMb2FkTWV0cmljcyBX
ZWJMb2FkZXJTdHJhdGVneTo6bmV0d29ya01ldHJpY3NGcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmll
cih1CiAgICAgcmV0dXJuIG5ldHdvcmtNZXRyaWNzOwogfQogCi1ib29sIFdlYkxvYWRlclN0cmF0
ZWd5Ojppc0RvaW5nTG9hZGluZ1NlY3VyaXR5Q2hlY2tzKCkgY29uc3QKK2Jvb2wgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzdHJpY3RlZEhU
VFBSZXNwb25zZUFjY2VzcygpOwogfQogCitib29sIFdlYkxvYWRlclN0cmF0ZWd5OjpoYXZlUGVy
Zm9ybWVkU2VjdXJpdHlDaGVja3MoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNv
bnN0Cit7CisgICAgaWYgKCFzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHN3aXRjaCAocmVzcG9uc2Uuc291cmNlKCkpIHsKKyAgICBjYXNl
IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6QXBwbGljYXRpb25DYWNoZToKKyAgICBjYXNlIFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGU6CisgICAgY2FzZSBSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6Ok1lbW9yeUNhY2hlQWZ0ZXJWYWxpZGF0aW9uOgorICAgIGNhc2UgUmVz
b3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyOgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZToKKyAgICBj
YXNlIFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlQWZ0ZXJWYWxpZGF0aW9uOgor
ICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrOgorICAgIGNhc2UgUmVz
b3VyY2VSZXNwb25zZTo6U291cmNlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDUwNzIxNmI0ODEzZDhjZDlhMDRhM2Q2
ZGE3YzBkNTRmZDAwZjk0ZjYuLmVkMDIzZmNiOWY4YjZjNWI2ZDI0ZjU3YWJkMWRkMTg5M2YzMDBi
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaApAQCAtOTQsNyArOTQsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2VGcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmllcih1aW50NjRf
dCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBmaW5hbDsKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MgbmV0d29ya01ldHJpY3NGcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmllcih1aW50NjRf
dCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIGJvb2wgaXNEb2luZ0xvYWRp
bmdTZWN1cml0eUNoZWNrcygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxkUGVyZm9ybVNl
Y3VyaXR5Q2hlY2tzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBoYXZlUGVyZm9ybWVkU2VjdXJp
dHlDaGVja3MoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0IGZpbmFsOwog
CiAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+PiBtX2ludGVybmFs
bHlGYWlsZWRSZXNvdXJjZUxvYWRlcnM7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViTG9hZGVyU3Ry
YXRlZ3k+IG1faW50ZXJuYWxseUZhaWxlZExvYWRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZmRkMjA1NmMyZGJhODYwYjM0MWFmMWVk
MWJmNzYzMzgxNGYyMWVkMi4uMTlkNDI3ZTYyMzk3MTkxZGI0MTU5YmRiYzkzZWJiYzU1MTdlNzI5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTQ3MSw4ICs0NzEsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgV2ViQ29yZTo6cHJvdmlkZVVz
ZXJNZWRpYVRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYlVzZXJNZWRpYUNsaWVudCgqdGhpcykpOwog
I2VuZGlmCiAKLSAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TmV0d29ya1Byb2Nlc3NDU1BGcmFt
ZUFuY2VzdG9yc0NoZWNraW5nRW5hYmxlZCh0cnVlKTsKLQogICAgIG1fcGFnZS0+c2V0Q29udHJv
bGxlZEJ5QXV0b21hdGlvbihwYXJhbWV0ZXJzLmNvbnRyb2xsZWRCeUF1dG9tYXRpb24pOwogCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>