<?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>223884</bug_id>
          
          <creation_ts>2021-03-29 10:37:12 -0700</creation_ts>
          <short_desc>Reduce bytecode instruction count emitted for `class extends`</short_desc>
          <delta_ts>2021-04-02 14:21:24 -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</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</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>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>1744768</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-29 10:37:12 -0700</bug_when>
    <thetext>Reduce bytecode instruction count emitted for `class extends`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744770</commentid>
    <comment_count>1</comment_count>
      <attachid>424544</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-29 10:40:21 -0700</bug_when>
    <thetext>Created attachment 424544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745372</commentid>
    <comment_count>2</comment_count>
      <attachid>424707</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-30 15:44:28 -0700</bug_when>
    <thetext>Created attachment 424707
Patch

Fix divots to point to correct location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746647</commentid>
    <comment_count>3</comment_count>
      <attachid>424707</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-02 13:47:32 -0700</bug_when>
    <thetext>Comment on attachment 424707
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:275
&gt; +static String invalidPrototypeSourceAppender(const String&amp; originalMessage, const String&amp; sourceText, RuntimeType, ErrorInstance::SourceTextWhereErrorOccurred occurrence)
&gt; +{
&gt; +    if (occurrence == ErrorInstance::FoundApproximateSource)
&gt; +        return defaultApproximateSourceError(originalMessage, sourceText);
&gt; +
&gt; +    auto extendsIndex = sourceText.reverseFind(&quot;extends&quot;);
&gt; +    if (extendsIndex == notFound || sourceText.find(&quot;extends&quot;) != extendsIndex)
&gt; +        return makeString(originalMessage, &quot; (evaluating &apos;&quot;, sourceText, &quot;&apos;)&quot;);
&gt; +
&gt; +    return &quot;The value of the superclass&apos;s prototype property is not an object or null.&quot;_s;
&gt; +}

This is awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746669</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 14:20:51 -0700</bug_when>
    <thetext>Committed r275439: &lt;https://commits.webkit.org/r275439&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424707.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746670</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-02 14:21:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/76165091&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424544</attachid>
            <date>2021-03-29 10:40:21 -0700</date>
            <delta_ts>2021-03-30 15:44:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223884-20210329204018.patch</filename>
            <type>text/plain</type>
            <size>20228</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1MTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDIxLTAzLTI5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBSZWR1Y2UgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gY291bnQgZW1pdHRlZCBmb3IgYGNs
