<?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>216227</bug_id>
          
          <creation_ts>2020-09-06 10:27:18 -0700</creation_ts>
          <short_desc>Proxy&apos;s &quot;ownKeys&quot; trap result should not be sorted</short_desc>
          <delta_ts>2020-09-14 14:30:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686195</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-06 10:27:18 -0700</bug_when>
    <thetext>Proxy&apos;s &quot;ownKeys&quot; trap result should not be sorted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686202</commentid>
    <comment_count>1</comment_count>
      <attachid>408127</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-06 11:40:54 -0700</bug_when>
    <thetext>Created attachment 408127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686203</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-06 11:53:56 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #1)
&gt; Created attachment 408127 [details]
&gt; Patch

                                                    r266637                    patch

object-get-own-property-symbols                 71.3406+-2.3277     ?     74.9081+-1.3303        ? might be 1.0500x slower
object-get-own-property-symbols-on-large-array  63.5366+-1.0785           61.9418+-0.9174          might be 1.0257x faster
reflect-own-keys                                77.5988+-0.7745           77.2685+-0.6758

Not sure why there is a slight Object.getOwnPropertySymbols() slowdown: the patch avoids second PropertyTable iteration for PropertyNameMode::Symbols.

This change also corrupts Symbol.iterator order observed by Reflect.ownKeys() on loose-mode `arguments` object with a custom string property is defined:

```
(function() { &quot;use loose&quot;; arguments.foo = 1; return Reflect.ownKeys(arguments); })(1, 2, 3)
```

IMO it&apos;s fine to land this change since a) ^ is a nearly-impossible code and b) we already report incorrect property order for lazily-materialized properties: &quot;lastIndex&quot;, function&apos;s &quot;name&quot; and &quot;length&quot;, strict-mode `arguments` etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686236</commentid>
    <comment_count>3</comment_count>
      <attachid>408139</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-06 15:23:20 -0700</bug_when>
    <thetext>Created attachment 408139
Patch

Fix incorrect assert in JSTests/stress/proxy-own-keys.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687128</commentid>
    <comment_count>4</comment_count>
      <attachid>408139</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-09 14:32:21 -0700</bug_when>
    <thetext>Comment on attachment 408139
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:369
&gt; +            ASSERT(propertyName.isSymbol() ? !propertyName.isPrivateName() : true);

Let&apos;s use `ASSERT(!propertyName.isPrivateName())`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688110</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-13 10:28:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/68807597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688175</commentid>
    <comment_count>6</comment_count>
      <attachid>408677</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-13 20:50:03 -0700</bug_when>
    <thetext>Created attachment 408677
Patch

Tweak ASSERT and reflect microbenchmark results in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688177</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-13 20:53:36 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #2)
&gt; Not sure why there is a slight Object.getOwnPropertySymbols() slowdown: the
&gt; patch avoids second PropertyTable iteration for PropertyNameMode::Symbols.

Thank you for review! cq? due to microbenchmarks results (--outer 200):

object-keys                           23.4018+-0.5233     !     24.7830+-0.3976        ! definitely 1.0590x slower
object-get-own-property-symbols       63.0929+-0.5759     !     70.7406+-0.6986        ! definitely 1.1212x slower