YXNzIGV4dGVuZHNgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgYSB2YXJpYW50IG9mIGdsb2JhbEZ1bmNTZXRQcm90b3R5cGVE
aXJlY3QoKSB0aGF0IHRocm93cyBvbgorICAgICAgICBpbnZhbGlkIFtbUHJvdG90eXBlXV0gdmFs
dWVzIChpbnN0ZWFkIG9mIGlnbm9yaW5nIHRoZW0pIGFuZCB1dGlsaXplcyBpdCBpbgorICAgICAg
ICBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoKSwgcmVtb3ZpbmcgZXF1aXZhbGVudCBjaGVj
a3MuCisKKyAgICAgICAgVGhyb3dpbmcgZm9yIGludmFsaWQgYHN1cGVyY2xhc3MucHJvdG90eXBl
YCB2YWx1ZSBhZnRlciBzZXR0aW5nIHRoZSBbW1Byb3RvdHlwZV1dCisgICAgICAgIG9mIGBjb25z
dHJ1Y3RvcmAgaXMgdW5vYnNlcnZhYmxlIGJlY2F1c2UgaXQncyBhIG5ld2x5IGNyZWF0ZWQgZXh0
ZW5zaWJsZSBvYmplY3QKKyAgICAgICAgYW5kIGBzdXBlcmNsYXNzYCBpcyBhIHByb3ZlbiBvYmpl
Y3QuCisKKyAgICAgICAgVGhlIGZhY3QgdGhhdCBbW1Byb3RvdHlwZV1dIHNldCBjYW4gdGhyb3cg
b25seSBpbiBjYXNlIG9mIGBzdXBlcmNsYXNzLnByb3RvdHlwZWAKKyAgICAgICAgYWxsb3dzIGtl
ZXBpbmcgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSB2aWEgY3VzdG9tIGFwcGVuZGVyLiBUbyBm
aW5kICJleHRlbmRzIgorICAgICAgICBpbiBhIHNvdXJjZSBjb2RlLCBDbGFzc0V4cHJOb2RlIGlz
IG1hZGUgYW4gaW5zdGFuY2Ugb2YgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGVtaXR0ZWQgYnl0ZWNvZGVzIGJ5IDQs
IGFuZCBmaXhlcyBJc0NvbnN0cnVjdG9yJ3MKKyAgICAgICAgZXJyb3IgWzFdIHRvIHBvaW50IHRv
IGNvcnJlY3Qgc291cmNlIGNvZGUgbGluZS4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5l
cy9lY21hMjYyLyNzZWMtcnVudGltZS1zZW1hbnRpY3MtY2xhc3NkZWZpbml0aW9uZXZhbHVhdGlv
biAoc3RlcCA1LmYpCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVD
bGFzc0V4cHIpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6
CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQ2xhc3NFeHByKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjppbnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIp
OgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJvdG90eXBlRXJyb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oOgorCiAyMDIxLTAzLTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0lOREVYRURfREFUQUJBU0UgJiBFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTLCBpdCBzZWVtcyBsaWtlIGl0IGlzIG9uIGZvciBhbGwg
cG9ydHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKHNldEJ1Y2tldE5leHQpIFwKICAgICBtYWNybyhzZXRCdWNr
ZXRLZXkpIFwKICAgICBtYWNybyhzZXRQcm90b3R5cGVEaXJlY3QpIFwKKyAgICBtYWNybyhzZXRQ
cm90b3R5cGVEaXJlY3RPclRocm93KSBcCiAgICAgbWFjcm8ocmVnRXhwQnVpbHRpbkV4ZWMpIFwK
ICAgICBtYWNybyhyZWdFeHBNYXRjaEZhc3QpIFwKICAgICBtYWNybyhyZWdFeHBQcm90b0ZsYWdz
R2V0dGVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
aW5rVGltZUNvbnN0YW50LmgJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihzZXRCdWNrZXROZXh0LCBudWxs
cHRyKSBcCiAgICAgdihzZXRCdWNrZXRLZXksIG51bGxwdHIpIFwKICAgICB2KHNldFByb3RvdHlw
ZURpcmVjdCwgbnVsbHB0cikgXAorICAgIHYoc2V0UHJvdG90eXBlRGlyZWN0T3JUaHJvdywgbnVs
bHB0cikgXAogICAgIHYoY29weURhdGFQcm9wZXJ0aWVzLCBudWxscHRyKSBcCiAgICAgdihlbnF1
ZXVlSm9iLCBudWxscHRyKSBcCiAgICAgdihtYWtlVHlwZUVycm9yLCBudWxscHRyKSBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3MDYsMTYgKzI3MDYsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRQcgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvdG90eXBlKQordGVtcGxhdGU8SW52YWxpZFByb3RvdHlwZU1vZGUgbW9kZT4KK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvdG90eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldFByb3RvdHlwZURpcmVj
dCA9IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OnNldFBy
b3RvdHlwZURpcmVjdCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldFByb3RvdHlwZURpcmVj
dCA9IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIG1vZGUgPT0gSW52YWxpZFByb3RvdHlw
ZU1vZGU6OlRocm93ID8gTGlua1RpbWVDb25zdGFudDo6c2V0UHJvdG90eXBlRGlyZWN0T3JUaHJv
dyA6IExpbmtUaW1lQ29uc3RhbnQ6OnNldFByb3RvdHlwZURpcmVjdCk7CiAKICAgICBDYWxsQXJn
dW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIsIDEpOwogICAgIG1vdmUoYXJncy50aGlzUmVnaXN0
ZXIoKSwgYmFzZSk7CiAgICAgbW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHByb3RvdHlw
ZSk7CiAKLSAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbjsKLSAgICBlbWl0Q2FsbChuZXdUZW1w
b3JhcnkoKSwgc2V0UHJvdG90eXBlRGlyZWN0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFy
Z3MsIHBvc2l0aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpObyk7Cisg
ICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIHNldFByb3RvdHlwZURpcmVjdC5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIERlYnVn
Z2FibGVDYWxsOjpObyk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJ
KHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGVudW0gY2xhc3MgRGVidWdnYWJsZUNhbGwgeyBZZXMsIE5vIH07
CiAgICAgZW51bSBjbGFzcyBUaGlzUmVzb2x1dGlvblR5cGUgeyBMb2NhbCwgU2NvcGVkIH07Cisg
ICAgZW51bSBjbGFzcyBJbnZhbGlkUHJvdG90eXBlTW9kZSA6IHVpbnQ4X3QgeyBUaHJvdywgSWdu
b3JlIH07CiAgICAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICAK
ICAgICBjbGFzcyBDYWxsQXJndW1lbnRzIHsKQEAgLTgxNCw3ICs4MTUsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldFByb3RvdHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFs
dWUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvdG90eXBlKTsKKworICAgICAgICB0ZW1wbGF0ZTxJ
bnZhbGlkUHJvdG90eXBlTW9kZT4KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFNldFBy
b3RvdHlwZU9mKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTcsNyAr
ODE3LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcgogCiAgICAg
aWYgKFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoZ2VuZXJhdG9yLnZtKCks
IG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobm9kZS5tX2Fzc2lnbik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
U2V0UHJvdG90eXBlT2YobmV3T2JqLCBwcm90b3R5cGUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdERpcmVjdFNldFByb3RvdHlwZU9mPEludmFsaWRQcm90b3R5cGVNb2RlOjpJZ25vcmU+
KG5ld09iaiwgcHJvdG90eXBlLmdldCgpLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0
aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTIxMSwxOSArNTIxMSwxNCBAQCBS
ZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAKICAgICAgICAgUmVmPExh
YmVsPiBzdXBlcmNsYXNzSXNDb25zdHJ1Y3RvckxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzQ29uc3Ry
dWN0b3IoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzdXBlcmNsYXNzLmdldCgpKSwgc3VwZXJj
bGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdCgpKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVGhlIHN1cGVyY2xhc3MgaXMgbm90IGEgY29uc3Ry
dWN0b3IuIl9zKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzdXBlcmNsYXNzSXNDb25z
dHJ1Y3RvckxhYmVsLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3Rv
UGFyZW50LmdldCgpLCBzdXBlcmNsYXNzLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSk7CiAKLSAgICAgICAgUmVmPExhYmVsPiBwcm90b1BhcmVudElzT2JqZWN0T3JO
dWxsTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0SXNPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBwcm90b1BhcmVudC5nZXQoKSksIHByb3RvUGFyZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQo
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzTnVs
bChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3RvUGFyZW50LmdldCgpKSwgcHJvdG9QYXJl
bnRJc09iamVjdE9yTnVsbExhYmVsLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJv
d1R5cGVFcnJvcigiVGhlIHZhbHVlIG9mIHRoZSBzdXBlcmNsYXNzJ3MgcHJvdG90eXBlIHByb3Bl
cnR5IGlzIG5vdCBhbiBvYmplY3Qgb3IgbnVsbC4iX3MpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHByb3RvUGFyZW50SXNPYmplY3RPck51bGxMYWJlbC5nZXQoKSk7Ci0KLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihjb25zdHJ1Y3Rvci5nZXQoKSwgc3Vw
ZXJjbGFzcy5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0U2V0UHJvdG90eXBl
T2Y8SW52YWxpZFByb3RvdHlwZU1vZGU6OlRocm93Pihjb25zdHJ1Y3Rvci5nZXQoKSwgc3VwZXJj
bGFzcy5nZXQoKSwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbik7IC8vIG5ldmVy
IGFjdHVhbGx5IHRocm93cwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHN1cGVyY2xhc3NJ
c051bGxMYWJlbC5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0U2V0UHJvdG90
eXBlT2YocHJvdG90eXBlLmdldCgpLCBwcm90b1BhcmVudC5nZXQoKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0RGlyZWN0U2V0UHJvdG90eXBlT2Y8SW52YWxpZFByb3RvdHlwZU1vZGU6OlRocm93
Pihwcm90b3R5cGUuZ2V0KCksIHByb3RvUGFyZW50LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90KCkpOwogICAgIH0KIAogICAgIGlmIChuZWVkc0hvbWVPYmplY3QpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMjc1MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxMiwxMCArNDEyLDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBDbGFzc0V4
cHJOb2RlKiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgUGFyc2VyQ2xhc3NJbmZvPEFTVEJ1aWxkZXI+JiBjbGFzc0luZm8sIFZhcmlhYmxlRW52
aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwK
LSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHBhcmVudENsYXNzLCBQcm9wZXJ0eUxpc3ROb2RlKiBj
bGFzc0VsZW1lbnRzKQorICAgICAgICBFeHByZXNzaW9uTm9kZSogcGFyZW50Q2xhc3MsIFByb3Bl
cnR5TGlzdE5vZGUqIGNsYXNzRWxlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQog
ICAgIHsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJl
c3Npb24oY2xhc3NJbmZvLnN0YXJ0T2Zmc2V0LCBjbGFzc0luZm8uZW5kT2Zmc2V0LCBjbGFzc0lu
Zm8uc3RhcnRMaW5lLCBjbGFzc0luZm8uc3RhcnRDb2x1bW4pOwotICAgICAgICByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBDbGFzc0V4cHJOb2RlKGxvY2F0aW9uLCAqY2xhc3NJbmZvLmNsYXNz
TmFtZSwgc291cmNlLCBjbGFzc0Vudmlyb25tZW50LCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3Ms
IGNsYXNzRWxlbWVudHMpOworICAgICAgICBDbGFzc0V4cHJOb2RlKiBub2RlID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBDbGFzc0V4cHJOb2RlKGxvY2F0aW9uLCAqY2xhc3NJbmZvLmNsYXNzTmFtZSwg
c291cmNlLCBjbGFzc0Vudmlyb25tZW50LCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNz
RWxlbWVudHMpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2
b3QsIGVuZCk7CisgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAyNzUxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
NTYsNyArMjM1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUeXBlIG1fdHlwZTsKICAg
ICB9OwogCi0gICAgY2xhc3MgQ2xhc3NFeHByTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFZhcmlhYmxlRW52aXJvbm1lbnROb2RlIHsKKyAgICBjbGFzcyBDbGFzc0V4
cHJOb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEsIHB1YmxpYyBWYXJpYWJsZUVudmlyb25tZW50Tm9kZSB7CiAgICAgICAgIEpT
Q19NQUtFX1BBUlNFUl9BUkVOQV9ERUxFVEFCTEVfQUxMT0NBVEVEKENsYXNzRXhwck5vZGUpOwog
ICAgIHB1YmxpYzoKICAgICAgICAgQ2xhc3NFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAyNzUxNTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4OTAsNiArMjg5MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUNsYXNzRXgKICAgICBpbmZvLnN0YXJ0TGluZSA9IGxvY2F0aW9uLmxpbmU7CiAgICAgaW5mby5z
dGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IGxvY2F0
aW9uLnN0YXJ0T2Zmc2V0OworICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0
YXJ0UG9zaXRpb24oKTsKIAogICAgIEF1dG9Qb3BTY29wZVJlZiBjbGFzc1Njb3BlKHRoaXMsIHB1
c2hTY29wZSgpKTsKICAgICBjbGFzc1Njb3BlLT5zZXRJc0xleGljYWxTY29wZSgpOwpAQCAtMjky
NCw2ICsyOTI1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeAog
ICAgIGNvbnN0IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQgPSBwYXJlbnRDbGFzcyA/
IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZTsKIAogICAg
IGNvbnN1bWVPckZhaWwoT1BFTkJSQUNFLCAiRXhwZWN0ZWQgb3BlbmluZyAneycgYXQgdGhlIHN0
YXJ0IG9mIGEgY2xhc3MgYm9keSIpOworICAgIEpTVGV4dFBvc2l0aW9uIGNsYXNzQm9keVN0YXJ0
ID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKIAogICAgIFRyZWVFeHByZXNzaW9uIGNvbnN0cnVj
dG9yID0gMDsKICAgICBUcmVlUHJvcGVydHlMaXN0IGNsYXNzRWxlbWVudHMgPSAwOwpAQCAtMzE3
MCw3ICszMTcyLDcgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2Uo
Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKSwgIkNhbm5vdCByZWZlcmVu
Y2UgdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzIik7CiAgICAgfQogCi0gICAgYXV0byBjbGFzc0V4
cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NT
Y29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENs
YXNzLCBjbGFzc0VsZW1lbnRzKTsKKyAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRleHQu
Y3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxleGlj
YWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVudHMs
IGRpdm90U3RhcnQsIGNsYXNzQm9keVN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKICAg
ICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlp
ZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVBd2FpdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXdhaXRFeHByOyB9Ci0gICAgQ2xhc3NF
eHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQ
YXJzZXJDbGFzc0luZm88U3ludGF4Q2hlY2tlcj4mLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNz
RXhwcjsgfQorICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyQ2xhc3NJbmZvPFN5bnRheENoZWNrZXI+JiwgVmFyaWFi
bGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlM
aXN0LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlR2VuZXJhdG9yRnVuY3Rpb25Cb2R5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYs
IGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVBc3luY0Z1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlv
bkV4cHI7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNzUxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYy
LDYgKzI2MiwxOCBAQCBzdGF0aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mCiAg
ICAgcmV0dXJuIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoIltTeW1i
b2wuaGFzSW5zdGFuY2VdIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9yIG51bGwiX3Ms
IG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9jY3VycmVuY2UpOwog
fQogCitzdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcihjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1l
VHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJl
bmNlKQoreworICAgIGlmIChvY2N1cnJlbmNlID09IEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94
aW1hdGVTb3VyY2UpCisgICAgICAgIHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJv
cihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRleHQpOworCisgICAgYXV0byBleHRlbmRzSW5kZXgg
PSBzb3VyY2VUZXh0LnJldmVyc2VGaW5kKCJleHRlbmRzIik7CisgICAgaWYgKGV4dGVuZHNJbmRl
eCA9PSBub3RGb3VuZCB8fCBzb3VyY2VUZXh0LmZpbmQoImV4dGVuZHMiKSAhPSBleHRlbmRzSW5k
ZXgpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG9yaWdpbmFsTWVzc2FnZSwgIiAoZXZhbHVh
dGluZyAnIiwgc291cmNlVGV4dCwgIicpIik7CisKKyAgICByZXR1cm4gIlRoZSB2YWx1ZSBvZiB0
aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBwcm9wZXJ0eSBpcyBub3QgYW4gb2JqZWN0IG9yIG51
bGwuIl9zOworfQorCiBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFcnJvckluc3Rh
bmNlOjpTb3VyY2VBcHBlbmRlciBhcHBlbmRlcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CkBAIC0zMjEsNiArMzMzLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBbk9iamVj
dEVycm9yKEpTR2xvYmEKICAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSwgImlzIG5vdCBhbiBvYmplY3QiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlcik7CiB9CiAKK0pT
T2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJvdG90eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFs
T2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBhbiBvYmplY3Qgb3IgbnVsbCJfcywgaW52YWxpZFByb3Rv
dHlwZVNvdXJjZUFwcGVuZGVyKTsKK30KKwogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxp
ZEdsb2JhbEFzc2lnbm1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZygiU3RyaWN0IG1vZGUgZm9yYmlkcyBpbXBsaWNpdCBjcmVh
dGlvbiBvZiBnbG9iYWwgcHJvcGVydHkgJyIsIHByb3BlcnR5TmFtZSwgJ1wnJykpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAko
cmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIEpTT2JqZWN0KiBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXQKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25F
cnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQ
cm90b3R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0
ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
dHJpbmcmKTsKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2Jh
bE9iamVjdCopOwogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNH
bG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4
Niw2ICsxMjg2LDkgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIwog
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OnNldFByb3RvdHlwZURpcmVjdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY1NldFByb3RvdHlwZURpcmVjdCkpOwogICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpzZXRQcm90b3R5cGVEaXJlY3RPclRocm93KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0
cmluZygpLCBnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGlyZWN0T3JUaHJvdykpOworICAgICAgICB9
KTsKIAogICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KICAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBDcmVh
dGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzM0LDcgKzczNCw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5j
UHJvdG8KIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGly
ZWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSB8fCB2YWx1
ZS5pc051bGwoKSkgewpAQCAtNzQyLDggKzc0MSwyMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZ2xvYmFsRnVuY1NldFByCiAgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBlRGlyZWN0KHZt
LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBy
ZXR1cm4geyB9OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGlyZWN0
T3JUaHJvdywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpICYm
ICF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJvdG90eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSkpOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIG9iamVjdC0+c2V0UHJvdG90eXBlRGlyZWN0KHZtLCB2YWx1ZSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NiArNTIsNyBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNNYWtlCiBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQcm90b0dldHRlcik7CiBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQcm90b1NldHRlcik7CiBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGdsb2JhbEZ1bmNTZXRQcm90b3R5cGVEaXJlY3QpOworSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGlyZWN0T3JUaHJvdyk7CiBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIp
OwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jQnVpbHRpbkxvZyk7CiBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424707</attachid>
            <date>2021-03-30 15:44:28 -0700</date>
            <delta_ts>2021-04-02 14:20:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223884-20210331014427.patch</filename>
            <type>text/plain</type>
            <size>21841</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzUyNDIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIxLTAzLTMwICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBSZWR1Y2UgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gY291bnQg