The slowdown is caused by grown Structure::getPropertyNamesFromStructure() code size.
Is this something we can fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688283</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-09-14 09:52:54 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #7)
&gt; (In reply to Alexey Shvayka from comment #2)
&gt; &gt; Not sure why there is a slight Object.getOwnPropertySymbols() slowdown: the
&gt; &gt; patch avoids second PropertyTable iteration for PropertyNameMode::Symbols.
&gt; 
&gt; Thank you for review! cq? due to microbenchmarks results (--outer 200):
&gt; 
&gt; object-keys                           23.4018+-0.5233     !    
&gt; 24.7830+-0.3976        ! definitely 1.0590x slower
&gt; object-get-own-property-symbols       63.0929+-0.5759     !    
&gt; 70.7406+-0.6986        ! definitely 1.1212x slower
&gt; 
&gt; The slowdown is caused by grown Structure::getPropertyNamesFromStructure()
&gt; code size.
&gt; Is this something we can fix?

I&apos;m not sure we care about this small of a regression on a microbenchmark if it doesn&apos;t show up on a macrobenchmark.

However, if we find out we care, we can maybe templatize the function on different enumeration modes.

However, I&apos;d say just land it as is right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688417</commentid>
    <comment_count>9</comment_count>
      <attachid>408677</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-09-14 14:24:06 -0700</bug_when>
    <thetext>Comment on attachment 408677
Patch

(In reply to Saam Barati from comment #8)
&gt; However, if we find out we care, we can maybe templatize the function on
&gt; different enumeration modes.
&gt; 
&gt; However, I&apos;d say just land it as is right now.

Also, we will regain most of the slowdown by caching Object.getOwnPropertySymbols() similar to r265934.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688419</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-14 14:30:30 -0700</bug_when>
    <thetext>Committed r267040: &lt;https://trac.webkit.org/changeset/267040&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408677.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408127</attachid>
            <date>2020-09-06 11:40:54 -0700</date>
            <delta_ts>2020-09-06 15:23:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216227-20200906214052.patch</filename>
            <type>text/plain</type>
            <size>17100</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjY2ODApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBQcm94eSdzICJvd25LZXlzIiB0cmFwIHJlc3VsdCBzaG91
bGQgbm90IGJlIHNvcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy1vbi1sYXJnZS1hcnJheS5qczoKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWdl
dC1vd24tcHJvcGVydHktc3ltYm9scy5qczoKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcmVm
bGVjdC1vd24ta2V5cy5qczogQWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMu
eWFtbDogTWFyayAyMCB0ZXN0IGNhc2VzIGFzIHBhc3NpbmcuCisKIDIwMjAtMDktMDQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBBbGlnbiBsZWdh
Y3kgSW50bCBjb25zdHJ1Y3RvciBiZWhhdmlvciB0byBzcGVjCkluZGV4OiBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1nZXQtb3du
LXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMJKHJldmlzaW9uIDI2NjYzNykKKysr
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMt
b24tbGFyZ2UtYXJyYXkuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsMTIgKzMsMTMgQEAgZnVuY3Rp
b24gdHJpYWwoKQogewogICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMTAwMDAwMDAp
OwogICAgIHZhciBpbnQ4VmlldyA9IG5ldyBJbnQ4QXJyYXkoYnVmZmVyKTsKLSAgICB2YXIgc3Rh
cnQgPSBEYXRlLm5vdygpOwotICAgIHZhciByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKGludDhWaWV3KTsKLSAgICB2YXIgZGVsdGEgPSBEYXRlLm5vdygpIC0gc3RhcnQ7Ci0g
ICAgaWYgKGRlbHRhID4gMTAwMCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0aW1lIGNvbnN1
bWluZyAoJHtkZWx0YX1tcylgKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMzAwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaW50OFZp
ZXcpOworICAgICAgICB2YXIgZGVsdGEgPSBEYXRlLm5vdygpIC0gc3RhcnQ7CisgICAgICAgIGlm
IChkZWx0YSA+IDEwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRpbWUgY29uc3Vt
aW5nICgke2RlbHRhfW1zKWApOworICAgIH0KIH0KIAogdHJpYWwoKTsKSW5kZXg6IEpTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
c3ltYm9scy5qcwkocmV2aXNpb24gMjY2NjM3KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTAs
NSArMTAsNSBAQCBmdW5jdGlvbiB0ZXN0KG9iamVjdCkKIH0KIG5vSW5saW5lKHRlc3QpOwogCi1m
b3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorZm9yICh2YXIgaSA9IDA7IGkgPCAyNTAwOyAr
K2kpCiAgICAgdGVzdChvYmplY3QpOwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcmVm
bGVjdC1vd24ta2V5cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9y
ZWZsZWN0LW93bi1rZXlzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3JlZmxlY3Qtb3duLWtleXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
dmFyIG9iaiA9IHt9LCBpOworZm9yIChpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIG9ialtgayR7
aX1gXSA9IGk7Citmb3IgKGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgb2JqW1N5bWJvbChpKV0g
PSBpOworCitub0lubGluZShSZWZsZWN0Lm93bktleXMpOworCitmb3IgKGkgPSAwOyBpIDwgMWU0
OyArK2kpCisgICAgUmVmbGVjdC5vd25LZXlzKG9iaik7CkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIv
ZXhwZWN0YXRpb25zLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0
aW9ucy55YW1sCShyZXZpc2lvbiAyNjY2MzcpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRp
b25zLnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTc4NiwyMSArNzg2LDkgQEAgdGVzdC9idWlsdC1p
bnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaQogdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJv
dG90eXBlL3RvU3RyaW5nL3VuaWNvZGUuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IENv
bmZvcm1zIHRvIE5hdGl2ZUZ1bmN0aW9uIFN5bnRheDogImZ1bmN0aW9uIGEoXFx1ezYyfSwgXFx1
MDA2MykgeyBcXHUwMDYyID0gXFx1ezAwMDYzfTsgcmV0dXJuIGI7IH0iIChmdW5jdGlvbiBcdTAw
NjEoXHV7NjJ9LCBcdTAwNjMpIHsgXHUwMDYyID0gXHV7MDAwNjN9OyByZXR1cm4gYjsgfSknCiAg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBDb25mb3JtcyB0byBOYXRpdmVGdW5jdGlvbiBT
eW50YXg6ICJmdW5jdGlvbiBhKFxcdXs2Mn0sIFxcdTAwNjMpIHsgXFx1MDA2MiA9IFxcdXswMDA2
M307IHJldHVybiBiOyB9IiAoZnVuY3Rpb24gXHUwMDYxKFx1ezYyfSwgXHUwMDYzKSB7IFx1MDA2
MiA9IFx1ezAwMDYzfTsgcmV0dXJuIGI7IH0pJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2Fzc2ln
bi9zdHJpbmdzLWFuZC1zeW1ib2wtb3JkZXItcHJveHkuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgpLCBmb28sIDBd
IHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgpLCBmb28sIDBdIHRv
IGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLXRlc3QvYnVpbHQtaW5zL09iamVjdC9kZWZpbmVQ
cm9wZXJ0aWVzL3Byb3h5LW5vLW93bmtleXMtcmV0dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwg
Zm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9v
LCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwogdGVzdC9idWlsdC1pbnMv
T2JqZWN0L2VudHJpZXMvb3JkZXItYWZ0ZXItZGVmaW5lLXByb3BlcnR5LmpzOgogICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBbYSwgbmFtZV0gYW5kIFtuYW1lLCBhXSB0byBoYXZl
IHRoZSBzYW1lIGNvbnRlbnRzLiAnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBbYSwgbmFtZV0gYW5kIFtuYW1lLCBhXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAn
Ci10ZXN0L2J1aWx0LWlucy9PYmplY3QvZnJlZXplL3Byb3h5LW5vLW93bmtleXMtcmV0dXJuZWQt
a2V5cy1vcmRlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5
bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250
ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJv
bCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50
cy4gJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2dldE93blByb3BlcnR5RGVzY3JpcHRvcnMvcHJv
eHktbm8tb3dua2V5cy1yZXR1cm5lZC1rZXlzLW9yZGVyLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFswLCBmb28sIFN5bWJvbCgp
XSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFswLCBmb28sIFN5bWJvbCgpXSB0
byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCiB0ZXN0L2J1aWx0LWlucy9PYmplY3QvaW50ZXJu
YWxzL0RlZmluZU93blByb3BlcnR5L2NvbnNpc3RlbnQtdmFsdWUtZnVuY3Rpb24tYXJndW1lbnRz
LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtudWxs
wrssIMKrW29iamVjdCBBcmd1bWVudHNdwrspIHRvIGJlIHRydWUnCiB0ZXN0L2J1aWx0LWlucy9P
YmplY3QvaW50ZXJuYWxzL0RlZmluZU93blByb3BlcnR5L2NvbnNpc3RlbnQtdmFsdWUtZnVuY3Rp
b24tY2FsbGVyLmpzOgpAQCAtODA4LDE4ICs3OTYsOSBAQCB0ZXN0L2J1aWx0LWlucy9PYmplY3Qv
aW50ZXJuYWxzL0RlZmluZU93CiB0ZXN0L2J1aWx0LWlucy9PYmplY3QvaW50ZXJuYWxzL0RlZmlu
ZU93blByb3BlcnR5L2NvbnNpc3RlbnQtdmFsdWUtcmVnZXhwLWRvbGxhcjEuanM6CiAgIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq8K7LCDCq3jCuykgdG8gYmUg
dHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
q8K7LCDCq3jCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL09iamVjdC9pc0Zyb3plbi9w
cm94eS1uby1vd25rZXlzLXJldHVybmVkLWtleXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9s
KCldIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCld
IHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLXRlc3QvYnVpbHQtaW5zL09iamVjdC9pc1Nl
YWxlZC9wcm94eS1uby1vd25rZXlzLXJldHVybmVkLWtleXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywg
U3ltYm9sKCldIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3lt
Ym9sKCldIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKIHRlc3QvYnVpbHQtaW5zL09iamVj
dC9rZXlzL29yZGVyLWFmdGVyLWRlZmluZS1wcm9wZXJ0eS5qczoKICAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgW2EsIGxlbmd0aF0gYW5kIFtsZW5ndGgsIGFdIHRvIGhhdmUgdGhl
IHNhbWUgY29udGVudHMuICcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFthLCBsZW5ndGhdIGFuZCBbbGVuZ3RoLCBhXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAn
Ci10ZXN0L2J1aWx0LWlucy9PYmplY3Qvc2VhbC9wcm94eS1uby1vd25rZXlzLXJldHVybmVkLWtl
eXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBTeW1i
b2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUgdGhlIHNhbWUgY29udGVu
dHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBTeW1ib2wo
KSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMu
ICcKIHRlc3QvYnVpbHQtaW5zL1Byb3h5L2FwcGx5L2FyZ3VtZW50cy1yZWFsbS5qczoKICAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZnVuY3Rpb24gQXJyYXko
KSB7JwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
ZnVuY3Rpb24gQXJyYXkoKSB7JwpAQCAtODU2LDkgKzgzNSw2IEBAIHRlc3QvYnVpbHQtaW5zL1By
b3h5L2NvbnN0cnVjdC9yZXR1cm4tbm8KIHRlc3QvYnVpbHQtaW5zL1Byb3h5L2NvbnN0cnVjdC90
cmFwLWlzLW5vdC1jYWxsYWJsZS1yZWFsbS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgYSBUeXBlRXJyb3IgYnV0IGdvdCBhIFR5cGVFcnJvcicKICAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIGJ1dCBnb3QgYSBUeXBlRXJyb3In
Ci10ZXN0L2J1aWx0LWlucy9Qcm94eS9vd25LZXlzL3RyYXAtaXMtdW5kZWZpbmVkLXRhcmdldC1p
cy1wcm94eS5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW2xlbmd0aCwg
Zm9vLCAwLCBTeW1ib2woKV0gYW5kIFtTeW1ib2woKSwgbGVuZ3RoLCBmb28sIDBdIHRvIGhhdmUg
dGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFtsZW5ndGgsIGZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGxlbmd0aCwgZm9v
LCAwXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCiB0ZXN0L2J1aWx0LWlucy9SZWdFeHAv
cHJvcGVydHktZXNjYXBlcy9nZW5lcmF0ZWQvQWxwaGFiZXRpYy5qczoKICAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogYFxwe0FscGhhYmV0aWN9YCBzaG91bGQgbWF0Y2ggVSswMDFDRkEgKGDhs7pg
KScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGBccHtBbHBoYWJldGljfWAgc2hvdWxk
IG1hdGNoIFUrMDAxQ0ZBIChg4bO6YCknCkBAIC0yMzc5LDkgKzIzNTUsNiBAQCB0ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL29iamVjdC9jb3ZlcmVkCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L29iamVjdC9jb3ZlcmVkLWlkZW50LW5hbWUtcHJvcC1uYW1lLWxpdGVyYWwtd2l0aC1lc2NhcGVk
LmpzOgogICBkZWZhdWx0OiAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0
ZXJzIGluIGtleXdvcmQgdG9rZW46ICd3XFx1MDA2OXRoJyIKICAgc3RyaWN0IG1vZGU6ICJTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBlc2NhcGVkIGNoYXJhY3RlcnMgaW4ga2V5d29yZCB0b2tlbjog
J3dcXHUwMDY5dGgnIgotdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvZHN0ci9vYmpl
Y3QtcmVzdC1wcm94eS1vd25rZXlzLXJldHVybmVkLWtleXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgp
LCBmb28sIDBdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgpLCBm
b28sIDBdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvb2JqZWN0L2lkZW50LW5hbWUtbWV0aG9kLWRlZi1icmVhay1lc2NhcGVkLmpzOgogICBk
ZWZhdWx0OiAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGtl
eXdvcmQgdG9rZW46ICdicmVcXHUwMDYxayciCiAgIHN0cmljdCBtb2RlOiAiU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGtleXdvcmQgdG9rZW46ICdicmVcXHUw
MDYxayciCkBAIC0yNjM4LDkgKzI2MTEsNiBAQCB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29i
amVjdC9tZXRob2QtCiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4
RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9tZXRoLWV2
YWwtdmFyLXNjb3BlLXN5bnRheC1lcnIuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRo
cm93biBhdCBhbGwnCi10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9vYmplY3Qtc3By
ZWFkLXByb3h5LW93bmtleXMtcmV0dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgW2ZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZv
bywgMF0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgW2ZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZvbywg
MF0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwogdGVzdC9sYW5ndWFnZS9leHByZXNzaW9u
cy9vYmplY3Qvc2NvcGUtZ2VuLW1ldGgtYm9keS1sZXgtZGlzdGluY3QuanM6CiAgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L29iamVjdC9zY29wZS1nZW4tbWV0aC1wYXJhbS1yZXN0LWVsZW0tdmFyLW9wZW4uanM6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjY0MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAy
MC0wOS0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgUHJveHkncyAib3duS2V5cyIgdHJhcCByZXN1bHQgc2hvdWxkIG5vdCBiZSBzb3J0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjIyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmVuIHRoYXQg
d2UgY2FuJ3Qga25vdyBpZiBvd25Qcm9wZXJ0eUtleXMoKSByZWNlaXZlZCBwcm9wZXJ0eSBuYW1l
cyBmcm9tCisgICAgICAgIHVzZXJsYW5kIFByb3h5J3MgIm93bktleXMiIHRyYXAsIHRoaXMgcGF0
Y2ggbW92ZXMgc3ltYm9scyBhZnRlciBzdHJpbmdzIHNvcnRpbmcgWzFdCisgICAgICAgIHRvIFN0
cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoKSwgYWxpZ25pbmcgb2JzZXJ2
ZWQgcHJvcGVydHkgb3JkZXIKKyAgICAgICAgKHZpYSBQcm94eSdzICJnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IiIHRyYXApIHdpdGggVjggYW5kIFNwaWRlck1vbmtleS4KKworICAgICAgICBBbHNv
LCByZW1vdmVzIHNvcnRpbmcgbG9naWMgZHVwbGljYXRpb24gaW4gb2JqZWN0Q29uc3RydWN0b3JB
c3NpZ24oKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBuZXV0cmFsLWlzaCBvbiB1bmNhY2hl
ZCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKCkgYW5kCisgICAgICAgIFJlZmxlY3Qub3du
S2V5cygpIG1pY3JvYmVuY2htYXJrcyBhbmQgZG9lc24ndCBhZmZlY3QgcHJvcGVydHkgbmFtZSBj
b2xsZWN0aW9uCisgICAgICAgIGJlc2lkZXMgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5
bWJvbHMgY2FzZXMuCisKKyAgICAgICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2Vj
LW9yZGluYXJ5b3ducHJvcGVydHlrZXlzIChzdGVwcyAzLTQpCisKKyAgICAgICAgKiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JB
c3NpZ24pOgorICAgICAgICAoSlNDOjpvd25Qcm9wZXJ0eUtleXMpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5h
bWVzRnJvbVN0cnVjdHVyZSk6CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3VsZCBh
bHdheXMgcGVyZm9ybSBbW1NldF1dIGluIHN0cmljdCBtb2RlCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyNjY2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Myw1MSArMzYzLDMwIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAgICAgc291cmNlLT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMoc291cmNlLCBnbG9iYWxPYmplY3QsIHByb3BlcnRp
ZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICAgICAgYXV0byBh
c3NpZ24gPSBbJl0gKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgdW5zaWdu
ZWQgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7CisgICAgICAgICAgICBjb25zdCBh
dXRvJiBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0aWVzW2pdOworICAgICAgICAgICAgQVNTRVJUKHBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpID8gIXByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkgOiB0
cnVlKTsKKwogICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc291cmNlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwogICAgICAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0eSA9IHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNs
b3Qoc291cmNlLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIGlmICghaGFzUHJvcGVydHkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIXNs
b3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBz
bG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZS0+Z2V0KGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRhcmdldCwgdHJ1ZSk7CiAg
ICAgICAgICAgICB0YXJnZXQtPnB1dElubGluZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gRmlyc3Qg
bG9vcCBpcyBmb3Igc3RyaW5ncy4gU2Vjb25kIGxvb3AgaXMgZm9yIHN5bWJvbHMgdG8ga2VlcCBz
dGFuZGFyZGl6ZWQgb3JkZXIgcmVxdWlyZW1lbnQgaW4gdGhlIHNwZWMuCi0gICAgICAgIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5b3ducHJvcGVydHlrZXlz
Ci0gICAgICAgIGJvb2wgZm91bmRTeW1ib2wgPSBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgbnVt
UHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBw
cm9wZXJ0eU5hbWUgPSBwcm9wZXJ0aWVzW2pdOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgICAgICAgICAgZm91bmRTeW1ib2wgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhc3Np
Z24ocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoZm91bmRTeW1ib2wpIHsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1Qcm9wZXJ0aWVzOyBqKyspIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0aWVzW2pdOwotICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpOwotICAgICAgICAg
ICAgICAgICAgICBhc3NpZ24ocHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0YXJn
ZXQpOwogfQpAQCAtOTgyLDI2ICs5NjEsMTYgQEAgSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEpT
R2xvYmFsT2JqZWN0KgogICAgIH0KIAogICAgIGNhc2UgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5n
c0FuZFN5bWJvbHM6IHsKLSAgICAgICAgVmVjdG9yPElkZW50aWZpZXIsIDE2PiBwcm9wZXJ0eVN5
bWJvbHM7CiAgICAgICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7CiAg
ICAgICAgICAgICBjb25zdCBhdXRvJiBpZGVudGlmaWVyID0gcHJvcGVydGllc1tpXTsKICAgICAg
ICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoIWlkZW50aWZpZXIuaXNQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0
eVN5bWJvbHMuYXBwZW5kKGlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdXNoRGlyZWN0KGdsb2JhbE9iamVjdCwga2V5
cywganNPd25lZFN0cmluZyh2bSwgaWRlbnRpZmllci5zdHJpbmcoKSkpOworICAgICAgICAgICAg
ICAgIHB1c2hEaXJlY3QoZ2xvYmFsT2JqZWN0LCBrZXlzLCBTeW1ib2w6OmNyZWF0ZSh2bSwgc3Rh
dGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwoKSkpKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHB1c2hEaXJlY3QoZ2xvYmFsT2JqZWN0LCBrZXlzLCBq
c093bmVkU3RyaW5nKHZtLCBpZGVudGlmaWVyLnN0cmluZygpKSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgfQotCi0gICAgICAgIC8v
IFRvIGVuc3VyZSB0aGUgb3JkZXIgZGVmaW5lZCBpbiB0aGUgc3BlYyAoOS4xLjEyKSwgd2UgYXBw
ZW5kIHN5bWJvbHMgYXQgdGhlIGxhc3QgZWxlbWVudHMgb2Yga2V5cy4KLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBpZGVudGlmaWVyIDogcHJvcGVydHlTeW1ib2xzKSB7Ci0gICAgICAgICAgICBw
dXNoRGlyZWN0KGdsb2JhbE9iamVjdCwga2V5cywgU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19j
YXN0PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKSk7Ci0gICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICAgICAgfQotCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDI2NjYzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzcsMTggKzExNzcs
MzUgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgYm9vbCBrbm93blVuaXF1ZSA9IHByb3BlcnR5TmFtZXMuY2FuQWRk
S25vd25VbmlxdWVGb3JTdHJ1Y3R1cmUoKTsKKyAgICBib29sIGZvdW5kU3ltYm9sID0gZmFsc2U7
CisKKyAgICBhdXRvIGNoZWNrRG9udEVudW1BbmRBZGQgPSBbJl0oUHJvcGVydHlUYWJsZTo6aXRl
cmF0b3IgaXRlcikgeworICAgICAgICBpZiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkg
eworICAgICAgICAgICAgaWYgKGtub3duVW5pcXVlKQorICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkVW5jaGVja2VkKGl0ZXItPmtleSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaXRlci0+a2V5KTsKKyAgICAgICAgfQorICAgIH07
CiAgICAgCiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUtPmVuZCgpOwog
ICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLT5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVCghaXNRdWlja1Byb3BlcnR5QWNj
ZXNzQWxsb3dlZEZvckVudW1lcmF0aW9uKCkgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgICAgIEFTU0VSVCghaXNRdWlja1Byb3BlcnR5
QWNjZXNzQWxsb3dlZEZvckVudW1lcmF0aW9uKCkgfHwgIWl0ZXItPmtleS0+aXNTeW1ib2woKSk7
Ci0gICAgICAgIGlmICghKGl0ZXItPmF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pIHx8IG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7Ci0gICAgICAgICAg
ICBpZiAoaXRlci0+a2V5LT5pc1N5bWJvbCgpICYmICFwcm9wZXJ0eU5hbWVzLmluY2x1ZGVTeW1i
b2xQcm9wZXJ0aWVzKCkpCisgICAgICAgIGlmIChpdGVyLT5rZXktPmlzU3ltYm9sKCkpIHsKKyAg
ICAgICAgICAgIGZvdW5kU3ltYm9sID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5h
bWVzLnByb3BlcnR5TmFtZU1vZGUoKSAhPSBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGtub3duVW5pcXVlKQotICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkVW5jaGVja2VkKGl0ZXItPmtleSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoaXRlci0+a2V5
KTsKKyAgICAgICAgfQorICAgICAgICBjaGVja0RvbnRFbnVtQW5kQWRkKGl0ZXIpOworICAgIH0K
KworICAgIGlmIChmb3VuZFN5bWJvbCAmJiBwcm9wZXJ0eU5hbWVzLnByb3BlcnR5TmFtZU1vZGUo
KSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scykgeworICAgICAgICAvLyBU
byBlbnN1cmUgdGhlIG9yZGVyIGRlZmluZWQgaW4gdGhlIHNwZWMsIHdlIGFwcGVuZCBzeW1ib2xz
IGF0IHRoZSBsYXN0IGVsZW1lbnRzIG9mIGtleXMuCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hMjYyLyNzZWMtb3JkaW5hcnlvd25wcm9wZXJ0eWtleXMKKyAgICAgICAgZm9yIChQcm9w
ZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpIHsKKyAgICAgICAgICAgIGlmIChpdGVyLT5rZXktPmlzU3ltYm9sKCkpCisgICAgICAg
ICAgICAgICAgY2hlY2tEb250RW51bUFuZEFkZChpdGVyKTsKICAgICAgICAgfQogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408139</attachid>
            <date>2020-09-06 15:23:20 -0700</date>
            <delta_ts>2020-09-13 20:49:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216227-20200907012319.patch</filename>
            <type>text/plain</type>
            <size>17713</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjY2ODEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA5LTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBQcm94eSdzICJvd25LZXlzIiB0cmFwIHJlc3VsdCBzaG91
bGQgbm90IGJlIHNvcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy1vbi1sYXJnZS1hcnJheS5qczoKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWdl
dC1vd24tcHJvcGVydHktc3ltYm9scy5qczoKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcmVm
bGVjdC1vd24ta2V5cy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3Byb3h5LW93bi1rZXlz
LmpzOiBGaXggaW5jb3JyZWN0IGFzc2VydC4KKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9u
cy55YW1sOiBNYXJrIDIwIHRlc3QgY2FzZXMgYXMgcGFzc2luZy4KKwogMjAyMC0wOS0wNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFsaWduIGxl
Z2FjeSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9yIHRvIHNwZWMKSW5kZXg6IEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJy
YXkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWdldC1v
d24tcHJvcGVydHktc3ltYm9scy1vbi1sYXJnZS1hcnJheS5qcwkocmV2aXNpb24gMjY2NjM3KQor
KysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy1vbi1sYXJnZS1hcnJheS5qcwkod29ya2luZyBjb3B5KQpAQCAtMywxMiArMywxMyBAQCBmdW5j
dGlvbiB0cmlhbCgpCiB7CiAgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxMDAwMDAw
MCk7CiAgICAgdmFyIGludDhWaWV3ID0gbmV3IEludDhBcnJheShidWZmZXIpOwotICAgIHZhciBz
dGFydCA9IERhdGUubm93KCk7Ci0gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHMoaW50OFZpZXcpOwotICAgIHZhciBkZWx0YSA9IERhdGUubm93KCkgLSBzdGFydDsK
LSAgICBpZiAoZGVsdGEgPiAxMDAwKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRpbWUgY29u
c3VtaW5nICgke2RlbHRhfW1zKWApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAzMDAwMDA7ICsraSkgeworICAgICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygp
OworICAgICAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhpbnQ4
Vmlldyk7CisgICAgICAgIHZhciBkZWx0YSA9IERhdGUubm93KCkgLSBzdGFydDsKKyAgICAgICAg
aWYgKGRlbHRhID4gMTAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdGltZSBjb25z
dW1pbmcgKCR7ZGVsdGF9bXMpYCk7CisgICAgfQogfQogCiB0cmlhbCgpOwpJbmRleDogSlNUZXN0
cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1zeW1ib2xzLmpzCShyZXZpc2lvbiAyNjY2MzcpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw1ICsxMCw1IEBAIGZ1bmN0aW9uIHRlc3Qob2JqZWN0KQogfQogbm9JbmxpbmUodGVzdCk7CiAK
LWZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCitmb3IgKHZhciBpID0gMDsgaSA8IDI1MDA7
ICsraSkKICAgICB0ZXN0KG9iamVjdCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9y
ZWZsZWN0LW93bi1rZXlzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L3JlZmxlY3Qtb3duLWtleXMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcmVmbGVjdC1vd24ta2V5cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
Cit2YXIgb2JqID0ge30sIGk7Citmb3IgKGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgb2JqW2Br
JHtpfWBdID0gaTsKK2ZvciAoaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBvYmpbU3ltYm9sKGkp
XSA9IGk7CisKK25vSW5saW5lKFJlZmxlY3Qub3duS2V5cyk7CisKK2ZvciAoaSA9IDA7IGkgPCAx
ZTQ7ICsraSkKKyAgICBSZWZsZWN0Lm93bktleXMob2JqKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L3Byb3h5LW93bi1rZXlzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3Byb3h5LW93
bi1rZXlzLmpzCShyZXZpc2lvbiAyNjY2MzcpCisrKyBKU1Rlc3RzL3N0cmVzcy9wcm94eS1vd24t
a2V5cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNDgyLDcgKzQ4Miw3IEBAIGZ1bmN0aW9uIHNoYWxs
b3dFcShhLCBiKSB7CiAgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7
CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgewogICAgICAgICBsZXQgcmVzdWx0
ID0gUmVmbGVjdC5vd25LZXlzKHByb3h5KTsKLSAgICAgICAgYXNzZXJ0KHNoYWxsb3dFcShyZXN1
bHQsIFsiYSIsICJiIiwgImMiLCBzMSwgczJdKSk7CisgICAgICAgIGFzc2VydChzaGFsbG93RXEo
cmVzdWx0LCBhcnIpKTsKICAgICAgICAgYXNzZXJ0KGNhbGxlZCk7CiAgICAgICAgIGNhbGxlZCA9
IGZhbHNlOwogICAgIH0KSW5kZXg6IEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHJldmlzaW9u
IDI2NjYzNykKKysrIEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkod29ya2luZyBj
b3B5KQpAQCAtNzg2LDIxICs3ODYsOSBAQCB0ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5
cGUvdG9TdHJpCiB0ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvdW5p
Y29kZS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogQ29uZm9ybXMgdG8gTmF0aXZlRnVu
Y3Rpb24gU3ludGF4OiAiZnVuY3Rpb24gYShcXHV7NjJ9LCBcXHUwMDYzKSB7IFxcdTAwNjIgPSBc
XHV7MDAwNjN9OyByZXR1cm4gYjsgfSIgKGZ1bmN0aW9uIFx1MDA2MShcdXs2Mn0sIFx1MDA2Mykg
eyBcdTAwNjIgPSBcdXswMDA2M307IHJldHVybiBiOyB9KScKICAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IENvbmZvcm1zIHRvIE5hdGl2ZUZ1bmN0aW9uIFN5bnRheDogImZ1bmN0aW9uIGEo
XFx1ezYyfSwgXFx1MDA2MykgeyBcXHUwMDYyID0gXFx1ezAwMDYzfTsgcmV0dXJuIGI7IH0iIChm
dW5jdGlvbiBcdTAwNjEoXHV7NjJ9LCBcdTAwNjMpIHsgXHUwMDYyID0gXHV7MDAwNjN9OyByZXR1
cm4gYjsgfSknCi10ZXN0L2J1aWx0LWlucy9PYmplY3QvYXNzaWduL3N0cmluZ3MtYW5kLXN5bWJv
bC1vcmRlci1wcm94eS5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW2Zv
bywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZvbywgMF0gdG8gaGF2ZSB0aGUgc2FtZSBj
b250ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW2Zvbywg
MCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZvbywgMF0gdG8gaGF2ZSB0aGUgc2FtZSBjb250
ZW50cy4gJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2RlZmluZVByb3BlcnRpZXMvcHJveHktbm8t
b3dua2V5cy1yZXR1cm5lZC1rZXlzLW9yZGVyLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFswLCBmb28sIFN5bWJvbCgpXSB0byBo
YXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFswLCBmb28sIFN5bWJvbCgpXSB0byBoYXZl
IHRoZSBzYW1lIGNvbnRlbnRzLiAnCiB0ZXN0L2J1aWx0LWlucy9PYmplY3QvZW50cmllcy9vcmRl
ci1hZnRlci1kZWZpbmUtcHJvcGVydHkuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFthLCBuYW1lXSBhbmQgW25hbWUsIGFdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMu
ICcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFthLCBuYW1lXSBhbmQg
W25hbWUsIGFdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLXRlc3QvYnVpbHQtaW5zL09i
amVjdC9mcmVlemUvcHJveHktbm8tb3dua2V5cy1yZXR1cm5lZC1rZXlzLW9yZGVyLmpzOgotICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFsw
LCBmb28sIFN5bWJvbCgpXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCi0gIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFswLCBm
b28sIFN5bWJvbCgpXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCi10ZXN0L2J1aWx0LWlu
cy9PYmplY3QvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy9wcm94eS1uby1vd25rZXlzLXJldHVy
bmVkLWtleXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFsw
LCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUgdGhlIHNhbWUg
Y29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBT
eW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUgdGhlIHNhbWUgY29u
dGVudHMuICcKIHRlc3QvYnVpbHQtaW5zL09iamVjdC9pbnRlcm5hbHMvRGVmaW5lT3duUHJvcGVy
dHkvY29uc2lzdGVudC12YWx1ZS1mdW5jdGlvbi1hcmd1bWVudHMuanM6CiAgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq251bGzCuywgwqtbb2JqZWN0IEFyZ3Vt
ZW50c13CuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVpbHQtaW5zL09iamVjdC9pbnRlcm5hbHMvRGVm
aW5lT3duUHJvcGVydHkvY29uc2lzdGVudC12YWx1ZS1mdW5jdGlvbi1jYWxsZXIuanM6CkBAIC04
MDgsMTggKzc5Niw5IEBAIHRlc3QvYnVpbHQtaW5zL09iamVjdC9pbnRlcm5hbHMvRGVmaW5lT3cK
IHRlc3QvYnVpbHQtaW5zL09iamVjdC9pbnRlcm5hbHMvRGVmaW5lT3duUHJvcGVydHkvY29uc2lz
dGVudC12YWx1ZS1yZWdleHAtZG9sbGFyMS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrwrssIMKreMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrwrssIMKreMK7KSB0byBiZSB0
cnVlJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2lzRnJvemVuL3Byb3h5LW5vLW93bmtleXMtcmV0
dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
WzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2Ft
ZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAs
IFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBj
b250ZW50cy4gJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2lzU2VhbGVkL3Byb3h5LW5vLW93bmtl
eXMtcmV0dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0
aGUgc2FtZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUg
c2FtZSBjb250ZW50cy4gJwogdGVzdC9idWlsdC1pbnMvT2JqZWN0L2tleXMvb3JkZXItYWZ0ZXIt
ZGVmaW5lLXByb3BlcnR5LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBb
YSwgbGVuZ3RoXSBhbmQgW2xlbmd0aCwgYV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwog
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW2EsIGxlbmd0aF0gYW5kIFts
ZW5ndGgsIGFdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLXRlc3QvYnVpbHQtaW5zL09i
amVjdC9zZWFsL3Byb3h5LW5vLW93bmtleXMtcmV0dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwg
Zm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9v
LCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwogdGVzdC9idWlsdC1pbnMv
UHJveHkvYXBwbHkvYXJndW1lbnRzLXJlYWxtLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqtmdW5jdGlvbiBBcnJheSgpIHsnCiAgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtmdW5jdGlvbiBBcnJheSgpIHsn
CkBAIC04NTYsOSArODM1LDYgQEAgdGVzdC9idWlsdC1pbnMvUHJveHkvY29uc3RydWN0L3JldHVy
bi1ubwogdGVzdC9idWlsdC1pbnMvUHJveHkvY29uc3RydWN0L3RyYXAtaXMtbm90LWNhbGxhYmxl
LXJlYWxtLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJv
ciBidXQgZ290IGEgVHlwZUVycm9yJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgYSBUeXBlRXJyb3IgYnV0IGdvdCBhIFR5cGVFcnJvcicKLXRlc3QvYnVpbHQtaW5zL1By
b3h5L293bktleXMvdHJhcC1pcy11bmRlZmluZWQtdGFyZ2V0LWlzLXByb3h5LmpzOgotICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBbbGVuZ3RoLCBmb28sIDAsIFN5bWJvbCgpXSBh
bmQgW1N5bWJvbCgpLCBsZW5ndGgsIGZvbywgMF0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4g
JwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW2xlbmd0aCwgZm9vLCAw
LCBTeW1ib2woKV0gYW5kIFtTeW1ib2woKSwgbGVuZ3RoLCBmb28sIDBdIHRvIGhhdmUgdGhlIHNh
bWUgY29udGVudHMuICcKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm9wZXJ0eS1lc2NhcGVzL2dl
bmVyYXRlZC9BbHBoYWJldGljLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBgXHB7QWxw
aGFiZXRpY31gIHNob3VsZCBtYXRjaCBVKzAwMUNGQSAoYOGzumApJwogICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogYFxwe0FscGhhYmV0aWN9YCBzaG91bGQgbWF0Y2ggVSswMDFDRkEgKGDh
s7pgKScKQEAgLTIzNzksOSArMjM1NSw2IEBAIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2Jq
ZWN0L2NvdmVyZWQKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L2NvdmVyZWQtaWRl
bnQtbmFtZS1wcm9wLW5hbWUtbGl0ZXJhbC13aXRoLWVzY2FwZWQuanM6CiAgIGRlZmF1bHQ6ICJT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBlc2NhcGVkIGNoYXJhY3RlcnMgaW4ga2V5d29yZCB0b2tl
bjogJ3dcXHUwMDY5dGgnIgogICBzdHJpY3QgbW9kZTogIlN5bnRheEVycm9yOiBVbmV4cGVjdGVk
IGVzY2FwZWQgY2hhcmFjdGVycyBpbiBrZXl3b3JkIHRva2VuOiAnd1xcdTAwNjl0aCciCi10ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9kc3RyL29iamVjdC1yZXN0LXByb3h5LW93bmtl
eXMtcmV0dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgW2ZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZvbywgMF0gdG8gaGF2ZSB0
aGUgc2FtZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgW2ZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZvbywgMF0gdG8gaGF2ZSB0aGUg
c2FtZSBjb250ZW50cy4gJwogdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvaWRlbnQt
bmFtZS1tZXRob2QtZGVmLWJyZWFrLWVzY2FwZWQuanM6CiAgIGRlZmF1bHQ6ICJTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBlc2NhcGVkIGNoYXJhY3RlcnMgaW4ga2V5d29yZCB0b2tlbjogJ2JyZVxc
dTAwNjFrJyIKICAgc3RyaWN0IG1vZGU6ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBlc2NhcGVk
IGNoYXJhY3RlcnMgaW4ga2V5d29yZCB0b2tlbjogJ2JyZVxcdTAwNjFrJyIKQEAgLTI2MzgsOSAr
MjYxMSw2IEBAIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhvZC0KICAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBTeW50YXhFcnJvciB0byBiZSB0aHJvd24g
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvb2JqZWN0L21ldGhvZC1kZWZpbml0aW9uL21ldGgtZXZhbC12YXItc2NvcGUtc3ludGF4
LWVyci5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBTeW50YXhFcnJv
ciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L29iamVjdC1zcHJlYWQtcHJveHktb3dua2V5cy1y
ZXR1cm5lZC1rZXlzLW9yZGVyLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBbZm9vLCAwLCBTeW1ib2woKV0gYW5kIFtTeW1ib2woKSwgZm9vLCAwXSB0byBoYXZlIHRoZSBz
YW1lIGNvbnRlbnRzLiAnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBb
Zm9vLCAwLCBTeW1ib2woKV0gYW5kIFtTeW1ib2woKSwgZm9vLCAwXSB0byBoYXZlIHRoZSBzYW1l
IGNvbnRlbnRzLiAnCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9zY29wZS1nZW4t
bWV0aC1ib2R5LWxleC1kaXN0aW5jdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgYSBTeW50YXhFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duIGF0IGFsbCcKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L3Njb3BlLWdlbi1t
ZXRoLXBhcmFtLXJlc3QtZWxlbS12YXItb3Blbi5qczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjY2NjQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA5LTA2ICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBQcm94eSdzICJvd25LZXlz
IiB0cmFwIHJlc3VsdCBzaG91bGQgbm90IGJlIHNvcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2l2ZW4gdGhhdCB3ZSBjYW4ndCBrbm93IHdoZXRo
ZXIgb3duUHJvcGVydHlLZXlzKCkgcmVjZWl2ZWQgcHJvcGVydHkgbmFtZXMgZnJvbQorICAgICAg
ICB1c2VybGFuZCBQcm94eSdzICJvd25LZXlzIiB0cmFwLCB0aGlzIHBhdGNoIG1vdmVzIHN5bWJv
bHMgYWZ0ZXIgc3RyaW5ncyBzb3J0aW5nIFsxXQorICAgICAgICB0byBTdHJ1Y3R1cmU6OmdldFBy
b3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKCksIGFsaWduaW5nIG9ic2VydmVkIHByb3BlcnR5IG9y
ZGVyCisgICAgICAgICh2aWEgUHJveHkncyAiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiB0cmFw
KSB3aXRoIFY4IGFuZCBTcGlkZXJNb25rZXkuCisKKyAgICAgICAgQWxzbywgcmVtb3ZlcyBzb3J0
aW5nIGxvZ2ljIGR1cGxpY2F0aW9uIGluIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKCkuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgaXMgbmV1dHJhbC1pc2ggb24gdW5jYWNoZWQgT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scygpIGFuZAorICAgICAgICBSZWZsZWN0Lm93bktleXMoKSBtaWNyb2Jl
bmNobWFya3MgYW5kIGRvZXNuJ3QgYWZmZWN0IHByb3BlcnR5IG5hbWUgY29sbGVjdGlvbgorICAg
ICAgICBiZXNpZGVzIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzIGNhc2VzLgor
CisgICAgICAgIFsxXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeW93bnBy
b3BlcnR5a2V5cyAoc3RlcHMgMy00KQorCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yQXNzaWduKToKKyAgICAg
ICAgKEpTQzo6b3duUHJvcGVydHlLZXlzKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1
cmUpOgorCiAyMDIwLTA5LTA0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaCBzaG91bGQgYWx3YXlzIHBlcmZvcm0g
W1tTZXRdXSBpbiBzdHJpY3QgbW9kZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY2NjM3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjMsNTEgKzM2MywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0CiAgICAgICAgIHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlv
bk1vZGUoRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7CisgICAgICAgIHVuc2lnbmVkIG51bVByb3BlcnRp
ZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IG51bVByb3BlcnRpZXM7IGorKykgeworICAgICAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlO
YW1lID0gcHJvcGVydGllc1tqXTsKKyAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUuaXNT
eW1ib2woKSA/ICFwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpIDogdHJ1ZSk7CisKICAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHNvdXJjZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkg
PSBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHNvdXJjZSwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoIWhhc1Byb3BlcnR5KQotICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChz
bG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IEpTVmFsdWUgdmFsdWU7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFzbG90LmlzVGFpbnRlZEJ5
T3BhcXVlT2JqZWN0KCkpKQogICAgICAgICAgICAgICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci0g
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHB1dFByb3BlcnR5U2xvdCh0YXJnZXQsIHRydWUpOwogICAgICAgICAgICAgdGFy
Z2V0LT5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9w
ZXJ0eVNsb3QpOwotICAgICAgICB9OwotCi0gICAgICAgIC8vIEZpcnN0IGxvb3AgaXMgZm9yIHN0
cmluZ3MuIFNlY29uZCBsb29wIGlzIGZvciBzeW1ib2xzIHRvIGtlZXAgc3RhbmRhcmRpemVkIG9y
ZGVyIHJlcXVpcmVtZW50IGluIHRoZSBzcGVjLgotICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0
aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeW93bnByb3BlcnR5a2V5cwotICAgICAgICBib29s
IGZvdW5kU3ltYm9sID0gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSBw
cm9wZXJ0aWVzLnNpemUoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG51bVBy
b3BlcnRpZXM7IGorKykgewotICAgICAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0g
cHJvcGVydGllc1tqXTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkg
ewotICAgICAgICAgICAgICAgIGZvdW5kU3ltYm9sID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXNzaWduKHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGZvdW5kU3ltYm9sKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKLSAgICAgICAgICAgICAgICBp
ZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYXNz
aWduKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0KTsKIH0KQEAgLTk4
MiwyNiArOTYxLDE2IEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9iamVjdCoK
ICAgICB9CiAKICAgICBjYXNlIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzOiB7
Ci0gICAgICAgIFZlY3RvcjxJZGVudGlmaWVyLCAxNj4gcHJvcGVydHlTeW1ib2xzOwogICAgICAg
ICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykgewogICAgICAgICAgICAgY29u
c3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNbaV07CiAgICAgICAgICAgICBpZiAoaWRl
bnRpZmllci5pc1N5bWJvbCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFpZGVudGlmaWVy
LmlzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlTeW1ib2xzLmFwcGVu
ZChpZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcHVzaERpcmVjdChnbG9iYWxPYmplY3QsIGtleXMsIGpzT3duZWRTdHJp
bmcodm0sIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICBwdXNoRGlyZWN0
KGdsb2JhbE9iamVjdCwga2V5cywgU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PFN5bWJv
bEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBwdXNoRGlyZWN0KGdsb2JhbE9iamVjdCwga2V5cywganNPd25lZFN0cmluZyh2
bSwgaWRlbnRpZmllci5zdHJpbmcoKSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBUbyBlbnN1cmUgdGhl
IG9yZGVyIGRlZmluZWQgaW4gdGhlIHNwZWMgKDkuMS4xMiksIHdlIGFwcGVuZCBzeW1ib2xzIGF0
IHRoZSBsYXN0IGVsZW1lbnRzIG9mIGtleXMuCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgaWRl
bnRpZmllciA6IHByb3BlcnR5U3ltYm9scykgewotICAgICAgICAgICAgcHVzaERpcmVjdChnbG9i
YWxPYmplY3QsIGtleXMsIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBs
Jj4oKmlkZW50aWZpZXIuaW1wbCgpKSkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7Ci0gICAgICAgIH0KLQogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CShyZXZpc2lvbiAyNjY2MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc3LDE4ICsxMTc3LDM1IEBAIHZvaWQgU3Ry
dWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnUKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGJvb2wga25vd25VbmlxdWUgPSBwcm9wZXJ0eU5hbWVzLmNhbkFkZEtub3duVW5pcXVlRm9y
U3RydWN0dXJlKCk7CisgICAgYm9vbCBmb3VuZFN5bWJvbCA9IGZhbHNlOworCisgICAgYXV0byBj
aGVja0RvbnRFbnVtQW5kQWRkID0gWyZdKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIpIHsK
KyAgICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkgfHwgbW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgICAg
IGlmIChrbm93blVuaXF1ZSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZFVuY2hl
Y2tlZChpdGVyLT5rZXkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIH0KKyAgICB9OwogICAgIAogICAgIFBy
b3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLT5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgewogICAgICAgICBBU1NFUlQoIWlzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JF
bnVtZXJhdGlvbigpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwogICAgICAgICBBU1NFUlQoIWlzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRG
b3JFbnVtZXJhdGlvbigpIHx8ICFpdGVyLT5rZXktPmlzU3ltYm9sKCkpOwotICAgICAgICBpZiAo
IShpdGVyLT5hdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSB8fCBtb2Rl
LmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXItPmtl
eS0+aXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lcy5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygp
KQorICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBmb3Vu
ZFN5bWJvbCA9IHRydWU7CisgICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lcy5wcm9wZXJ0eU5h
bWVNb2RlKCkgIT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scykKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChrbm93blVuaXF1ZSkKLSAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZFVuY2hlY2tlZChpdGVyLT5rZXkpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIH0K
KyAgICAgICAgY2hlY2tEb250RW51bUFuZEFkZChpdGVyKTsKKyAgICB9CisKKyAgICBpZiAoZm91
bmRTeW1ib2wgJiYgcHJvcGVydHlOYW1lcy5wcm9wZXJ0eU5hbWVNb2RlKCkgPT0gUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpIHsKKyAgICAgICAgLy8gVG8gZW5zdXJlIHRoZSBv
cmRlciBkZWZpbmVkIGluIHRoZSBzcGVjLCB3ZSBhcHBlbmQgc3ltYm9scyBhdCB0aGUgbGFzdCBl
bGVtZW50cyBvZiBrZXlzLgorICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2Vj
LW9yZGluYXJ5b3ducHJvcGVydHlrZXlzCisgICAgICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRl
cmF0b3IgaXRlciA9IHRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAg
ICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1N5bWJvbCgpKQorICAgICAgICAgICAgICAgIGNoZWNr
RG9udEVudW1BbmRBZGQoaXRlcik7CiAgICAgICAgIH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408677</attachid>
            <date>2020-09-13 20:50:03 -0700</date>
            <delta_ts>2020-09-14 14:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216227-20200914065002.patch</filename>
            <type>text/plain</type>
            <size>17788</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjcwMDcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA5LTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBQcm94eSdzICJvd25LZXlzIiB0cmFwIHJlc3VsdCBzaG91
bGQgbm90IGJlIHNvcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xz
LW9uLWxhcmdlLWFycmF5LmpzOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9vYmplY3QtZ2V0
LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9yZWZs
ZWN0LW93bi1rZXlzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJveHktb3duLWtleXMu
anM6IEZpeCBpbmNvcnJlY3QgYXNzZXJ0LgorICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25z
LnlhbWw6IE1hcmsgMjAgdGVzdCBjYXNlcyBhcyBwYXNzaW5nLgorCiAyMDIwLTA5LTExICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQ2Fub25pY2Fs
aXplICJ0cnVlIiB1bmljb2RlIGV4dGVuc2lvbiB0eXBlIHZhbHVlIHRvICIiCkluZGV4OiBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxh
cmdlLWFycmF5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVj
dC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMJKHJldmlzaW9uIDI2
NzAwNykKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1nZXQtb3duLXByb3BlcnR5
LXN5bWJvbHMtb24tbGFyZ2UtYXJyYXkuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsMTIgKzMsMTMg
QEAgZnVuY3Rpb24gdHJpYWwoKQogewogICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
MTAwMDAwMDApOwogICAgIHZhciBpbnQ4VmlldyA9IG5ldyBJbnQ4QXJyYXkoYnVmZmVyKTsKLSAg
ICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwotICAgIHZhciByZXN1bHQgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlTeW1ib2xzKGludDhWaWV3KTsKLSAgICB2YXIgZGVsdGEgPSBEYXRlLm5vdygpIC0g
c3RhcnQ7Ci0gICAgaWYgKGRlbHRhID4gMTAwMCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0
aW1lIGNvbnN1bWluZyAoJHtkZWx0YX1tcylgKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMzAwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIHN0YXJ0ID0gRGF0
ZS5ub3coKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMoaW50OFZpZXcpOworICAgICAgICB2YXIgZGVsdGEgPSBEYXRlLm5vdygpIC0gc3RhcnQ7Cisg
ICAgICAgIGlmIChkZWx0YSA+IDEwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRp
bWUgY29uc3VtaW5nICgke2RlbHRhfW1zKWApOworICAgIH0KIH0KIAogdHJpYWwoKTsKSW5kZXg6
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktc3ltYm9scy5qcwkocmV2aXNpb24gMjY3MDA3KQorKysgSlNUZXN0cy9taWNyb2Jl
bmNobWFya3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTAsNSArMTAsNSBAQCBmdW5jdGlvbiB0ZXN0KG9iamVjdCkKIH0KIG5vSW5saW5lKHRl
c3QpOwogCi1mb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorZm9yICh2YXIgaSA9IDA7IGkg
PCAyNTAwOyArK2kpCiAgICAgdGVzdChvYmplY3QpOwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcmVmbGVjdC1vd24ta2V5cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9yZWZsZWN0LW93bi1rZXlzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL3JlZmxlY3Qtb3duLWtleXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMCBAQAordmFyIG9iaiA9IHt9LCBpOworZm9yIChpID0gMDsgaSA8IDEwMDsgKytpKQorICAg
IG9ialtgayR7aX1gXSA9IGk7Citmb3IgKGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgb2JqW1N5
bWJvbChpKV0gPSBpOworCitub0lubGluZShSZWZsZWN0Lm93bktleXMpOworCitmb3IgKGkgPSAw
OyBpIDwgMWU0OyArK2kpCisgICAgUmVmbGVjdC5vd25LZXlzKG9iaik7CkluZGV4OiBKU1Rlc3Rz
L3N0cmVzcy9wcm94eS1vd24ta2V5cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9w
cm94eS1vd24ta2V5cy5qcwkocmV2aXNpb24gMjY3MDA3KQorKysgSlNUZXN0cy9zdHJlc3MvcHJv
eHktb3duLWtleXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBmdW5jdGlv
biBzaGFsbG93RXEoYSwgYikgewogICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhh
bmRsZXIpOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKICAgICAgICAgbGV0
IHJlc3VsdCA9IFJlZmxlY3Qub3duS2V5cyhwcm94eSk7Ci0gICAgICAgIGFzc2VydChzaGFsbG93
RXEocmVzdWx0LCBbImEiLCAiYiIsICJjIiwgczEsIHMyXSkpOworICAgICAgICBhc3NlcnQoc2hh
bGxvd0VxKHJlc3VsdCwgYXJyKSk7CiAgICAgICAgIGFzc2VydChjYWxsZWQpOwogICAgICAgICBj
YWxsZWQgPSBmYWxzZTsKICAgICB9CkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25z
LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCShy
ZXZpc2lvbiAyNjcwMDcpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHdv
cmtpbmcgY29weSkKQEAgLTgwNCwyMSArODA0LDkgQEAgdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24v
cHJvdG90eXBlL3RvU3RyaQogdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3Ry
aW5nL3VuaWNvZGUuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IENvbmZvcm1zIHRvIE5h
dGl2ZUZ1bmN0aW9uIFN5bnRheDogImZ1bmN0aW9uIGEoXFx1ezYyfSwgXFx1MDA2MykgeyBcXHUw
MDYyID0gXFx1ezAwMDYzfTsgcmV0dXJuIGI7IH0iIChmdW5jdGlvbiBcdTAwNjEoXHV7NjJ9LCBc
dTAwNjMpIHsgXHUwMDYyID0gXHV7MDAwNjN9OyByZXR1cm4gYjsgfSknCiAgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBDb25mb3JtcyB0byBOYXRpdmVGdW5jdGlvbiBTeW50YXg6ICJmdW5j
dGlvbiBhKFxcdXs2Mn0sIFxcdTAwNjMpIHsgXFx1MDA2MiA9IFxcdXswMDA2M307IHJldHVybiBi
OyB9IiAoZnVuY3Rpb24gXHUwMDYxKFx1ezYyfSwgXHUwMDYzKSB7IFx1MDA2MiA9IFx1ezAwMDYz
fTsgcmV0dXJuIGI7IH0pJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2Fzc2lnbi9zdHJpbmdzLWFu
ZC1zeW1ib2wtb3JkZXItcHJveHkuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgpLCBmb28sIDBdIHRvIGhhdmUgdGhl
IHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgpLCBmb28sIDBdIHRvIGhhdmUgdGhlIHNh
bWUgY29udGVudHMuICcKLXRlc3QvYnVpbHQtaW5zL09iamVjdC9kZWZpbmVQcm9wZXJ0aWVzL3By
b3h5LW5vLW93bmtleXMtcmV0dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2wo
KV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFuZCBbMCwgZm9vLCBTeW1ib2woKV0g
dG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwogdGVzdC9idWlsdC1pbnMvT2JqZWN0L2VudHJp
ZXMvb3JkZXItYWZ0ZXItZGVmaW5lLXByb3BlcnR5LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBbYSwgbmFtZV0gYW5kIFtuYW1lLCBhXSB0byBoYXZlIHRoZSBzYW1lIGNv
bnRlbnRzLiAnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBbYSwgbmFt
ZV0gYW5kIFtuYW1lLCBhXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCi10ZXN0L2J1aWx0
LWlucy9PYmplY3QvZnJlZXplL3Byb3h5LW5vLW93bmtleXMtcmV0dXJuZWQta2V5cy1vcmRlci5q
czoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29d
IGFuZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwotICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgWzAsIFN5bWJvbCgpLCBmb29dIGFu
ZCBbMCwgZm9vLCBTeW1ib2woKV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwotdGVzdC9i
dWlsdC1pbnMvT2JqZWN0L2dldE93blByb3BlcnR5RGVzY3JpcHRvcnMvcHJveHktbm8tb3dua2V5
cy1yZXR1cm5lZC1rZXlzLW9yZGVyLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFswLCBmb28sIFN5bWJvbCgpXSB0byBoYXZlIHRo
ZSBzYW1lIGNvbnRlbnRzLiAnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBbMCwgU3ltYm9sKCksIGZvb10gYW5kIFswLCBmb28sIFN5bWJvbCgpXSB0byBoYXZlIHRoZSBz
YW1lIGNvbnRlbnRzLiAnCiB0ZXN0L2J1aWx0LWlucy9PYmplY3QvaW50ZXJuYWxzL0RlZmluZU93
blByb3BlcnR5L2NvbnNpc3RlbnQtdmFsdWUtZnVuY3Rpb24tYXJndW1lbnRzLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtudWxswrssIMKrW29iamVj
dCBBcmd1bWVudHNdwrspIHRvIGJlIHRydWUnCiB0ZXN0L2J1aWx0LWlucy9PYmplY3QvaW50ZXJu
YWxzL0RlZmluZU93blByb3BlcnR5L2NvbnNpc3RlbnQtdmFsdWUtZnVuY3Rpb24tY2FsbGVyLmpz
OgpAQCAtODI2LDE4ICs4MTQsOSBAQCB0ZXN0L2J1aWx0LWlucy9PYmplY3QvaW50ZXJuYWxzL0Rl
ZmluZU93CiB0ZXN0L2J1aWx0LWlucy9PYmplY3QvaW50ZXJuYWxzL0RlZmluZU93blByb3BlcnR5
L2NvbnNpc3RlbnQtdmFsdWUtcmVnZXhwLWRvbGxhcjEuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq8K7LCDCq3jCuykgdG8gYmUgdHJ1ZScKICAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq8K7LCDCq3jCuykg
dG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL09iamVjdC9pc0Zyb3plbi9wcm94eS1uby1vd25r
ZXlzLXJldHVybmVkLWtleXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUg
dGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUgdGhl
IHNhbWUgY29udGVudHMuICcKLXRlc3QvYnVpbHQtaW5zL09iamVjdC9pc1NlYWxlZC9wcm94eS1u
by1vd25rZXlzLXJldHVybmVkLWtleXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRv
IGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhh
dmUgdGhlIHNhbWUgY29udGVudHMuICcKIHRlc3QvYnVpbHQtaW5zL09iamVjdC9rZXlzL29yZGVy
LWFmdGVyLWRlZmluZS1wcm9wZXJ0eS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgW2EsIGxlbmd0aF0gYW5kIFtsZW5ndGgsIGFdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVu
dHMuICcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFthLCBsZW5ndGhd
IGFuZCBbbGVuZ3RoLCBhXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCi10ZXN0L2J1aWx0
LWlucy9PYmplY3Qvc2VhbC9wcm94eS1uby1vd25rZXlzLXJldHVybmVkLWtleXMtb3JkZXIuanM6
Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBh
bmQgWzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLSAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFswLCBTeW1ib2woKSwgZm9vXSBhbmQg
WzAsIGZvbywgU3ltYm9sKCldIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKIHRlc3QvYnVp
bHQtaW5zL1Byb3h5L2FwcGx5L2FyZ3VtZW50cy1yZWFsbS5qczoKICAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZnVuY3Rpb24gQXJyYXkoKSB7JwogICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZnVuY3Rpb24gQXJy
YXkoKSB7JwpAQCAtODc0LDkgKzg1Myw2IEBAIHRlc3QvYnVpbHQtaW5zL1Byb3h5L2NvbnN0cnVj
dC9yZXR1cm4tbm8KIHRlc3QvYnVpbHQtaW5zL1Byb3h5L2NvbnN0cnVjdC90cmFwLWlzLW5vdC1j
YWxsYWJsZS1yZWFsbS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBU
eXBlRXJyb3IgYnV0IGdvdCBhIFR5cGVFcnJvcicKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIGJ1dCBnb3QgYSBUeXBlRXJyb3InCi10ZXN0L2J1aWx0
LWlucy9Qcm94eS9vd25LZXlzL3RyYXAtaXMtdW5kZWZpbmVkLXRhcmdldC1pcy1wcm94eS5qczoK
LSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW2xlbmd0aCwgZm9vLCAwLCBTeW1i
b2woKV0gYW5kIFtTeW1ib2woKSwgbGVuZ3RoLCBmb28sIDBdIHRvIGhhdmUgdGhlIHNhbWUgY29u
dGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFtsZW5ndGgs
IGZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGxlbmd0aCwgZm9vLCAwXSB0byBoYXZl
IHRoZSBzYW1lIGNvbnRlbnRzLiAnCiB0ZXN0L2J1aWx0LWlucy9SZWdFeHAvcHJvcGVydHktZXNj
YXBlcy9nZW5lcmF0ZWQvQWxwaGFiZXRpYy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
YFxwe0FscGhhYmV0aWN9YCBzaG91bGQgbWF0Y2ggVSswMDFDRkEgKGDhs7pgKScKICAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGBccHtBbHBoYWJldGljfWAgc2hvdWxkIG1hdGNoIFUrMDAx
Q0ZBIChg4bO6YCknCkBAIC0yNjgwLDkgKzI2NTYsNiBAQCB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Np
b25zL29iamVjdC9jb3ZlcmVkCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9jb3Zl
cmVkLWlkZW50LW5hbWUtcHJvcC1uYW1lLWxpdGVyYWwtd2l0aC1lc2NhcGVkLmpzOgogICBkZWZh
dWx0OiAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGtleXdv
cmQgdG9rZW46ICd3XFx1MDA2OXRoJyIKICAgc3RyaWN0IG1vZGU6ICJTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCBlc2NhcGVkIGNoYXJhY3RlcnMgaW4ga2V5d29yZCB0b2tlbjogJ3dcXHUwMDY5dGgn
IgotdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvZHN0ci9vYmplY3QtcmVzdC1wcm94
eS1vd25rZXlzLXJldHVybmVkLWtleXMtb3JkZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgpLCBmb28sIDBdIHRv
IGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFtmb28sIDAsIFN5bWJvbCgpXSBhbmQgW1N5bWJvbCgpLCBmb28sIDBdIHRvIGhh
dmUgdGhlIHNhbWUgY29udGVudHMuICcKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0
L2lkZW50LW5hbWUtbWV0aG9kLWRlZi1icmVhay1lc2NhcGVkLmpzOgogICBkZWZhdWx0OiAiU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGtleXdvcmQgdG9rZW46
ICdicmVcXHUwMDYxayciCiAgIHN0cmljdCBtb2RlOiAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
ZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGtleXdvcmQgdG9rZW46ICdicmVcXHUwMDYxayciCkBAIC0y
OTM5LDkgKzI5MTIsNiBAQCB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2Qt
CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUg
dGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9tZXRoLWV2YWwtdmFyLXNjb3Bl
LXN5bnRheC1lcnIuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgU3lu
dGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwn
Ci10ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9vYmplY3Qtc3ByZWFkLXByb3h5LW93
bmtleXMtcmV0dXJuZWQta2V5cy1vcmRlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgW2ZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZvbywgMF0gdG8gaGF2
ZSB0aGUgc2FtZSBjb250ZW50cy4gJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgW2ZvbywgMCwgU3ltYm9sKCldIGFuZCBbU3ltYm9sKCksIGZvbywgMF0gdG8gaGF2ZSB0
aGUgc2FtZSBjb250ZW50cy4gJwogdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3Qvc2Nv
cGUtZ2VuLW1ldGgtYm9keS1sZXgtZGlzdGluY3QuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIGEgU3ludGF4RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9zY29w
ZS1nZW4tbWV0aC1wYXJhbS1yZXN0LWVsZW0tdmFyLW9wZW4uanM6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzAwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wOS0xMyAgQWxl
eGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgUHJveHkncyAi
b3duS2V5cyIgdHJhcCByZXN1bHQgc2hvdWxkIG5vdCBiZSBzb3J0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjIyNworCisgICAgICAgIFJldmll
d2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgR2l2ZW4gdGhhdCB3ZSBjYW4ndCBrbm93
IHdoZXRoZXIgb3duUHJvcGVydHlLZXlzKCkgcmVjZWl2ZWQgcHJvcGVydHkgbmFtZXMgZnJvbQor
ICAgICAgICB1c2VybGFuZCBQcm94eSdzICJvd25LZXlzIiB0cmFwLCB0aGlzIHBhdGNoIG1vdmVz
IHN5bWJvbHMgYWZ0ZXIgc3RyaW5ncyBzb3J0aW5nIFsxXQorICAgICAgICB0byBTdHJ1Y3R1cmU6
OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKCksIGFsaWduaW5nIG9ic2VydmVkIHByb3Bl
cnR5IG9yZGVyCisgICAgICAgICh2aWEgUHJveHkncyAiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
IiB0cmFwKSB3aXRoIFY4IGFuZCBTcGlkZXJNb25rZXkuCisKKyAgICAgICAgQWxzbywgcmVtb3Zl
cyBzb3J0aW5nIGxvZ2ljIGR1cGxpY2F0aW9uIGluIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKCku
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgbmV1dHJhbCBvbiBwcm92aWRlZCBSZWZsZWN0Lm93
bktleXMgbWljcm9iZW5jaG1hcmsuIEFsdGhvdWdoIHByb3BlcnR5CisgICAgICAgIG5hbWUgY29s
bGVjdGlvbiBiZXNpZGVzIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzIGNhc2Vz
IGlzIHVuYWZmZWN0ZWQsCisgICAgICAgIE9iamVjdC57a2V5cyxnZXRPd25Qcm9wZXJ0eVN5bWJv
bHN9IG1pY3JvYmVuY2htYXJrcyByZWdyZXNzIGJ5IDYtMTIlIGR1ZSB0bworICAgICAgICBpbmNy
ZWFzZWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZSgpIGNvZGUgc2l6
ZS4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnlv
d25wcm9wZXJ0eWtleXMgKHN0ZXBzIDMtNCkKKworICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckFzc2lnbik6Cisg
ICAgICAgIChKU0M6Om93blByb3BlcnR5S2V5cyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9tU3Ry
dWN0dXJlKToKKwogMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24g
dHlwZSB2YWx1ZSB0byAiIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3MDA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjMsNTEgKzM2MywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0CiAgICAgICAgIHNvdXJjZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUo
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgICAgIGF1dG8gYXNzaWduID0gWyZdIChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSB7CisgICAgICAgIHVuc2lnbmVkIG51bVByb3BlcnRpZXMgPSBw
cm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG51bVBy
b3BlcnRpZXM7IGorKykgeworICAgICAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0g
cHJvcGVydGllc1tqXTsKKyAgICAgICAgICAgIEFTU0VSVCghcHJvcGVydHlOYW1lLmlzUHJpdmF0
ZU5hbWUoKSk7CisKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHNvdXJjZSwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICAgICAgICAg
IGJvb2wgaGFzUHJvcGVydHkgPSBzb3VyY2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVy
dHlTbG90KHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoIWhhc1Byb3Bl
cnR5KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgICAgICBpZiAoTElLRUxZ
KCFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkpKQogICAgICAgICAgICAgICAgIHZhbHVl
ID0gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2UtPmdldChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHB1dFByb3BlcnR5U2xvdCh0YXJnZXQsIHRydWUp
OwogICAgICAgICAgICAgdGFyZ2V0LT5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwotICAgICAgICB9OwotCi0gICAgICAgIC8vIEZp
cnN0IGxvb3AgaXMgZm9yIHN0cmluZ3MuIFNlY29uZCBsb29wIGlzIGZvciBzeW1ib2xzIHRvIGtl
ZXAgc3RhbmRhcmRpemVkIG9yZGVyIHJlcXVpcmVtZW50IGluIHRoZSBzcGVjLgotICAgICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeW93bnByb3BlcnR5
a2V5cwotICAgICAgICBib29sIGZvdW5kU3ltYm9sID0gZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVk
IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IG51bVByb3BlcnRpZXM7IGorKykgewotICAgICAgICAgICAgY29uc3QgYXV0
byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICAgICAgICAgIGZvdW5kU3ltYm9sID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
YXNzaWduKHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZvdW5kU3ltYm9sKSB7Ci0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsK
LSAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgYXNzaWduKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGFyZ2V0KTsKIH0KQEAgLTk4MiwyNiArOTYxLDE2IEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5
cyhKU0dsb2JhbE9iamVjdCoKICAgICB9CiAKICAgICBjYXNlIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzOiB7Ci0gICAgICAgIFZlY3RvcjxJZGVudGlmaWVyLCAxNj4gcHJvcGVy
dHlTeW1ib2xzOwogICAgICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6
ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykg
ewogICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNbaV07CiAg
ICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKCFpZGVudGlmaWVyLmlzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgcHJv
cGVydHlTeW1ib2xzLmFwcGVuZChpZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHVzaERpcmVjdChnbG9iYWxPYmplY3Qs
IGtleXMsIGpzT3duZWRTdHJpbmcodm0sIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAg
ICAgICAgICBwdXNoRGlyZWN0KGdsb2JhbE9iamVjdCwga2V5cywgU3ltYm9sOjpjcmVhdGUodm0s
IHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwdXNoRGlyZWN0KGdsb2JhbE9iamVjdCwga2V5
cywganNPd25lZFN0cmluZyh2bSwgaWRlbnRpZmllci5zdHJpbmcoKSkpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIH0KLQotICAgICAg
ICAvLyBUbyBlbnN1cmUgdGhlIG9yZGVyIGRlZmluZWQgaW4gdGhlIHNwZWMgKDkuMS4xMiksIHdl
IGFwcGVuZCBzeW1ib2xzIGF0IHRoZSBsYXN0IGVsZW1lbnRzIG9mIGtleXMuCi0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgaWRlbnRpZmllciA6IHByb3BlcnR5U3ltYm9scykgewotICAgICAgICAg
ICAgcHVzaERpcmVjdChnbG9iYWxPYmplY3QsIGtleXMsIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0
aWNfY2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSkpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgICAgIH0KLQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAyNjcwMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEwLDE4ICsx
MjEwLDM1IEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnUKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIGJvb2wga25vd25VbmlxdWUgPSBwcm9wZXJ0eU5hbWVzLmNh
bkFkZEtub3duVW5pcXVlRm9yU3RydWN0dXJlKCk7CisgICAgYm9vbCBmb3VuZFN5bWJvbCA9IGZh
bHNlOworCisgICAgYXV0byBjaGVja0RvbnRFbnVtQW5kQWRkID0gWyZdKFByb3BlcnR5VGFibGU6
Oml0ZXJhdG9yIGl0ZXIpIHsKKyAgICAgICAgaWYgKCEoaXRlci0+YXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkgfHwgbW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KCkpIHsKKyAgICAgICAgICAgIGlmIChrbm93blVuaXF1ZSkKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZFVuY2hlY2tlZChpdGVyLT5rZXkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIH0KKyAg
ICB9OwogICAgIAogICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLT5lbmQo
KTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS0+YmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoIWlzUXVpY2tQcm9wZXJ0
eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbigpIHx8ICEoaXRlci0+YXR0cmlidXRlcyAmIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgICAgICBBU1NFUlQoIWlzUXVpY2tQcm9w
ZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbigpIHx8ICFpdGVyLT5rZXktPmlzU3ltYm9s
KCkpOwotICAgICAgICBpZiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSB8fCBtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewotICAgICAg
ICAgICAgaWYgKGl0ZXItPmtleS0+aXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lcy5pbmNsdWRl
U3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1N5bWJvbCgpKSB7
CisgICAgICAgICAgICBmb3VuZFN5bWJvbCA9IHRydWU7CisgICAgICAgICAgICBpZiAocHJvcGVy
dHlOYW1lcy5wcm9wZXJ0eU5hbWVNb2RlKCkgIT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scykK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChrbm93blVuaXF1ZSkK
LSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZFVuY2hlY2tlZChpdGVyLT5rZXkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGl0ZXIt
PmtleSk7CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tEb250RW51bUFuZEFkZChpdGVyKTsKKyAg
ICB9CisKKyAgICBpZiAoZm91bmRTeW1ib2wgJiYgcHJvcGVydHlOYW1lcy5wcm9wZXJ0eU5hbWVN
b2RlKCkgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpIHsKKyAgICAgICAg
Ly8gVG8gZW5zdXJlIHRoZSBvcmRlciBkZWZpbmVkIGluIHRoZSBzcGVjLCB3ZSBhcHBlbmQgc3lt
Ym9scyBhdCB0aGUgbGFzdCBlbGVtZW50cyBvZiBrZXlzLgorICAgICAgICAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5b3ducHJvcGVydHlrZXlzCisgICAgICAgIGZvciAo
UHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CisgICAgICAgICAgICBpZiAoaXRlci0+a2V5LT5pc1N5bWJvbCgpKQorICAg
ICAgICAgICAgICAgIGNoZWNrRG9udEVudW1BbmRBZGQoaXRlcik7CiAgICAgICAgIH0KICAgICB9
CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>