ZW1pdHRlZCBmb3IgYGNsYXNzIGV4dGVuZHNgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENoYWtyYUNvcmUvdGVzdC9FcnJvci92YWxpZGF0ZV9saW5l
X2NvbHVtbi5iYXNlbGluZS1qc2M6CisKIDIwMjEtMDMtMjkgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4KSW5k
ZXg6IEpTVGVzdHMvQ2hha3JhQ29yZS90ZXN0L0Vycm9yL3ZhbGlkYXRlX2xpbmVfY29sdW1uLmJh
c2VsaW5lLWpzYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL0NoYWtyYUNvcmUvdGVzdC9FcnJvci92
YWxpZGF0ZV9saW5lX2NvbHVtbi5iYXNlbGluZS1qc2MJKHJldmlzaW9uIDI3NTE1OSkKKysrIEpT
VGVzdHMvQ2hha3JhQ29yZS90ZXN0L0Vycm9yL3ZhbGlkYXRlX2xpbmVfY29sdW1uLmJhc2VsaW5l
LWpzYwkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgZ2xvYmFsIGNvZGVAdmFsaWRhdGVf
bGluZV9jb2x1bW4uanM6MTY6NAogQHZhbGlkYXRlX2xpbmVfY29sdW1uLmpzOjIxOjExCiBmb29A
dmFsaWRhdGVfbGluZV9jb2x1bW4uanM6MTA6MTcKIGdsb2JhbCBjb2RlQHZhbGlkYXRlX2xpbmVf
Y29sdW1uLmpzOjIwOjQKLUB2YWxpZGF0ZV9saW5lX2NvbHVtbi5qczoyNjo3CitAdmFsaWRhdGVf
bGluZV9jb2x1bW4uanM6MjY6MjMKIGZvb0B2YWxpZGF0ZV9saW5lX2NvbHVtbi5qczoxMDoxNwog
Z2xvYmFsIGNvZGVAdmFsaWRhdGVfbGluZV9jb2x1bW4uanM6MjQ6NAogQHZhbGlkYXRlX2xpbmVf
Y29sdW1uLmpzOjMwOjE0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3
NTE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw1MiBAQAorMjAyMS0wMy0zMCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgUmVkdWNlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGNvdW50
IGVtaXR0ZWQgZm9yIGBjbGFzcyBleHRlbmRzYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgdmFyaWFudCBvZiBnbG9iYWxG
dW5jU2V0UHJvdG90eXBlRGlyZWN0KCkgdGhhdCB0aHJvd3Mgb24KKyAgICAgICAgaW52YWxpZCBb
W1Byb3RvdHlwZV1dIHZhbHVlcyAoaW5zdGVhZCBvZiBpZ25vcmluZyB0aGVtKSBhbmQgdXRpbGl6
ZXMgaXQgaW4KKyAgICAgICAgQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKCksIHJlbW92aW5n
IGVxdWl2YWxlbnQgY2hlY2tzLgorCisgICAgICAgIFRocm93aW5nIGZvciBpbnZhbGlkIGBzdXBl
cmNsYXNzLnByb3RvdHlwZWAgdmFsdWUgYWZ0ZXIgc2V0dGluZyB0aGUgW1tQcm90b3R5cGVdXQor
ICAgICAgICBvZiBgY29uc3RydWN0b3JgIGlzIHVub2JzZXJ2YWJsZSBiZWNhdXNlIGl0J3MgYSBu
ZXdseSBjcmVhdGVkIGV4dGVuc2libGUgb2JqZWN0CisgICAgICAgIGFuZCBgc3VwZXJjbGFzc2Ag
aXMgYSBwcm92ZW4gb2JqZWN0LgorCisgICAgICAgIFRoZSBmYWN0IHRoYXQgW1tQcm90b3R5cGVd
XSBzZXQgY2FuIHRocm93IG9ubHkgaW4gY2FzZSBvZiBgc3VwZXJjbGFzcy5wcm90b3R5cGVgCisg
ICAgICAgIGFsbG93cyBrZWVwaW5nIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgdmlhIGN1c3Rv
bSBhcHBlbmRlci4gVG8gZmluZCAiZXh0ZW5kcyIKKyAgICAgICAgaW4gYSBzb3VyY2UgY29kZSwg
Q2xhc3NFeHByTm9kZSBpcyBtYWRlIGFuIGluc3RhbmNlIG9mIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJlZHVjZXMgdGhlIG51bWJlciBvZiBlbWl0dGVk
IGJ5dGVjb2RlcyBieSA0LCBhbmQgZml4ZXMgSXNDb25zdHJ1Y3RvcidzCisgICAgICAgIGVycm9y
IFsxXSB0byBwb2ludCB0byBjb3JyZWN0IHNvdXJjZSBjb2RlIGxvY2F0aW9uLgorCisgICAgICAg
IFsxXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1ydW50aW1lLXNlbWFudGljcy1jbGFz
c2RlZmluaXRpb25ldmFsdWF0aW9uIChzdGVwIDUuZikKKworICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmludmFsaWRQcm90
b3R5cGVTb3VyY2VBcHBlbmRlcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQcm90b3R5
cGVFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6CisKIDIwMjEtMDMtMjggIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRSAmIEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMsIGl0IHNlZW1zIGxp
a2UgaXQgaXMgb24gZm9yIGFsbCBwb3J0cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAkocmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDIsNiArMTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oc2V0QnVja2V0TmV4dCkg
XAogICAgIG1hY3JvKHNldEJ1Y2tldEtleSkgXAogICAgIG1hY3JvKHNldFByb3RvdHlwZURpcmVj
dCkgXAorICAgIG1hY3JvKHNldFByb3RvdHlwZURpcmVjdE9yVGhyb3cpIFwKICAgICBtYWNybyhy
ZWdFeHBCdWlsdGluRXhlYykgXAogICAgIG1hY3JvKHJlZ0V4cE1hdGNoRmFzdCkgXAogICAgIG1h
Y3JvKHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAkocmV2aXNpb24gMjc1MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2
KHNldEJ1Y2tldE5leHQsIG51bGxwdHIpIFwKICAgICB2KHNldEJ1Y2tldEtleSwgbnVsbHB0cikg
XAogICAgIHYoc2V0UHJvdG90eXBlRGlyZWN0LCBudWxscHRyKSBcCisgICAgdihzZXRQcm90b3R5
cGVEaXJlY3RPclRocm93LCBudWxscHRyKSBcCiAgICAgdihjb3B5RGF0YVByb3BlcnRpZXMsIG51
bGxwdHIpIFwKICAgICB2KGVucXVldWVKb2IsIG51bGxwdHIpIFwKICAgICB2KG1ha2VUeXBlRXJy
b3IsIG51bGxwdHIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzUxNTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcwNiwxNiArMjcwNiwxNiBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldFByCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm90b3R5cGUpCit0ZW1wbGF0ZTxJbnZhbGlkUHJvdG90eXBl
TW9kZSBtb2RlPgorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RTZXRQ
cm90b3R5cGVPZihSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2V0UHJvdG90eXBlRGlyZWN0ID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6c2V0UHJvdG90eXBlRGlyZWN0KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2V0UHJvdG90eXBlRGlyZWN0ID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgbW9k
ZSA9PSBJbnZhbGlkUHJvdG90eXBlTW9kZTo6VGhyb3cgPyBMaW5rVGltZUNvbnN0YW50OjpzZXRQ
cm90b3R5cGVEaXJlY3RPclRocm93IDogTGlua1RpbWVDb25zdGFudDo6c2V0UHJvdG90eXBlRGly
ZWN0KTsKIAogICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMSk7CiAgICAg
bW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBiYXNlKTsKICAgICBtb3ZlKGFyZ3MuYXJndW1lbnRS
ZWdpc3RlcigwKSwgcHJvdG90eXBlKTsKIAotICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uOwot
ICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBzZXRQcm90b3R5cGVEaXJlY3QuZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgcG9zaXRpb24sIHBvc2l0aW9uLCBwb3NpdGlvbiwgRGVi
dWdnYWJsZUNhbGw6Ok5vKTsKKyAgICBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgc2V0UHJvdG90
eXBlRGlyZWN0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKICAgICByZXR1cm4gYmFzZTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw2ICs3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgZW51bSBjbGFzcyBEZWJ1Z2dh
YmxlQ2FsbCB7IFllcywgTm8gfTsKICAgICBlbnVtIGNsYXNzIFRoaXNSZXNvbHV0aW9uVHlwZSB7
IExvY2FsLCBTY29wZWQgfTsKKyAgICBlbnVtIGNsYXNzIEludmFsaWRQcm90b3R5cGVNb2RlIDog
dWludDhfdCB7IFRocm93LCBJZ25vcmUgfTsKICAgICBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3Rh
bnQgOiBpbnQzMl90OwogICAgIAogICAgIGNsYXNzIENhbGxBcmd1bWVudHMgewpAQCAtODE0LDcg
KzgxNSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RT
ZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm90b3R5cGUpOwor
CisgICAgICAgIHRlbXBsYXRlPEludmFsaWRQcm90b3R5cGVNb2RlPgorICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvdG90eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5
LCBSZWdpc3RlcklEKiB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzUxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxNyw3ICs4MTcsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQ
dXRDb25zdGFudFByCiAKICAgICBpZiAoUHJvcGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1Nl
dHRlcihnZW5lcmF0b3Iudm0oKSwgbm9kZSkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1fYXNzaWduKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihuZXdPYmosIHByb3RvdHlwZS5nZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0U2V0UHJvdG90eXBlT2Y8SW52YWxpZFBy
b3RvdHlwZU1vZGU6Oklnbm9yZT4obmV3T2JqLCBwcm90b3R5cGUuZ2V0KCksIG1fcG9zaXRpb24s
IG1fcG9zaXRpb24sIG1fcG9zaXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
MjExLDE5ICs1MjExLDE0IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29k
ZSgKIAogICAgICAgICBSZWY8TGFiZWw+IHN1cGVyY2xhc3NJc0NvbnN0cnVjdG9yTGFiZWwgPSBn
ZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGdl
bmVyYXRvci5lbWl0SXNDb25zdHJ1Y3RvcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHN1cGVy
Y2xhc3MuZ2V0KCkpLCBzdXBlcmNsYXNzSXNDb25zdHJ1Y3RvckxhYmVsLmdldCgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUaGUgc3Vw
ZXJjbGFzcyBpcyBub3QgYSBjb25zdHJ1Y3Rvci4iX3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHN1cGVyY2xhc3NJc0NvbnN0cnVjdG9yTGFiZWwuZ2V0KCkpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQocHJvdG9QYXJlbnQuZ2V0KCksIHN1cGVyY2xhc3MuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKIAotICAgICAgICBSZWY8TGFiZWw+
IHByb3RvUGFyZW50SXNPYmplY3RPck51bGxMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRJc09iamVjdChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3RvUGFyZW50LmdldCgpKSwgcHJvdG9QYXJlbnRJ
c09iamVjdE9yTnVsbExhYmVsLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZU
cnVlKGdlbmVyYXRvci5lbWl0SXNOdWxsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvdG9Q
YXJlbnQuZ2V0KCkpLCBwcm90b1BhcmVudElzT2JqZWN0T3JOdWxsTGFiZWwuZ2V0KCkpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUaGUgdmFsdWUgb2YgdGhlIHN1cGVy
Y2xhc3MncyBwcm90b3R5cGUgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdCBvciBudWxsLiJfcyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocHJvdG9QYXJlbnRJc09iamVjdE9yTnVsbExh
YmVsLmdldCgpKTsKLQotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFNldFByb3RvdHlwZU9m
KGNvbnN0cnVjdG9yLmdldCgpLCBzdXBlcmNsYXNzLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZjxJbnZhbGlkUHJvdG90eXBlTW9kZTo6VGhyb3c+KGNv
bnN0cnVjdG9yLmdldCgpLCBzdXBlcmNsYXNzLmdldCgpLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9u
LCBtX3Bvc2l0aW9uKTsgLy8gbmV2ZXIgYWN0dWFsbHkgdGhyb3dzCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoc3VwZXJjbGFzc0lzTnVsbExhYmVsLmdldCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihwcm90b3R5cGUuZ2V0KCksIHByb3RvUGFyZW50
LmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZjxJbnZh
bGlkUHJvdG90eXBlTW9kZTo6VGhyb3c+KHByb3RvdHlwZS5nZXQoKSwgcHJvdG9QYXJlbnQuZ2V0
KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQogCiAgICAgaWYg
KG5lZWRzSG9tZU9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCShyZXZpc2lvbiAyNzUxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEyLDEwICs0MTIsMTIgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIENsYXNzRXhwck5vZGUqIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJDbGFzc0luZm88QVNUQnVpbGRl
cj4mIGNsYXNzSW5mbywgVmFyaWFibGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhw
cmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yLAotICAgICAgICBFeHByZXNzaW9uTm9kZSogcGFyZW50
Q2xhc3MsIFByb3BlcnR5TGlzdE5vZGUqIGNsYXNzRWxlbWVudHMpCisgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBwYXJlbnRDbGFzcywgUHJvcGVydHlMaXN0Tm9kZSogY2xhc3NFbGVtZW50cywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewogICAgICAgICBTb3VyY2VDb2RlIHNvdXJj
ZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihjbGFzc0luZm8uc3RhcnRPZmZzZXQsIGNs
YXNzSW5mby5lbmRPZmZzZXQsIGNsYXNzSW5mby5zdGFydExpbmUsIGNsYXNzSW5mby5zdGFydENv
bHVtbik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXNzRXhwck5vZGUo
bG9jYXRpb24sICpjbGFzc0luZm8uY2xhc3NOYW1lLCBzb3VyY2UsIGNsYXNzRW52aXJvbm1lbnQs
IGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CisgICAgICAgIENsYXNz
RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXNzRXhwck5vZGUobG9jYXRp
b24sICpjbGFzc0luZm8uY2xhc3NOYW1lLCBzb3VyY2UsIGNsYXNzRW52aXJvbm1lbnQsIGNvbnN0
cnVjdG9yLCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CisgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVp
bGRlcj4mIGZ1bmN0aW9uSW5mbykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1Niw3ICsyMzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFR5cGUgbV90eXBlOwogICAgIH07CiAKLSAgICBjbGFzcyBDbGFzc0V4cHJOb2Rl
IGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVmFyaWFibGVFbnZpcm9ubWVu
dE5vZGUgeworICAgIGNsYXNzIENsYXNzRXhwck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSwgcHVibGljIFZhcmlhYmxlRW52
aXJvbm1lbnROb2RlIHsKICAgICAgICAgSlNDX01BS0VfUEFSU0VSX0FSRU5BX0RFTEVUQUJMRV9B
TExPQ0FURUQoQ2xhc3NFeHByTm9kZSk7CiAgICAgcHVibGljOgogICAgICAgICBDbGFzc0V4cHJO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3Vy
Y2VDb2RlJiBjbGFzc1NvdXJjZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4Niw2ICsyODg2LDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgUGFyc2Vy
Q2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKICAgICBBU1NFUlQobWF0Y2goQ0xBU1NU
T0tFTikpOworICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7
CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW5m
by5zdGFydExpbmUgPSBsb2NhdGlvbi5saW5lOwogICAgIGluZm8uc3RhcnRDb2x1bW4gPSB0b2tl
bkNvbHVtbigpOwpAQCAtMjkxNSwxNCArMjkxNiwxNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVDbGFzc0V4CiAgICAgfQogICAgIEFTU0VSVChpbmZvLmNsYXNzTmFtZSk7CiAK
KyAgICBKU1RleHRQb3NpdGlvbiBkaXZvdCA9IHN0YXJ0OwogICAgIFRyZWVFeHByZXNzaW9uIHBh
cmVudENsYXNzID0gMDsKICAgICBpZiAoY29uc3VtZShFWFRFTkRTKSkgeworICAgICAgICBkaXZv
dCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgICAgICBwYXJlbnRDbGFzcyA9IHBhcnNlTWVt
YmVyRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocGFyZW50Q2xhc3Ms
ICJDYW5ub3QgcGFyc2UgdGhlIHBhcmVudCBjbGFzcyBuYW1lIik7CiAgICAgfQogICAgIGNsYXNz
U2NvcGUtPnNldElzQ2xhc3NTY29wZSgpOwogICAgIGNvbnN0IENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQgPSBwYXJlbnRDbGFzcyA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENv
bnN0cnVjdG9yS2luZDo6QmFzZTsKIAorICAgIEpTVGV4dFBvc2l0aW9uIGNsYXNzSGVhZEVuZCA9
IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOQlJBQ0UsICJF
eHBlY3RlZCBvcGVuaW5nICd7JyBhdCB0aGUgc3RhcnQgb2YgYSBjbGFzcyBib2R5Iik7CiAKICAg
ICBUcmVlRXhwcmVzc2lvbiBjb25zdHJ1Y3RvciA9IDA7CkBAIC0zMTcwLDcgKzMxNzQsNyBAQCBw
YXJzZU1ldGhvZDoKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFBy
aXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHBy
aXZhdGUgbmFtZXMiKTsKICAgICB9CiAKLSAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRl
eHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxl
eGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVu
dHMpOworICAgIGF1dG8gY2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIo
bG9jYXRpb24sIGluZm8sIGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCks
IGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cywgc3RhcnQsIGRpdm90LCBj
bGFzc0hlYWRFbmQpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVk
c0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkocmV2aXNp
b24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gWWll
bGRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFlp
ZWxkRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUF3YWl0KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBd2FpdEV4
cHI7IH0KLSAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckNsYXNzSW5mbzxTeW50YXhDaGVja2VyPiYsIFZhcmlhYmxl
RW52aXJvbm1lbnQmLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlz
dCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CisgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJDbGFzc0luZm88U3ludGF4
Q2hlY2tlcj4mLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Np
b25UeXBlLCBQcm9wZXJ0eUxpc3QsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIENsYXNzRXhwcjsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVy
biBGdW5jdGlvbkV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVHZW5lcmF0b3JGdW5j
dGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZv
PFN5bnRheENoZWNrZXI+JiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDE4IEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFt
ZXRlckluc3RhbmNlb2YKICAgICByZXR1cm4gaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZTb3Vy
Y2VBcHBlbmRlcigiW1N5bWJvbC5oYXNJbnN0YW5jZV0gaXMgbm90IGEgZnVuY3Rpb24sIHVuZGVm
aW5lZCwgb3IgbnVsbCJfcywgb3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0LCBydW50aW1lVHlw
ZSwgb2NjdXJyZW5jZSk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgaW52YWxpZFByb3RvdHlwZVNvdXJj
ZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVRleHQsIFJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJv
ck9jY3VycmVkIG9jY3VycmVuY2UpCit7CisgICAgaWYgKG9jY3VycmVuY2UgPT0gRXJyb3JJbnN0
YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRBcHBy
b3hpbWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCk7CisKKyAgICBh
dXRvIGV4dGVuZHNJbmRleCA9IHNvdXJjZVRleHQucmV2ZXJzZUZpbmQoImV4dGVuZHMiKTsKKyAg
ICBpZiAoZXh0ZW5kc0luZGV4ID09IG5vdEZvdW5kIHx8IHNvdXJjZVRleHQuZmluZCgiZXh0ZW5k
cyIpICE9IGV4dGVuZHNJbmRleCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcob3JpZ2luYWxN
ZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBzb3VyY2VUZXh0LCAiJykiKTsKKworICAgIHJldHVy
biAiVGhlIHZhbHVlIG9mIHRoZSBzdXBlcmNsYXNzJ3MgcHJvdG90eXBlIHByb3BlcnR5IGlzIG5v
dCBhbiBvYmplY3Qgb3IgbnVsbC4iX3M7Cit9CisKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTMyMSw2ICszMzMsMTEgQEAgSlNPYmplY3Qq
IGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoSlNHbG9iYQogICAgIHJldHVybiBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyKTsKIH0KIAorSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcm90b3R5cGVFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBj
cmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVjdCBvciBudWxs
Il9zLCBpbnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIpOworfQorCiBKU09iamVjdCogY3Jl
YXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJTdHJpY3QgbW9kZSBmb3Ji
aWRzIGltcGxpY2l0IGNyZWF0aW9uIG9mIGdsb2JhbCBwcm9wZXJ0eSAnIiwgcHJvcGVydHlOYW1l
LCAnXCcnKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiAyNzUxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDcgQEAgSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldAogSlNPYmplY3Qq
IGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNy
ZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CitKU09iamVj
dCogY3JlYXRlSW52YWxpZFByb3RvdHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiBKU09iamVjdCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYpOwogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRl
TmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJp
dmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjg2LDYgKzEyODYsOSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6c2V0UHJvdG90eXBlRGlyZWN0KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGlyZWN0KSk7CiAg
ICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OnNldFByb3RvdHlwZURpcmVjdE9yVGhyb3cpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNTZXRQcm90b3R5cGVEaXJlY3RPclRo
cm93KSk7CisgICAgICAgIH0pOwogCiAgICAgLy8gUmVnRXhwLnByb3RvdHlwZSBoZWxwZXJzLgog
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OnJlZ0V4cENyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjc1MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzQsNyArNzM0LDYgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGdsb2JhbEZ1bmNQcm90bwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1
bmNTZXRQcm90b3R5cGVEaXJlY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUg
dmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGlmICh2YWx1ZS5p
c09iamVjdCgpIHx8IHZhbHVlLmlzTnVsbCgpKSB7CkBAIC03NDIsOCArNzQxLDIyIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jU2V0UHIKICAgICAgICAgb2JqZWN0LT5zZXRQ
cm90b3R5cGVEaXJlY3Qodm0sIHZhbHVlKTsKICAgICB9CiAKLSAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNT
ZXRQcm90b3R5cGVEaXJlY3RPclRocm93LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoIXZh
bHVlLmlzT2JqZWN0KCkgJiYgIXZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcm90b3R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHZhbHVlKSk7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgb2JqZWN0LT5zZXRQcm90b3R5cGVEaXJlY3Qo
dm0sIHZhbHVlKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jSG9zdFByb21pc2VSZWpl
Y3Rpb25UcmFja2VyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNzUxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xv
YmFsRnVuY01ha2UKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1Byb3RvR2V0
dGVyKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKTsK
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1NldFByb3RvdHlwZURpcmVjdCk7
CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNTZXRQcm90b3R5cGVEaXJlY3RP
clRocm93KTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY0hvc3RQcm9taXNl
UmVqZWN0aW9uVHJhY2tlcik7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNC
dWlsdGluTG9nKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY0J1aWx0aW5E
ZXNjcmliZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>