<?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>223881</bug_id>
          
          <creation_ts>2021-03-29 10:10:18 -0700</creation_ts>
          <short_desc>Style checker should warn about use of future OS versions in WK_API_AVAILABLE</short_desc>
          <delta_ts>2025-10-25 19:28:19 -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>Tools / Tests</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>301475</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>ap</cc>
    
    <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744754</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-29 10:10:18 -0700</bug_when>
    <thetext>We need to avoid fumbles like this one: http://trac.webkit.org/changeset/273130/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744996</commentid>
    <comment_count>1</comment_count>
      <attachid>424606</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-29 17:41:25 -0700</bug_when>
    <thetext>Created attachment 424606
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744998</commentid>
    <comment_count>2</comment_count>
      <attachid>424606</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-29 17:52:30 -0700</bug_when>
    <thetext>Comment on attachment 424606
Patch v1.0

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

&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:3309
&gt; +    MAX_ALLOWED_MACOS_VERSION = 11.0

We have these hard-coded in Tools/Scripts/webkitpy/common/version_name_map.py, we&apos;re trying to centralize versions for this sort of thing in that file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744999</commentid>
    <comment_count>3</comment_count>
      <attachid>424606</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-29 17:54:32 -0700</bug_when>
    <thetext>Comment on attachment 424606
Patch v1.0

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

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:51
&gt; +# Enable this if you need to see the full diff when debugging failures.

Did you intend to include this as part of the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745022</commentid>
    <comment_count>4</comment_count>
      <attachid>424614</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-29 20:54:54 -0700</bug_when>
    <thetext>Created attachment 424614
Patch v1.1, turn off debugging code by default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745023</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-29 20:55:17 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #2)
&gt; Comment on attachment 424606 [details]
&gt; Patch v1.0
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424606&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:3309
&gt; &gt; +    MAX_ALLOWED_MACOS_VERSION = 11.0
&gt; 
&gt; We have these hard-coded in
&gt; Tools/Scripts/webkitpy/common/version_name_map.py, we&apos;re trying to
&gt; centralize versions for this sort of thing in that file

OK, will take a peep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745169</commentid>
    <comment_count>6</comment_count>
      <attachid>424654</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-30 10:14:46 -0700</bug_when>
    <thetext>Created attachment 424654
Patch v2.1 - use Version / VersionNameMap to parse and compare version numbers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745171</commentid>
    <comment_count>7</comment_count>
      <attachid>424655</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-30 10:15:34 -0700</bug_when>
    <thetext>Created attachment 424655
Patch v2.1 - use Version / VersionNameMap to parse and compare version numbers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745192</commentid>
    <comment_count>8</comment_count>
      <attachid>424655</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-30 11:19:51 -0700</bug_when>
    <thetext>Comment on attachment 424655
Patch v2.1 - use Version / VersionNameMap to parse and compare version numbers

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

&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:3314
&gt; +        if platform_name == &quot;macos&quot;:

I think we should make this a loop through a dictionary so we can support other platforms (namely watchOS) and de-duplicate code. Looking through the differences between iOS and macOS, should reduce the size of this function too

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:51
&gt; +# Enable this if you need to see the full diff when debugging failures.

I think we should put this in a different change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745817</commentid>
    <comment_count>9</comment_count>
      <attachid>424829</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-31 15:28:23 -0700</bug_when>
    <thetext>Created attachment 424829
Patch v3.0

incorporated latest feedback from jbedard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745845</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-31 16:05:07 -0700</bug_when>
    <thetext>Committed r275313: &lt;https://commits.webkit.org/r275313&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424829.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745846</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-31 16:06:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/76076210&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424606</attachid>
            <date>2021-03-29 17:41:25 -0700</date>
            <delta_ts>2021-03-29 20:54:53 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-223881-20210329174124.patch</filename>
            <type>text/plain</type>
            <size>12124</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTUxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiZDVkZDgyZmNhNjY1ZmI2OWZhY2M3YzNlZGNlNjk3
NDQxZDRjMC4uYTZlN2Q5N2I5MjNjODIzM2ZiNmNlY2E3ZWYzZTA2ZThiY2RiN2VkMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDIxLTAzLTI5ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFN0
eWxlIGNoZWNrZXIgc2hvdWxkIHdhcm4gYWJvdXQgdXNlIG9mIGZ1dHVyZSBPUyB2ZXJzaW9ucyBp
biBXS19BUElfQVZBSUxBQkxFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc29tZSBtb3JlIGJyYWlucyB0byB0aGUgV0tfQVBJX0FWQUlMQUJMRSBz
dHlsZSBjaGVja2VyLiBJdCBpcyBub3cgbW9yZQorICAgICAgICBmdXNzeSBhbmQgd29uJ3QgYWxs
b3cgYW55dGhpbmcgZXhjZXB0IGEgdmFsaWQgdmVyc2lvbiBzdHJpbmcgb3IgYSBUQkEgbWFjcm8u
CisKKyAgICAgICAgRm9yIG1hY09TLCB0aGVyZSBpcyBhIHNwZWNpYWwgY2FzZSB0byBhbGxvdyAx
MC5uLm0gdmVyc2lvbiBudW1iZXJzLiBPdGhlcndpc2UsCisgICAgICAgIHRoZSBleHBlY3RlZCBm
b3JtYXQgaXMgYG1ham9yLm1pbm9yYC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwLnB5OgorICAgICAgICAoY2hlY2tfYXJndW1lbnRzX2Zvcl93a19hcGlf
YXZhaWxhYmxlKToKKyAgICAgICAgKGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJs
ZS5jaGVja192ZXJzaW9uX3N0cmluZyk6CisgICAgICAgIChjaGVja19zdHlsZSk6CisgICAgICAg
IChjaGVja19taW5fdmVyc2lvbnNfb2Zfd2tfYXBpX2F2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChXZWJLaXRTdHlsZVRlc3QpOgorCiAyMDIxLTAzLTI4ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0lOREVYRURfREFUQUJBU0Ug
JiBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTLCBpdCBzZWVtcyBsaWtlIGl0IGlz
IG9uIGZvciBhbGwgcG9ydHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9jcHAucHkKaW5kZXggNWM5ZTExNTU4OWRlYmJkNDBmOWU0OTg0ZmJmNDBlYjFjZTlhNjViMy4u
ZTQ2MzdkMjAxZDExZWRiYmZhM2E2NTQ0NWJlMzgwYTU4ZGExZDE0NCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTMyOTYsOCArMzI5Niw4IEBA
IGRlZiBnZXRfbGluZV93aWR0aChsaW5lKToKICAgICByZXR1cm4gbGVuKGxpbmUpCiAKIAotZGVm
IGNoZWNrX21pbl92ZXJzaW9uc19vZl93a19hcGlfYXZhaWxhYmxlKGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZXJyb3IpOgotICAgICIiIkNoZWNrcyB0aGUgbWluIHZlcnNpb24gbnVtYmVycyBv
ZiBXS19BUElfQVZBSUxBQkxFCitkZWYgY2hlY2tfYXJndW1lbnRzX2Zvcl93a19hcGlfYXZhaWxh
YmxlKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAgICIiIkNoZWNrcyB0aGUg
YWxsb3dhYmxlIGFyZ3VtZW50cyBvZiBXS19BUElfQVZBSUxBQkxFCiAKICAgICBBcmdzOgogICAg
ICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBm
aWxlLgpAQCAtMzMwNSwzNCArMzMwNSw3NSBAQCBkZWYgY2hlY2tfbWluX3ZlcnNpb25zX29mX3dr
X2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgICBl
cnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogICAgICIi
IgogCisgICAgIyBOT1RFOiB0aGVzZSBuZWVkIHRvIGJlIGJ1bXBlZCBhZnRlciB0aGUgbmV4dCBT
REsgdmVyc2lvbiBiZWNvbWVzIGdlbmVyYWxseSBhdmFpbGFibGUuCisgICAgTUFYX0FMTE9XRURf
TUFDT1NfVkVSU0lPTiA9IDExLjAKKyAgICBNQVhfQUxMT1dFRF9JT1NfVkVSU0lPTiA9IDE0LjAK
KworICAgIGRlZiBjaGVja192ZXJzaW9uX3N0cmluZyhvcmlnaW5hbF92ZXJzaW9uX3N0cmluZywg
cGxhdGZvcm1fbmFtZSk6CisgICAgICAgIHZlcnNpb25fc3RyaW5nID0gb3JpZ2luYWxfdmVyc2lv
bl9zdHJpbmcKKworICAgICAgICBpZiBwbGF0Zm9ybV9uYW1lID09ICJtYWNvcyI6CisgICAgICAg
ICAgICBpZiB2ZXJzaW9uX3N0cmluZyA9PSAiV0tfTUFDX1RCQSI6CisgICAgICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgICAgIGlmIG5vdCBtYXRjaChyJ15bXGRcLl0rJCcsIHZlcnNpb25f
c3RyaW5nKToKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2Fw
aV9hdmFpbGFibGUnLCA1LCAnbWFjb3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19U
QkEgb3IgYSBudW1iZXInICUgb3JpZ2luYWxfdmVyc2lvbl9zdHJpbmcpCisgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgICAgIGlmIG5vdCBvcmlnaW5hbF92ZXJzaW9uX3N0cmluZy5z
dGFydHN3aXRoKCcxMCcpIGFuZCBvcmlnaW5hbF92ZXJzaW9uX3N0cmluZy5jb3VudCgnLicpICE9
IDE6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZh
aWxhYmxlJywgNSwgJ21hY29zKCVzKSBpcyBpbnZhbGlkOyB2ZXJzaW9uIG51bWJlciBzaG91bGQg
aGF2ZSBvbmUgZGVjaW1hbCcgJSBvcmlnaW5hbF92ZXJzaW9uX3N0cmluZykKKyAgICAgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBTcGVjaWFsLWNhc2UgZm9yIG1hY09TIDEwLiou
Kjogc3RyaXAgZXh0cmEgJy4nIHRvIG1ha2UgaXQgcGFyc2VhYmxlIGFzIGEgZmxvYXQuCisgICAg
ICAgICAgICBwYXJ0cyA9IHNlYXJjaChyJ14xMFwuKFtcLlxkXSspJCcsIHZlcnNpb25fc3RyaW5n
KQorICAgICAgICAgICAgaWYgcGFydHM6CisgICAgICAgICAgICAgICAgdmVyc2lvbl9zdHJpbmcg
PSAnMTAuJXMnICUgcGFydHMuZ3JvdXAoMSkucmVwbGFjZSgnLicsICcnKQorCisgICAgICAgICAg
ICBlbGlmIG5vdCBtYXRjaChyJ15cZCtcLlxkKyQnLCB2ZXJzaW9uX3N0cmluZyk6CisgICAgICAg
ICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwg
J21hY29zKCVzKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJBIG9yIGEgbnVtYmVyJyAl
IG9yaWdpbmFsX3ZlcnNpb25fc3RyaW5nKQorICAgICAgICAgICAgZWxpZiBmbG9hdCh2ZXJzaW9u
X3N0cmluZykgPiBNQVhfQUxMT1dFRF9NQUNPU19WRVJTSU9OOgorICAgICAgICAgICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNvcyglcykg
aXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIG5vdCBleGNlZWQgJWQnICUgKG9yaWdp
bmFsX3ZlcnNpb25fc3RyaW5nLCBNQVhfQUxMT1dFRF9NQUNPU19WRVJTSU9OKSkKKworICAgICAg
ICBlbGlmIHBsYXRmb3JtX25hbWUgPT0gImlvcyI6CisgICAgICAgICAgICBpZiB2ZXJzaW9uX3N0
cmluZyA9PSAiV0tfSU9TX1RCQSI6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
ICAgIGlmIG5vdCBtYXRjaChyJ15bXGRcLl0rJCcsIHZlcnNpb25fc3RyaW5nKToKKyAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAn
aW9zKCVzKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyJyAlIG9y
aWdpbmFsX3ZlcnNpb25fc3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICAgICBlbGlmIG5vdCBtYXRjaChyJ15cZCtcLlxkJCcsIHZlcnNpb25fc3RyaW5nKToKKyAgICAg
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1
LCAnaW9zKCVzKSBpcyBpbnZhbGlkOyB2ZXJzaW9uIG51bWJlciBzaG91bGQgYmUgZm9ybWF0dGVk
IGFzIG1ham9yLm1pbm9yJyAlIG9yaWdpbmFsX3ZlcnNpb25fc3RyaW5nKQorICAgICAgICAgICAg
ZWxpZiBub3QgbWF0Y2gocideXGQrXC5cZCskJywgdmVyc2lvbl9zdHJpbmcpOgorICAgICAgICAg
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdp
b3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBudW1iZXInICUgb3Jp
Z2luYWxfdmVyc2lvbl9zdHJpbmcpCisgICAgICAgICAgICBlbGlmIGZsb2F0KHZlcnNpb25fc3Ry
aW5nKSA+IE1BWF9BTExPV0VEX0lPU19WRVJTSU9OOgorICAgICAgICAgICAgICAgIGVycm9yKGxp
bmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdpb3MoJXMpIGlzIGludmFs
aWQ7IHZlcnNpb24gbnVtYmVyIHNob3VsZCBub3QgZXhjZWVkICVkJyAlIChvcmlnaW5hbF92ZXJz
aW9uX3N0cmluZywgTUFYX0FMTE9XRURfSU9TX1ZFUlNJT04pKQorCiAgICAgbGluZSA9IGNsZWFu
X2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3Ry
aW5ncy4KIAogICAgIHdrX2FwaV9hdmFpbGFibGUgPSBzZWFyY2gocidXS19BUElfQVZBSUxBQkxF
XChtYWNvc3hcKCcsIGxpbmUpCiAgICAgaWYgd2tfYXBpX2F2YWlsYWJsZToKICAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ21hY29zeCgpIGlz
IGRlcHJlY2F0ZWQ7IHVzZSBtYWNvcygpIGluc3RlYWQnKQorICAgICAgICByZXR1cm4KIAotICAg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIHN1cHBvcnQgYW55IG9yZGVyLgogICAgIHdrX2FwaV9hdmFp
bGFibGUgPSBzZWFyY2gocidXS19BUElfQVZBSUxBQkxFXChtYWNvc1woKFteXCldKylcKSwgaW9z
XCgoW15cKV0rKVwpXCknLCBsaW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6Ci0gICAgICAg
IG1hY29zTWluVmVyc2lvbiA9IHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSkKLSAgICAgICAgaWYg
bm90IG1hdGNoKHInXihbXGRcLl0rfFdLX01BQ19UQkEpJCcsIG1hY29zTWluVmVyc2lvbik6Ci0g
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1
LCAnbWFjb3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBudW1iZXIn
ICUgbWFjb3NNaW5WZXJzaW9uKQorICAgICAgICBjaGVja192ZXJzaW9uX3N0cmluZyh3a19hcGlf
YXZhaWxhYmxlLmdyb3VwKDEpLCAibWFjb3MiKQorICAgICAgICBjaGVja192ZXJzaW9uX3N0cmlu
Zyh3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDIpLCAiaW9zIikKIAotICAgICAgICBpb3NNaW5WZXJz
aW9uID0gd2tfYXBpX2F2YWlsYWJsZS5ncm91cCgyKQotICAgICAgICBpZiBub3QgbWF0Y2gocide
KFtcZFwuXSt8V0tfSU9TX1RCQSkkJywgaW9zTWluVmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJv
cihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnaW9zKCVzKSBpcyBp
bnZhbGlkOyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyJyAlIGlvc01pblZlcnNpb24p
CisgICAgd2tfYXBpX2F2YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQSV9BVkFJTEFCTEVcKGlvc1wo
KFteXCldKylcKSwgbWFjb3NcKChbXlwpXSspXClcKScsIGxpbmUpCisgICAgaWYgd2tfYXBpX2F2
YWlsYWJsZToKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWlsYWJsZS5n
cm91cCgxKSwgImlvcyIpCisgICAgICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFp
bGFibGUuZ3JvdXAoMiksICJtYWNvcyIpCiAKICAgICB3a19hcGlfYXZhaWxhYmxlID0gc2VhcmNo
KHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3NcKChbXlwpXSspXClcKScsIGxpbmUpCiAgICAgaWYg
d2tfYXBpX2F2YWlsYWJsZToKLSAgICAgICAgbWFjb3NNaW5WZXJzaW9uID0gd2tfYXBpX2F2YWls
YWJsZS5ncm91cCgxKQotICAgICAgICBpZiBub3QgbWF0Y2gocideKFtcZFwuXSt8V0tfTUFDX1RC
QSkkJywgbWFjb3NNaW5WZXJzaW9uKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
YnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNvcyglcykgaXMgaW52YWxpZDsgZXhwZWN0
ZWQgV0tfTUFDX1RCQSBvciBhIG51bWJlcicgJSBtYWNvc01pblZlcnNpb24pCisgICAgICAgIGNo
ZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSksICJtYWNvcyIpCiAK
ICAgICB3a19hcGlfYXZhaWxhYmxlID0gc2VhcmNoKHInV0tfQVBJX0FWQUlMQUJMRVwoaW9zXCgo
W15cKV0rKVwpXCknLCBsaW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6Ci0gICAgICAgIGlv
c01pblZlcnNpb24gPSB3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpCi0gICAgICAgIGlmIG5vdCBt
YXRjaChyJ14oW1xkXC5dK3xXS19JT1NfVEJBKSQnLCBpb3NNaW5WZXJzaW9uKToKLSAgICAgICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdpb3Mo
JXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBudW1iZXInICUgaW9zTWlu
VmVyc2lvbikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWlsYWJsZS5n
cm91cCgxKSwgImlvcyIpCisKIAogZGVmIGNoZWNrX3N0eWxlKGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZmlsZV9leHRlbnNpb24sIGNsYXNzX3N0YXRlLCBmaWxlX3N0YXRlLCBlbnVtX3N0YXRl
LCBlcnJvcik6CiAgICAgIiIiQ2hlY2tzIHJ1bGVzIGZyb20gdGhlICdDKysgc3R5bGUgcnVsZXMn
IHNlY3Rpb24gb2YgY3BwZ3VpZGUuaHRtbC4KQEAgLTM0MTUsNyArMzQ1Niw3IEBAIGRlZiBjaGVj
a19zdHlsZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBjbGFzc19z
dGF0ZSwgZmlsZV9zdGF0CiAgICAgY2hlY2tfaW5kZW50YXRpb25fYW1vdW50KGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpCiAgICAgY2hlY2tfZW51bV9jYXNpbmcoY2xlYW5fbGluZXMs
IGxpbmVfbnVtYmVyLCBlbnVtX3N0YXRlLCBlcnJvcikKICAgICBjaGVja19vbmNlX2ZsYWcoY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcikKLSAgICBjaGVja19taW5f
dmVyc2lvbnNfb2Zfd2tfYXBpX2F2YWlsYWJsZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVy
cm9yKQorICAgIGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJsZShjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGVycm9yKQogCiAKIF9SRV9QQVRURVJOX0lOQ0xVREVfTkVXX1NUWUxF
ID0gcmUuY29tcGlsZShyJyMoPzppbmNsdWRlfGltcG9ydCkgKyJbXi9dK1wuaCInKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5w
eQppbmRleCBmYzRiNWNjZjM0OGY1NTY0OTI3Y2FlMzA4ODZiYmU0N2I4ZjI4OGU0Li45ZWVkNTNk
MjJiNzA4ZmIwNGY5ZGU4M2Y3Y2RhYTBmZGQ1ZmY0OGE3IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQpAQCAtNDgsNiAr
NDgsMTIgQEAgZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQgY3BwIGFzIGNwcF9z
dHlsZQogZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIs
IF9zcGxpdF9pZGVudGlmaWVyX2ludG9fd29yZHMKIGZyb20gd2Via2l0cHkuc3R5bGUuZmlsdGVy
IGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCiAKKyMgRW5hYmxlIHRoaXMgaWYgeW91IG5lZWQg
dG8gc2VlIHRoZSBmdWxsIGRpZmYgd2hlbiBkZWJ1Z2dpbmcgZmFpbHVyZXMuCisjIGh0dHBzOi8v
c3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQzODQyNjc1L2hvdy10by1wcmV2ZW50LXRydW5j
YXRpbmctb2Ytc3RyaW5nLWluLXVuaXQtdGVzdC1weXRob24KK2lmIFRydWU6CisgICAgaWYgJ3Vu
aXR0ZXN0LnV0aWwnIGluIF9faW1wb3J0X18oJ3N5cycpLm1vZHVsZXM6CisgICAgICAgICMgU2hv
dyBmdWxsIGRpZmYgaW4gc2VsZi5hc3NlcnRFcXVhbC4KKyAgICAgICAgX19pbXBvcnRfXygnc3lz
JykubW9kdWxlc1sndW5pdHRlc3QudXRpbCddLl9NQVhfTEVOR1RIID0gOTk5OTk5OTk5CiAKICMg
VGhpcyBjbGFzcyB3b3JrcyBhcyBhbiBlcnJvciBjb2xsZWN0b3IgYW5kIHJlcGxhY2VzIGNwcF9z
dHlsZS5FcnJvcgogIyBmdW5jdGlvbiBmb3IgdGhlIHVuaXQgdGVzdHMuICBXZSBhbHNvIHZlcmlm
eSBlYWNoIGNhdGVnb3J5IHdlIHNlZQpAQCAtNjM4NSwxOCArNjM5MSwyMyBAQCBjbGFzcyBXZWJL
aXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAKICAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnTVlNQUNSTyhhID8gYigpIDogYyk7JywgJycpCiAKLSAgICBkZWYgdGVzdF9taW5fdmVyc2lv
bnNfb2Zfd2tfYXBpX2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMS4yLjMpKScsICdtYWNvc3goKSBpcyBkZXByZWNhdGVk
OyB1c2UgbWFjb3MoKSBpbnN0ZWFkICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAg
ICBkZWYgdGVzdF9hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjIuMykpJywgJ21h
Y29zeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBtYWNvcygpIGluc3RlYWQgIFtidWlsZC93a19hcGlf
YXZhaWxhYmxlXSBbNV0nKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSknLCAnbWFjb3N4KCkgaXMgZGVwcmVjYXRlZDsgdXNlIG1h
Y29zKCkgaW5zdGVhZCAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMS4yLjMpLCBpb3MoMy40LjUp
KScsICcnKSAgIyB2ZXJzaW9uIG51bWJlcnMgYXJlIE9LLgotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
JywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9LLgotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX0lPU19UQkEpLCBpb3MoMy40
LjUpKScsICdtYWNvcyhXS19JT1NfVEJBKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJB
IG9yIGEgbnVtYmVyICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxLjIuMyksIGlvcyhXS19NQUNf
VEJBKSknLCAnaW9zKFdLX01BQ19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEg
b3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDEuMi4zKSknLCAnJykgICMgdmVy
c2lvbiBudW1iZXJzIGFyZSBPSy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSknLCAnJykgICMgV0tfTUFDX1RCQSBpcyBPSy4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoMy40LjUpKScsICcn
KSAgIyB2ZXJzaW9uIG51bWJlcnMgYXJlIE9LLgorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCkpJywgJycpICAjIHZlcnNpb24gbnVtYmVycyBh
cmUgT0suCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUoaW9zKDEx
LjApKScsICcnKSAgIyB2ZXJzaW9uIG51bWJlcnMgYXJlIE9LLgorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjIuMykpJywgJycpICAjIEV4dGVuZGVk
IHZlcnNpb24gbnVtYmVycyBhcmUgT0sgZm9yIG1hY09TIG9ubHkuCisKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMSkpJywgJ21hY29zKDExKSBpcyBp
bnZhbGlkOyB2ZXJzaW9uIG51bWJlciBzaG91bGQgaGF2ZSBvbmUgZGVjaW1hbCAgW2J1aWxkL3dr
X2FwaV9hdmFpbGFibGVdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTEuKSknLCAnbWFjb3MoMTEuKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBX
S19NQUNfVEJBIG9yIGEgbnVtYmVyICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4xLjEpKScs
ICdtYWNvcygxMS4xLjEpIGlzIGludmFsaWQ7IHZlcnNpb24gbnVtYmVyIHNob3VsZCBoYXZlIG9u
ZSBkZWNpbWFsICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoMTAuMS4xKSknLCAnaW9zKDEwLjEuMSkg
aXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGJlIGZvcm1hdHRlZCBhcyBtYWpvci5t
aW5vciAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCisKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpJywgJycpICAjIFdLX0lP
U19UQkEgaXMgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfSU9TX1RCQSkpJywgJ21hY29zKFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4cGVj
dGVkIFdLX01BQ19UQkEgb3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0n
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpKScsICcnKSAgIyBXS19NQUNfVEJBIGlzIE9LLgorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
JywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9LLgorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSwgbWFjb3MoV0tf
TUFDX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9LLCBiYWNr
d2FyZHMuCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfSU9TX1RCQSkpJywgJ21hY29zKFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdL
X01BQ19UQkEgb3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQogICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcyhXS19NQUNfVEJBKSkn
LCAnaW9zKFdLX01BQ19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBu
dW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424614</attachid>
            <date>2021-03-29 20:54:54 -0700</date>
            <delta_ts>2021-03-30 10:14:45 -0700</delta_ts>
            <desc>Patch v1.1, turn off debugging code by default</desc>
            <filename>bug-223881-20210329205453.patch</filename>
            <type>text/plain</type>
            <size>12124</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTUxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiZDVkZDgyZmNhNjY1ZmI2OWZhY2M3YzNlZGNlNjk3
NDQxZDRjMC4uYTZlN2Q5N2I5MjNjODIzM2ZiNmNlY2E3ZWYzZTA2ZThiY2RiN2VkMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDIxLTAzLTI5ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFN0
eWxlIGNoZWNrZXIgc2hvdWxkIHdhcm4gYWJvdXQgdXNlIG9mIGZ1dHVyZSBPUyB2ZXJzaW9ucyBp
biBXS19BUElfQVZBSUxBQkxFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc29tZSBtb3JlIGJyYWlucyB0byB0aGUgV0tfQVBJX0FWQUlMQUJMRSBz
dHlsZSBjaGVja2VyLiBJdCBpcyBub3cgbW9yZQorICAgICAgICBmdXNzeSBhbmQgd29uJ3QgYWxs
b3cgYW55dGhpbmcgZXhjZXB0IGEgdmFsaWQgdmVyc2lvbiBzdHJpbmcgb3IgYSBUQkEgbWFjcm8u
CisKKyAgICAgICAgRm9yIG1hY09TLCB0aGVyZSBpcyBhIHNwZWNpYWwgY2FzZSB0byBhbGxvdyAx
MC5uLm0gdmVyc2lvbiBudW1iZXJzLiBPdGhlcndpc2UsCisgICAgICAgIHRoZSBleHBlY3RlZCBm
b3JtYXQgaXMgYG1ham9yLm1pbm9yYC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwLnB5OgorICAgICAgICAoY2hlY2tfYXJndW1lbnRzX2Zvcl93a19hcGlf
YXZhaWxhYmxlKToKKyAgICAgICAgKGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJs
ZS5jaGVja192ZXJzaW9uX3N0cmluZyk6CisgICAgICAgIChjaGVja19zdHlsZSk6CisgICAgICAg
IChjaGVja19taW5fdmVyc2lvbnNfb2Zfd2tfYXBpX2F2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChXZWJLaXRTdHlsZVRlc3QpOgorCiAyMDIxLTAzLTI4ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0lOREVYRURfREFUQUJBU0Ug
JiBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTLCBpdCBzZWVtcyBsaWtlIGl0IGlz
IG9uIGZvciBhbGwgcG9ydHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9jcHAucHkKaW5kZXggNWM5ZTExNTU4OWRlYmJkNDBmOWU0OTg0ZmJmNDBlYjFjZTlhNjViMy4u
ZTQ2MzdkMjAxZDExZWRiYmZhM2E2NTQ0NWJlMzgwYTU4ZGExZDE0NCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTMyOTYsOCArMzI5Niw4IEBA
IGRlZiBnZXRfbGluZV93aWR0aChsaW5lKToKICAgICByZXR1cm4gbGVuKGxpbmUpCiAKIAotZGVm
IGNoZWNrX21pbl92ZXJzaW9uc19vZl93a19hcGlfYXZhaWxhYmxlKGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZXJyb3IpOgotICAgICIiIkNoZWNrcyB0aGUgbWluIHZlcnNpb24gbnVtYmVycyBv
ZiBXS19BUElfQVZBSUxBQkxFCitkZWYgY2hlY2tfYXJndW1lbnRzX2Zvcl93a19hcGlfYXZhaWxh
YmxlKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAgICIiIkNoZWNrcyB0aGUg
YWxsb3dhYmxlIGFyZ3VtZW50cyBvZiBXS19BUElfQVZBSUxBQkxFCiAKICAgICBBcmdzOgogICAg
ICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBm
aWxlLgpAQCAtMzMwNSwzNCArMzMwNSw3NSBAQCBkZWYgY2hlY2tfbWluX3ZlcnNpb25zX29mX3dr
X2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgICBl
cnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogICAgICIi
IgogCisgICAgIyBOT1RFOiB0aGVzZSBuZWVkIHRvIGJlIGJ1bXBlZCBhZnRlciB0aGUgbmV4dCBT
REsgdmVyc2lvbiBiZWNvbWVzIGdlbmVyYWxseSBhdmFpbGFibGUuCisgICAgTUFYX0FMTE9XRURf
TUFDT1NfVkVSU0lPTiA9IDExLjAKKyAgICBNQVhfQUxMT1dFRF9JT1NfVkVSU0lPTiA9IDE0LjAK
KworICAgIGRlZiBjaGVja192ZXJzaW9uX3N0cmluZyhvcmlnaW5hbF92ZXJzaW9uX3N0cmluZywg
cGxhdGZvcm1fbmFtZSk6CisgICAgICAgIHZlcnNpb25fc3RyaW5nID0gb3JpZ2luYWxfdmVyc2lv
bl9zdHJpbmcKKworICAgICAgICBpZiBwbGF0Zm9ybV9uYW1lID09ICJtYWNvcyI6CisgICAgICAg
ICAgICBpZiB2ZXJzaW9uX3N0cmluZyA9PSAiV0tfTUFDX1RCQSI6CisgICAgICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgICAgIGlmIG5vdCBtYXRjaChyJ15bXGRcLl0rJCcsIHZlcnNpb25f
c3RyaW5nKToKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2Fw
aV9hdmFpbGFibGUnLCA1LCAnbWFjb3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19U
QkEgb3IgYSBudW1iZXInICUgb3JpZ2luYWxfdmVyc2lvbl9zdHJpbmcpCisgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgICAgIGlmIG5vdCBvcmlnaW5hbF92ZXJzaW9uX3N0cmluZy5z
dGFydHN3aXRoKCcxMCcpIGFuZCBvcmlnaW5hbF92ZXJzaW9uX3N0cmluZy5jb3VudCgnLicpICE9
IDE6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZh
aWxhYmxlJywgNSwgJ21hY29zKCVzKSBpcyBpbnZhbGlkOyB2ZXJzaW9uIG51bWJlciBzaG91bGQg
aGF2ZSBvbmUgZGVjaW1hbCcgJSBvcmlnaW5hbF92ZXJzaW9uX3N0cmluZykKKyAgICAgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBTcGVjaWFsLWNhc2UgZm9yIG1hY09TIDEwLiou
Kjogc3RyaXAgZXh0cmEgJy4nIHRvIG1ha2UgaXQgcGFyc2VhYmxlIGFzIGEgZmxvYXQuCisgICAg
ICAgICAgICBwYXJ0cyA9IHNlYXJjaChyJ14xMFwuKFtcLlxkXSspJCcsIHZlcnNpb25fc3RyaW5n
KQorICAgICAgICAgICAgaWYgcGFydHM6CisgICAgICAgICAgICAgICAgdmVyc2lvbl9zdHJpbmcg
PSAnMTAuJXMnICUgcGFydHMuZ3JvdXAoMSkucmVwbGFjZSgnLicsICcnKQorCisgICAgICAgICAg
ICBlbGlmIG5vdCBtYXRjaChyJ15cZCtcLlxkKyQnLCB2ZXJzaW9uX3N0cmluZyk6CisgICAgICAg
ICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwg
J21hY29zKCVzKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJBIG9yIGEgbnVtYmVyJyAl
IG9yaWdpbmFsX3ZlcnNpb25fc3RyaW5nKQorICAgICAgICAgICAgZWxpZiBmbG9hdCh2ZXJzaW9u
X3N0cmluZykgPiBNQVhfQUxMT1dFRF9NQUNPU19WRVJTSU9OOgorICAgICAgICAgICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNvcyglcykg
aXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIG5vdCBleGNlZWQgJWQnICUgKG9yaWdp
bmFsX3ZlcnNpb25fc3RyaW5nLCBNQVhfQUxMT1dFRF9NQUNPU19WRVJTSU9OKSkKKworICAgICAg
ICBlbGlmIHBsYXRmb3JtX25hbWUgPT0gImlvcyI6CisgICAgICAgICAgICBpZiB2ZXJzaW9uX3N0
cmluZyA9PSAiV0tfSU9TX1RCQSI6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
ICAgIGlmIG5vdCBtYXRjaChyJ15bXGRcLl0rJCcsIHZlcnNpb25fc3RyaW5nKToKKyAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAn
aW9zKCVzKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyJyAlIG9y
aWdpbmFsX3ZlcnNpb25fc3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICAgICBlbGlmIG5vdCBtYXRjaChyJ15cZCtcLlxkJCcsIHZlcnNpb25fc3RyaW5nKToKKyAgICAg
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1
LCAnaW9zKCVzKSBpcyBpbnZhbGlkOyB2ZXJzaW9uIG51bWJlciBzaG91bGQgYmUgZm9ybWF0dGVk
IGFzIG1ham9yLm1pbm9yJyAlIG9yaWdpbmFsX3ZlcnNpb25fc3RyaW5nKQorICAgICAgICAgICAg
ZWxpZiBub3QgbWF0Y2gocideXGQrXC5cZCskJywgdmVyc2lvbl9zdHJpbmcpOgorICAgICAgICAg
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdp
b3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBudW1iZXInICUgb3Jp
Z2luYWxfdmVyc2lvbl9zdHJpbmcpCisgICAgICAgICAgICBlbGlmIGZsb2F0KHZlcnNpb25fc3Ry
aW5nKSA+IE1BWF9BTExPV0VEX0lPU19WRVJTSU9OOgorICAgICAgICAgICAgICAgIGVycm9yKGxp
bmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdpb3MoJXMpIGlzIGludmFs
aWQ7IHZlcnNpb24gbnVtYmVyIHNob3VsZCBub3QgZXhjZWVkICVkJyAlIChvcmlnaW5hbF92ZXJz
aW9uX3N0cmluZywgTUFYX0FMTE9XRURfSU9TX1ZFUlNJT04pKQorCiAgICAgbGluZSA9IGNsZWFu
X2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3Ry
aW5ncy4KIAogICAgIHdrX2FwaV9hdmFpbGFibGUgPSBzZWFyY2gocidXS19BUElfQVZBSUxBQkxF
XChtYWNvc3hcKCcsIGxpbmUpCiAgICAgaWYgd2tfYXBpX2F2YWlsYWJsZToKICAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ21hY29zeCgpIGlz
IGRlcHJlY2F0ZWQ7IHVzZSBtYWNvcygpIGluc3RlYWQnKQorICAgICAgICByZXR1cm4KIAotICAg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIHN1cHBvcnQgYW55IG9yZGVyLgogICAgIHdrX2FwaV9hdmFp
bGFibGUgPSBzZWFyY2gocidXS19BUElfQVZBSUxBQkxFXChtYWNvc1woKFteXCldKylcKSwgaW9z
XCgoW15cKV0rKVwpXCknLCBsaW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6Ci0gICAgICAg
IG1hY29zTWluVmVyc2lvbiA9IHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSkKLSAgICAgICAgaWYg
bm90IG1hdGNoKHInXihbXGRcLl0rfFdLX01BQ19UQkEpJCcsIG1hY29zTWluVmVyc2lvbik6Ci0g
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1
LCAnbWFjb3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBudW1iZXIn
ICUgbWFjb3NNaW5WZXJzaW9uKQorICAgICAgICBjaGVja192ZXJzaW9uX3N0cmluZyh3a19hcGlf
YXZhaWxhYmxlLmdyb3VwKDEpLCAibWFjb3MiKQorICAgICAgICBjaGVja192ZXJzaW9uX3N0cmlu
Zyh3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDIpLCAiaW9zIikKIAotICAgICAgICBpb3NNaW5WZXJz
aW9uID0gd2tfYXBpX2F2YWlsYWJsZS5ncm91cCgyKQotICAgICAgICBpZiBub3QgbWF0Y2gocide
KFtcZFwuXSt8V0tfSU9TX1RCQSkkJywgaW9zTWluVmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJv
cihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnaW9zKCVzKSBpcyBp
bnZhbGlkOyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyJyAlIGlvc01pblZlcnNpb24p
CisgICAgd2tfYXBpX2F2YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQSV9BVkFJTEFCTEVcKGlvc1wo
KFteXCldKylcKSwgbWFjb3NcKChbXlwpXSspXClcKScsIGxpbmUpCisgICAgaWYgd2tfYXBpX2F2
YWlsYWJsZToKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWlsYWJsZS5n
cm91cCgxKSwgImlvcyIpCisgICAgICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFp
bGFibGUuZ3JvdXAoMiksICJtYWNvcyIpCiAKICAgICB3a19hcGlfYXZhaWxhYmxlID0gc2VhcmNo
KHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3NcKChbXlwpXSspXClcKScsIGxpbmUpCiAgICAgaWYg
d2tfYXBpX2F2YWlsYWJsZToKLSAgICAgICAgbWFjb3NNaW5WZXJzaW9uID0gd2tfYXBpX2F2YWls
YWJsZS5ncm91cCgxKQotICAgICAgICBpZiBub3QgbWF0Y2gocideKFtcZFwuXSt8V0tfTUFDX1RC
QSkkJywgbWFjb3NNaW5WZXJzaW9uKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
YnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNvcyglcykgaXMgaW52YWxpZDsgZXhwZWN0
ZWQgV0tfTUFDX1RCQSBvciBhIG51bWJlcicgJSBtYWNvc01pblZlcnNpb24pCisgICAgICAgIGNo
ZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSksICJtYWNvcyIpCiAK
ICAgICB3a19hcGlfYXZhaWxhYmxlID0gc2VhcmNoKHInV0tfQVBJX0FWQUlMQUJMRVwoaW9zXCgo
W15cKV0rKVwpXCknLCBsaW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6Ci0gICAgICAgIGlv
c01pblZlcnNpb24gPSB3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpCi0gICAgICAgIGlmIG5vdCBt
YXRjaChyJ14oW1xkXC5dK3xXS19JT1NfVEJBKSQnLCBpb3NNaW5WZXJzaW9uKToKLSAgICAgICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdpb3Mo
JXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBudW1iZXInICUgaW9zTWlu
VmVyc2lvbikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWlsYWJsZS5n
cm91cCgxKSwgImlvcyIpCisKIAogZGVmIGNoZWNrX3N0eWxlKGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZmlsZV9leHRlbnNpb24sIGNsYXNzX3N0YXRlLCBmaWxlX3N0YXRlLCBlbnVtX3N0YXRl
LCBlcnJvcik6CiAgICAgIiIiQ2hlY2tzIHJ1bGVzIGZyb20gdGhlICdDKysgc3R5bGUgcnVsZXMn
IHNlY3Rpb24gb2YgY3BwZ3VpZGUuaHRtbC4KQEAgLTM0MTUsNyArMzQ1Niw3IEBAIGRlZiBjaGVj
a19zdHlsZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBjbGFzc19z
dGF0ZSwgZmlsZV9zdGF0CiAgICAgY2hlY2tfaW5kZW50YXRpb25fYW1vdW50KGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpCiAgICAgY2hlY2tfZW51bV9jYXNpbmcoY2xlYW5fbGluZXMs
IGxpbmVfbnVtYmVyLCBlbnVtX3N0YXRlLCBlcnJvcikKICAgICBjaGVja19vbmNlX2ZsYWcoY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcikKLSAgICBjaGVja19taW5f
dmVyc2lvbnNfb2Zfd2tfYXBpX2F2YWlsYWJsZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVy
cm9yKQorICAgIGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJsZShjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGVycm9yKQogCiAKIF9SRV9QQVRURVJOX0lOQ0xVREVfTkVXX1NUWUxF
ID0gcmUuY29tcGlsZShyJyMoPzppbmNsdWRlfGltcG9ydCkgKyJbXi9dK1wuaCInKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5w
eQppbmRleCBmYzRiNWNjZjM0OGY1NTY0OTI3Y2FlMzA4ODZiYmU0N2I4ZjI4OGU0Li45ZWVkNTNk
MjJiNzA4ZmIwNGY5ZGU4M2Y3Y2RhYTBmZGQ1ZmY0OGE3IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQpAQCAtNDgsNiAr
NDgsMTIgQEAgZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQgY3BwIGFzIGNwcF9z
dHlsZQogZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIs
IF9zcGxpdF9pZGVudGlmaWVyX2ludG9fd29yZHMKIGZyb20gd2Via2l0cHkuc3R5bGUuZmlsdGVy
IGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCiAKKyMgRW5hYmxlIHRoaXMgaWYgeW91IG5lZWQg
dG8gc2VlIHRoZSBmdWxsIGRpZmYgd2hlbiBkZWJ1Z2dpbmcgZmFpbHVyZXMuCisjIGh0dHBzOi8v
c3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQzODQyNjc1L2hvdy10by1wcmV2ZW50LXRydW5j
YXRpbmctb2Ytc3RyaW5nLWluLXVuaXQtdGVzdC1weXRob24KK2lmIFRydWU6CisgICAgaWYgJ3Vu
aXR0ZXN0LnV0aWwnIGluIF9faW1wb3J0X18oJ3N5cycpLm1vZHVsZXM6CisgICAgICAgICMgU2hv
dyBmdWxsIGRpZmYgaW4gc2VsZi5hc3NlcnRFcXVhbC4KKyAgICAgICAgX19pbXBvcnRfXygnc3lz
JykubW9kdWxlc1sndW5pdHRlc3QudXRpbCddLl9NQVhfTEVOR1RIID0gOTk5OTk5OTk5CiAKICMg
VGhpcyBjbGFzcyB3b3JrcyBhcyBhbiBlcnJvciBjb2xsZWN0b3IgYW5kIHJlcGxhY2VzIGNwcF9z
dHlsZS5FcnJvcgogIyBmdW5jdGlvbiBmb3IgdGhlIHVuaXQgdGVzdHMuICBXZSBhbHNvIHZlcmlm
eSBlYWNoIGNhdGVnb3J5IHdlIHNlZQpAQCAtNjM4NSwxOCArNjM5MSwyMyBAQCBjbGFzcyBXZWJL
aXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAKICAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnTVlNQUNSTyhhID8gYigpIDogYyk7JywgJycpCiAKLSAgICBkZWYgdGVzdF9taW5fdmVyc2lv
bnNfb2Zfd2tfYXBpX2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMS4yLjMpKScsICdtYWNvc3goKSBpcyBkZXByZWNhdGVk
OyB1c2UgbWFjb3MoKSBpbnN0ZWFkICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAg
ICBkZWYgdGVzdF9hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjIuMykpJywgJ21h
Y29zeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBtYWNvcygpIGluc3RlYWQgIFtidWlsZC93a19hcGlf
YXZhaWxhYmxlXSBbNV0nKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSknLCAnbWFjb3N4KCkgaXMgZGVwcmVjYXRlZDsgdXNlIG1h
Y29zKCkgaW5zdGVhZCAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMS4yLjMpLCBpb3MoMy40LjUp
KScsICcnKSAgIyB2ZXJzaW9uIG51bWJlcnMgYXJlIE9LLgotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
JywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9LLgotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX0lPU19UQkEpLCBpb3MoMy40
LjUpKScsICdtYWNvcyhXS19JT1NfVEJBKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJB
IG9yIGEgbnVtYmVyICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxLjIuMyksIGlvcyhXS19NQUNf
VEJBKSknLCAnaW9zKFdLX01BQ19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEg
b3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDEuMi4zKSknLCAnJykgICMgdmVy
c2lvbiBudW1iZXJzIGFyZSBPSy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSknLCAnJykgICMgV0tfTUFDX1RCQSBpcyBPSy4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoMy40LjUpKScsICcn
KSAgIyB2ZXJzaW9uIG51bWJlcnMgYXJlIE9LLgorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCkpJywgJycpICAjIHZlcnNpb24gbnVtYmVycyBh
cmUgT0suCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUoaW9zKDEx
LjApKScsICcnKSAgIyB2ZXJzaW9uIG51bWJlcnMgYXJlIE9LLgorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjIuMykpJywgJycpICAjIEV4dGVuZGVk
IHZlcnNpb24gbnVtYmVycyBhcmUgT0sgZm9yIG1hY09TIG9ubHkuCisKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMSkpJywgJ21hY29zKDExKSBpcyBp
bnZhbGlkOyB2ZXJzaW9uIG51bWJlciBzaG91bGQgaGF2ZSBvbmUgZGVjaW1hbCAgW2J1aWxkL3dr
X2FwaV9hdmFpbGFibGVdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTEuKSknLCAnbWFjb3MoMTEuKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBX
S19NQUNfVEJBIG9yIGEgbnVtYmVyICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4xLjEpKScs
ICdtYWNvcygxMS4xLjEpIGlzIGludmFsaWQ7IHZlcnNpb24gbnVtYmVyIHNob3VsZCBoYXZlIG9u
ZSBkZWNpbWFsICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoMTAuMS4xKSknLCAnaW9zKDEwLjEuMSkg
aXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGJlIGZvcm1hdHRlZCBhcyBtYWpvci5t
aW5vciAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCisKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpJywgJycpICAjIFdLX0lP
U19UQkEgaXMgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfSU9TX1RCQSkpJywgJ21hY29zKFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4cGVj
dGVkIFdLX01BQ19UQkEgb3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0n
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpKScsICcnKSAgIyBXS19NQUNfVEJBIGlzIE9LLgorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
JywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9LLgorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSwgbWFjb3MoV0tf
TUFDX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9LLCBiYWNr
d2FyZHMuCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfSU9TX1RCQSkpJywgJ21hY29zKFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdL
X01BQ19UQkEgb3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQogICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcyhXS19NQUNfVEJBKSkn
LCAnaW9zKFdLX01BQ19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBu
dW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424654</attachid>
            <date>2021-03-30 10:14:46 -0700</date>
            <delta_ts>2021-03-30 10:15:32 -0700</delta_ts>
            <desc>Patch v2.1 - use Version / VersionNameMap to parse and compare version numbers</desc>
            <filename>bug-223881-20210330101445.patch</filename>
            <type>text/plain</type>
            <size>15038</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTUxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiZDVkZDgyZmNhNjY1ZmI2OWZhY2M3YzNlZGNlNjk3
NDQxZDRjMC4uYjE1NTNkYzY4YWQ2MDg0NzAyNGNiMzU2YzgxYjUyYzdiYmIzNmFiOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIxLTAzLTI5ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFN0
eWxlIGNoZWNrZXIgc2hvdWxkIHdhcm4gYWJvdXQgdXNlIG9mIGZ1dHVyZSBPUyB2ZXJzaW9ucyBp
biBXS19BUElfQVZBSUxBQkxFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc29tZSBtb3JlIGJyYWlucyB0byB0aGUgV0tfQVBJX0FWQUlMQUJMRSBz
dHlsZSBjaGVja2VyLiBJdCBpcyBub3cgbW9yZQorICAgICAgICBmdXNzeSBhbmQgd29uJ3QgYWxs
b3cgYW55dGhpbmcgZXhjZXB0IGEgdmFsaWQgdmVyc2lvbiBzdHJpbmcgb3IgYSBUQkEgbWFjcm8u
CisgICAgICAgIFRoZXJlIGlzIGFsc28gYSBtZWNoYW5pc20gdG8gcHJldmVudCBhZGRpbmcgdmVy
c2lvbiBudW1iZXJzIHRoYXQgZXhjZWVkIHRoZQorICAgICAgICBwdWJsaWNseSBhdmFpbGFibGUg
U0RLIHZlcnNpb24gZm9yIHRoZSByZWxldmFudCBPUy4KKworICAgICAgICBGb3IgbWFjT1MsIHRo
ZXJlIGlzIGEgc3BlY2lhbCBjYXNlIHRvIGFsbG93IDEwLm4ubSB2ZXJzaW9uIG51bWJlcnMuIE90
aGVyd2lzZSwKKyAgICAgICAgdGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgbWFqb3IubWlub3JgLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5weToK
KyAgICAgICAgKFZlcnNpb25OYW1lTWFwLl9faW5pdF9fKTogQWRkICdtYWNvcycgYXMgYW4gYWxp
YXMgZm9yICdtYWMnLgorICAgICAgICAoVmVyc2lvbk5hbWVNYXAubWF4X3B1YmxpY192ZXJzaW9u
KTogQWRkZWQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cC5weToKKyAgICAgICAgKGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJsZSk6Cisg
ICAgICAgIChjaGVja19hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUubWF4X3ZlcnNpb25f
Zm9yX3BsYXRmb3JtKToKKyAgICAgICAgKGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWls
YWJsZS5jaGVja192ZXJzaW9uX3N0cmluZyk6CisgICAgICAgIChjaGVja19zdHlsZSk6CisgICAg
ICAgIChjaGVja19taW5fdmVyc2lvbnNfb2Zfd2tfYXBpX2F2YWlsYWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHk6
CisgICAgICAgIChXZWJLaXRTdHlsZVRlc3QpOgorCiAyMDIxLTAzLTI4ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0lOREVYRURfREFUQUJB
U0UgJiBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTLCBpdCBzZWVtcyBsaWtlIGl0
IGlzIG9uIGZvciBhbGwgcG9ydHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3ZlcnNpb25fbmFtZV9tYXAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi92ZXJzaW9uX25hbWVfbWFwLnB5CmluZGV4IGVmYjA5YjJmMTYwZTA2NjJmNGNiYzMyOGZlZDdi
YWFmN2FhZjIxZDIuLmE5NmM0YTQ3NTdkM2Q4NDkyZjE0NDMwZDMwMjNkYjY5ZGVjNjZhMTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXAu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5w
eQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4
MSw5IEBAIGNsYXNzIFZlcnNpb25OYW1lTWFwKG9iamVjdCk6CiAgICAgICAgICAgICAnbGludXgn
OiB7fSwKICAgICAgICAgfQogCisgICAgICAgICMgQWxpYXMgbWFjb3MgdG8gbWFjIHNvIHRoYXQg
ZWl0aGVyIG5hbWUgd29ya3MuCisgICAgICAgIHNlbGYubWFwcGluZ1tQVUJMSUNfVEFCTEVdWydt
YWNvcyddID0gc2VsZi5tYXBwaW5nW1BVQkxJQ19UQUJMRV1bJ21hYyddCisKICAgICAgICAgIyB3
aW5jYWlybyB1c2VzIHRoZSBzYW1lIHZlcnNpb25zIGFzIFdpbmRvd3MKICAgICAgICAgc2VsZi5t
YXBwaW5nW1BVQkxJQ19UQUJMRV1bJ3dpbmNhaXJvJ10gPSBzZWxmLm1hcHBpbmdbUFVCTElDX1RB
QkxFXVsnd2luJ10KIApAQCAtMTA3LDYgKzExMCwxNCBAQCBjbGFzcyBWZXJzaW9uTmFtZU1hcChv
YmplY3QpOgogICAgICAgICAgICAgICAgIGNsb3Nlc3RfbWF0Y2ggPSAob3NfbmFtZSwgb3NfdmVy
c2lvbikKICAgICAgICAgcmV0dXJuIGNsb3Nlc3RfbWF0Y2hbMF0KIAorICAgIGRlZiBtYXhfcHVi
bGljX3ZlcnNpb24oc2VsZiwgcGxhdGZvcm09Tm9uZSk6CisgICAgICAgIGZvdW5kX21heF92ZXJz
aW9uID0gTm9uZQorICAgICAgICBmb3Igb3NfbmFtZSwgb3NfdmVyc2lvbiBpbiBzZWxmLm1hcHBp
bmdfZm9yX3BsYXRmb3JtKHBsYXRmb3JtLCBQVUJMSUNfVEFCTEUpLml0ZW1zKCk6CisgICAgICAg
ICAgICBpZiBvc192ZXJzaW9uID4gZm91bmRfbWF4X3ZlcnNpb246CisgICAgICAgICAgICAgICAg
Zm91bmRfbWF4X3ZlcnNpb24gPSBvc192ZXJzaW9uCisKKyAgICAgICAgcmV0dXJuIGZvdW5kX21h
eF92ZXJzaW9uCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN0cmlwX25hbWVfZm9ybWF0
dGluZyhuYW1lKToKICAgICAgICAgIyA8T1M+IG1ham9yLm1pbm9yLnRpbnkgc2hvdWxkIG1hcCB0
byA8T1M+IG1ham9yCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
LnB5CmluZGV4IDVjOWUxMTU1ODlkZWJiZDQwZjllNDk4NGZiZjQwZWIxY2U5YTY1YjMuLjU3YTY0
MWIxMzRmNTdhMTBhODA5ZGRkZDBjMzQ4MGI2MDM2NDAxM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0yLDcgKzIsNyBAQAogIwogIyBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHlyaWdodCAo
QykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTQ1LDEwICs0NSwxMSBAQCBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKIGlt
cG9ydCB1bmljb2RlZGF0YQogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUsIFZlcnNpb24KIAogZnJvbSB3ZWJraXRweS5z
dHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IG1hdGNoLCBzZWFyY2gsIHN1Yiwgc3VibgogZnJv
bSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcAogCiAjIFRoZSBr
ZXkgdG8gdXNlIHRvIHByb3ZpZGUgYSBjbGFzcyB0byBmYWtlIGxvYWRpbmcgYSBoZWFkZXIgZmls
ZS4KIElOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWSA9ICdpbmNsdWRlX2hlYWRlcl9pbycKQEAgLTMy
OTYsOCArMzI5Nyw4IEBAIGRlZiBnZXRfbGluZV93aWR0aChsaW5lKToKICAgICByZXR1cm4gbGVu
KGxpbmUpCiAKIAotZGVmIGNoZWNrX21pbl92ZXJzaW9uc19vZl93a19hcGlfYXZhaWxhYmxlKGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkNoZWNrcyB0aGUgbWluIHZl
cnNpb24gbnVtYmVycyBvZiBXS19BUElfQVZBSUxBQkxFCitkZWYgY2hlY2tfYXJndW1lbnRzX2Zv
cl93a19hcGlfYXZhaWxhYmxlKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAg
ICIiIkNoZWNrcyB0aGUgYWxsb3dhYmxlIGFyZ3VtZW50cyBvZiBXS19BUElfQVZBSUxBQkxFCiAK
ICAgICBBcmdzOgogICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBj
b250YWluaW5nIHRoZSBmaWxlLgpAQCAtMzMwNSwzNCArMzMwNiw2OCBAQCBkZWYgY2hlY2tfbWlu
X3ZlcnNpb25zX29mX3drX2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcik6CiAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgogICAgICIiIgogCisgICAgQG1lbW9pemVkCisgICAgZGVmIG1heF92ZXJzaW9uX2Zv
cl9wbGF0Zm9ybShwbGF0Zm9ybV9uYW1lKToKKyAgICAgICAgcmV0dXJuIFZlcnNpb25OYW1lTWFw
Lm1hcCgpLm1heF9wdWJsaWNfdmVyc2lvbihwbGF0Zm9ybT1wbGF0Zm9ybV9uYW1lKQorCisgICAg
ZGVmIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHZlcnNpb25fc3RyaW5nLCBwbGF0Zm9ybV9uYW1lKToK
KyAgICAgICAgaWYgcGxhdGZvcm1fbmFtZSA9PSAibWFjb3MiOgorICAgICAgICAgICAgaWYgdmVy
c2lvbl9zdHJpbmcgPT0gIldLX01BQ19UQkEiOgorICAgICAgICAgICAgICAgIHJldHVybgorCisg
ICAgICAgICAgICBtYWNfdmVyc2lvbiA9IE5vbmUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBtYWNfdmVyc2lvbiA9IFZlcnNpb24uZnJvbV9zdHJpbmcodmVyc2lvbl9zdHJpbmcp
CisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBlcnJvcihs
aW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnbWFjb3MoJXMpIGlzIGlu
dmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBtYWpvci5taW5vciB2ZXJzaW9uJyAlIHZl
cnNpb25fc3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBt
YWNfdmVyc2lvbi5tYWpvciAhPSAxMCBhbmQgdmVyc2lvbl9zdHJpbmcuY291bnQoJy4nKSAhPSAx
OgorICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWls
YWJsZScsIDUsICdtYWNvcyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGhh
dmUgb25lIGRlY2ltYWwnICUgdmVyc2lvbl9zdHJpbmcpCisgICAgICAgICAgICBlbGlmIG1hY192
ZXJzaW9uID4gbWF4X3ZlcnNpb25fZm9yX3BsYXRmb3JtKCdtYWNvcycpOgorICAgICAgICAgICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNv
cyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIG5vdCBleGNlZWQgJWQnICUg
KHZlcnNpb25fc3RyaW5nLCBtYXhfdmVyc2lvbl9mb3JfcGxhdGZvcm0oJ21hY29zJykpKQorCisg
ICAgICAgIGVsaWYgcGxhdGZvcm1fbmFtZSA9PSAiaW9zIjoKKyAgICAgICAgICAgIGlmIHZlcnNp
b25fc3RyaW5nID09ICJXS19JT1NfVEJBIjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICAgICAgaW9zX3ZlcnNpb24gPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgaW9zX3ZlcnNpb24gPSBWZXJzaW9uLmZyb21fc3RyaW5nKHZlcnNpb25fc3RyaW5nKQor
ICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZXJyb3IobGlu
ZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ2lvcyglcykgaXMgaW52YWxp
ZDsgZXhwZWN0ZWQgV0tfSU9TX1RCQSBvciBhIG1ham9yLm1pbm9yIHZlcnNpb24nICUgdmVyc2lv
bl9zdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGlmIHZlcnNp
b25fc3RyaW5nLmNvdW50KCcuJykgIT0gMToKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnaW9zKCVzKSBpcyBpbnZhbGlkOyB2
ZXJzaW9uIG51bWJlciBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIG1ham9yLm1pbm9yJyAlIHZlcnNp
b25fc3RyaW5nKQorICAgICAgICAgICAgZWxpZiBpb3NfdmVyc2lvbiA+IG1heF92ZXJzaW9uX2Zv
cl9wbGF0Zm9ybSgnaW9zJyk6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdi
dWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ2lvcyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBu
dW1iZXIgc2hvdWxkIG5vdCBleGNlZWQgJWQnICUgKHZlcnNpb25fc3RyaW5nLCBtYXhfdmVyc2lv
bl9mb3JfcGxhdGZvcm0oJ2lvcycpKSkKKwogICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRb
bGluZV9udW1iZXJdICAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCiAKICAgICB3
a19hcGlfYXZhaWxhYmxlID0gc2VhcmNoKHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3N4XCgnLCBs
aW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6CiAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVy
LCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNvc3goKSBpcyBkZXByZWNhdGVkOyB1
c2UgbWFjb3MoKSBpbnN0ZWFkJykKKyAgICAgICAgcmV0dXJuCiAKLSAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCBzdXBwb3J0IGFueSBvcmRlci4KICAgICB3a19hcGlfYXZhaWxhYmxlID0gc2VhcmNo
KHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3NcKChbXlwpXSspXCksIGlvc1woKFteXCldKylcKVwp
JywgbGluZSkKICAgICBpZiB3a19hcGlfYXZhaWxhYmxlOgotICAgICAgICBtYWNvc01pblZlcnNp
b24gPSB3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpCi0gICAgICAgIGlmIG5vdCBtYXRjaChyJ14o
W1xkXC5dK3xXS19NQUNfVEJBKSQnLCBtYWNvc01pblZlcnNpb24pOgotICAgICAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ21hY29zKCVzKSBp
cyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJBIG9yIGEgbnVtYmVyJyAlIG1hY29zTWluVmVy
c2lvbikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWlsYWJsZS5ncm91
cCgxKSwgIm1hY29zIikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWls
YWJsZS5ncm91cCgyKSwgImlvcyIpCiAKLSAgICAgICAgaW9zTWluVmVyc2lvbiA9IHdrX2FwaV9h
dmFpbGFibGUuZ3JvdXAoMikKLSAgICAgICAgaWYgbm90IG1hdGNoKHInXihbXGRcLl0rfFdLX0lP
U19UQkEpJCcsIGlvc01pblZlcnNpb24pOgotICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ2lvcyglcykgaXMgaW52YWxpZDsgZXhwZWN0
ZWQgV0tfSU9TX1RCQSBvciBhIG51bWJlcicgJSBpb3NNaW5WZXJzaW9uKQorICAgIHdrX2FwaV9h
dmFpbGFibGUgPSBzZWFyY2gocidXS19BUElfQVZBSUxBQkxFXChpb3NcKChbXlwpXSspXCksIG1h
Y29zXCgoW15cKV0rKVwpXCknLCBsaW5lKQorICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6CisgICAg
ICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSksICJpb3Mi
KQorICAgICAgICBjaGVja192ZXJzaW9uX3N0cmluZyh3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDIp
LCAibWFjb3MiKQogCiAgICAgd2tfYXBpX2F2YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQSV9BVkFJ
TEFCTEVcKG1hY29zXCgoW15cKV0rKVwpXCknLCBsaW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFi
bGU6Ci0gICAgICAgIG1hY29zTWluVmVyc2lvbiA9IHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSkK
LSAgICAgICAgaWYgbm90IG1hdGNoKHInXihbXGRcLl0rfFdLX01BQ19UQkEpJCcsIG1hY29zTWlu
VmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9h
dmFpbGFibGUnLCA1LCAnbWFjb3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEg
b3IgYSBudW1iZXInICUgbWFjb3NNaW5WZXJzaW9uKQorICAgICAgICBjaGVja192ZXJzaW9uX3N0
cmluZyh3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpLCAibWFjb3MiKQogCiAgICAgd2tfYXBpX2F2
YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQSV9BVkFJTEFCTEVcKGlvc1woKFteXCldKylcKVwpJywg
bGluZSkKICAgICBpZiB3a19hcGlfYXZhaWxhYmxlOgotICAgICAgICBpb3NNaW5WZXJzaW9uID0g
d2tfYXBpX2F2YWlsYWJsZS5ncm91cCgxKQotICAgICAgICBpZiBub3QgbWF0Y2gocideKFtcZFwu
XSt8V0tfSU9TX1RCQSkkJywgaW9zTWluVmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnaW9zKCVzKSBpcyBpbnZhbGlk
OyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyJyAlIGlvc01pblZlcnNpb24pCisgICAg
ICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSksICJpb3Mi
KQorCiAKIGRlZiBjaGVja19zdHlsZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0
ZW5zaW9uLCBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0ZSwgZW51bV9zdGF0ZSwgZXJyb3IpOgogICAg
ICIiIkNoZWNrcyBydWxlcyBmcm9tIHRoZSAnQysrIHN0eWxlIHJ1bGVzJyBzZWN0aW9uIG9mIGNw
cGd1aWRlLmh0bWwuCkBAIC0zNDE1LDcgKzM0NTAsNyBAQCBkZWYgY2hlY2tfc3R5bGUoY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgY2xhc3Nfc3RhdGUsIGZpbGVfc3Rh
dAogICAgIGNoZWNrX2luZGVudGF0aW9uX2Ftb3VudChjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGVycm9yKQogICAgIGNoZWNrX2VudW1fY2FzaW5nKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZW51bV9zdGF0ZSwgZXJyb3IpCiAgICAgY2hlY2tfb25jZV9mbGFnKGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCi0gICAgY2hlY2tfbWluX3ZlcnNpb25zX29mX3dr
X2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKKyAgICBjaGVj
a19hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVy
LCBlcnJvcikKIAogCiBfUkVfUEFUVEVSTl9JTkNMVURFX05FV19TVFlMRSA9IHJlLmNvbXBpbGUo
cicjKD86aW5jbHVkZXxpbXBvcnQpICsiW14vXStcLmgiJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggZmM0YjVj
Y2YzNDhmNTU2NDkyN2NhZTMwODg2YmJlNDdiOGYyODhlNC4uYjM4YWMwNDU5MTMxNmE4Y2MwYzEw
OWM5YThjODFjMTZkZTNkMDM0NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKQEAgLTQ4LDYgKzQ4LDEyIEBAIGZyb20g
d2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IGNwcCBhcyBjcHBfc3R5bGUKIGZyb20gd2Vi
a2l0cHkuc3R5bGUuY2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyLCBfc3BsaXRfaWRlbnRp
Zmllcl9pbnRvX3dvcmRzCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmZpbHRlciBpbXBvcnQgRmlsdGVy
Q29uZmlndXJhdGlvbgogCisjIEVuYWJsZSB0aGlzIGlmIHlvdSBuZWVkIHRvIHNlZSB0aGUgZnVs
bCBkaWZmIHdoZW4gZGVidWdnaW5nIGZhaWx1cmVzLgorIyBodHRwczovL3N0YWNrb3ZlcmZsb3cu
Y29tL3F1ZXN0aW9ucy80Mzg0MjY3NS9ob3ctdG8tcHJldmVudC10cnVuY2F0aW5nLW9mLXN0cmlu
Zy1pbi11bml0LXRlc3QtcHl0aG9uCitpZiBUcnVlOgorICAgIGlmICd1bml0dGVzdC51dGlsJyBp
biBfX2ltcG9ydF9fKCdzeXMnKS5tb2R1bGVzOgorICAgICAgICAjIFNob3cgZnVsbCBkaWZmIGlu
IHNlbGYuYXNzZXJ0RXF1YWwuCisgICAgICAgIF9faW1wb3J0X18oJ3N5cycpLm1vZHVsZXNbJ3Vu
aXR0ZXN0LnV0aWwnXS5fTUFYX0xFTkdUSCA9IDk5OTk5OTk5OQogCiAjIFRoaXMgY2xhc3Mgd29y
a3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5bGUuRXJyb3IKICMg
ZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJpZnkgZWFjaCBjYXRlZ29y
eSB3ZSBzZWUKQEAgLTYzODUsMjAgKzYzOTEsMjYgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENw
cFN0eWxlVGVzdEJhc2UpOgogCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ01ZTUFDUk8oYSA/
IGIoKSA6IGMpOycsICcnKQogCi0gICAgZGVmIHRlc3RfbWluX3ZlcnNpb25zX29mX3drX2FwaV9h
dmFpbGFibGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEuMi4zKSknLCAnbWFjb3N4KCkgaXMgZGVwcmVjYXRlZDsgdXNlIG1hY29zKCkg
aW5zdGVhZCAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCisgICAgZGVmIHRlc3RfYXJn
dW1lbnRzX2Zvcl93a19hcGlfYXZhaWxhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4yLjMpKScsICdtYWNvc3goKSBpcyBkZXBy
ZWNhdGVkOyB1c2UgbWFjb3MoKSBpbnN0ZWFkICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVd
JykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSkpJywgJ21hY29zeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBtYWNvcygpIGluc3RlYWQg
IFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDEuMi4zKSwgaW9zKDMuNC41KSknLCAnJykgICMgdmVy
c2lvbiBudW1iZXJzIGFyZSBPSy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKScsICcnKSAgIyBXS19N
QUNfVEJBIGFuZCBXS19JT1NfVEJBIGFyZSBPSy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19JT1NfVEJBKSwgaW9zKDMuNC41KSknLCAnbWFjb3Mo
V0tfSU9TX1RCQSkgaXMgaW52YWxpZDsgZXhwZWN0ZWQgV0tfTUFDX1RCQSBvciBhIG51bWJlciAg
W2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMS4yLjMpLCBpb3MoV0tfTUFDX1RCQSkpJywgJ2lvcyhX
S19NQUNfVEJBKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyICBb
YnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxLjIuMykpJywgJycpICAjIHZlcnNpb24gbnVtYmVycyBh
cmUgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgaXMgT0suCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUoaW9zKDMuNC41KSknLCAnJykgICMgdmVyc2lvbiBu
dW1iZXJzIGFyZSBPSy4KKworICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxB
QkxFKG1hY29zKDExLjApKScsICcnKSAgIyB2ZXJzaW9uIG51bWJlcnMgYXJlIE9LLgorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSknLCAnJykgICMg
dmVyc2lvbiBudW1iZXJzIGFyZSBPSy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4yLjMpKScsICcnKSAgIyBFeHRlbmRlZCB2ZXJzaW9uIG51bWJl
cnMgYXJlIE9LIGZvciBtYWNPUyBvbmx5LgorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTEpKScsICdtYWNvcygxMSkgaXMgaW52YWxpZDsgdmVyc2lv
biBudW1iZXIgc2hvdWxkIGhhdmUgb25lIGRlY2ltYWwgIFtidWlsZC93a19hcGlfYXZhaWxhYmxl
XSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29z
KDExLikpJywgJ21hY29zKDExLikgaXMgaW52YWxpZDsgZXhwZWN0ZWQgV0tfTUFDX1RCQSBvciBh
IG1ham9yLm1pbm9yIHZlcnNpb24gIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjEuMSkpJywg
J21hY29zKDExLjEuMSkgaXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGhhdmUgb25l
IGRlY2ltYWwgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcygxMC4pKScsICdpb3MoMTAuKSBpcyBpbnZh
bGlkOyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbWFqb3IubWlub3IgdmVyc2lvbiAgW2J1aWxk
L3drX2FwaV9hdmFpbGFibGVdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQ
SV9BVkFJTEFCTEUoaW9zKDEwLjEuMSkpJywgJ2lvcygxMC4xLjEpIGlzIGludmFsaWQ7IHZlcnNp
b24gbnVtYmVyIHNob3VsZCBiZSBmb3JtYXR0ZWQgYXMgbWFqb3IubWlub3IgIFtidWlsZC93a19h
cGlfYXZhaWxhYmxlXSBbNV0nKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9B
VkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKScsICcnKSAgIyBXS19JT1NfVEJBIGlzIE9LLgotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX0lPU19UQkEp
KScsICdtYWNvcyhXS19JT1NfVEJBKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJBIG9y
IGEgbnVtYmVyICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19JT1NfVEJBKSknLCAnbWFjb3Mo
V0tfSU9TX1RCQSkgaXMgaW52YWxpZDsgZXhwZWN0ZWQgV0tfTUFDX1RCQSBvciBhIG51bWJlciAg
W2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX01BQ19UQkEpKScsICdpb3MoV0tfTUFDX1RCQSkgaXMg
aW52YWxpZDsgZXhwZWN0ZWQgV0tfSU9TX1RCQSBvciBhIG51bWJlciAgW2J1aWxkL3drX2FwaV9h
dmFpbGFibGVdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgaXMgT0suCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSknLCAnJykgICMgV0tfTUFDX1RCQSBhbmQgV0tfSU9TX1RCQSBhcmUgT0su
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19U
QkEpLCBtYWNvcyhXS19NQUNfVEJBKSknLCAnJykgICMgV0tfTUFDX1RCQSBhbmQgV0tfSU9TX1RC
QSBhcmUgT0ssIGJhY2t3YXJkcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19JT1NfVEJBKSknLCAnbWFjb3MoV0tfSU9TX1RCQSkgaXMgaW52YWxp
ZDsgZXhwZWN0ZWQgV0tfTUFDX1RCQSBvciBhIG1ham9yLm1pbm9yIHZlcnNpb24gIFtidWlsZC93
a19hcGlfYXZhaWxhYmxlXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElf
QVZBSUxBQkxFKGlvcyhXS19NQUNfVEJBKSknLCAnaW9zKFdLX01BQ19UQkEpIGlzIGludmFsaWQ7
IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBtYWpvci5taW5vciB2ZXJzaW9uICBbYnVpbGQvd2tf
YXBpX2F2YWlsYWJsZV0gWzVdJykKIAogICAgIGRlZiB0ZXN0X29zX3ZlcnNpb25fY2hlY2tzKHNl
bGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCcjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMTAwMDAnLCAnTWlzcGxhY2Vk
IE9TIHZlcnNpb24gY2hlY2suIFBsZWFzZSB1c2UgYSBuYW1lZCBtYWNybyBpbiBvbmUgb2YgaGVh
ZGVycyBpbiB0aGUgd3RmL1BsYXRmb3JtLmggc3VpdGUgb2YgZmlsZXMgb3IgYW4gYXBwcm9wcmlh
dGUgaW50ZXJuYWwgZmlsZS4gIFtidWlsZC92ZXJzaW9uX2NoZWNrXSBbNV0nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424655</attachid>
            <date>2021-03-30 10:15:34 -0700</date>
            <delta_ts>2021-03-31 15:28:21 -0700</delta_ts>
            <desc>Patch v2.1 - use Version / VersionNameMap to parse and compare version numbers</desc>
            <filename>bug-223881-20210330101533.patch</filename>
            <type>text/plain</type>
            <size>15039</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTUxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiZDVkZDgyZmNhNjY1ZmI2OWZhY2M3YzNlZGNlNjk3
NDQxZDRjMC4uYjE1NTNkYzY4YWQ2MDg0NzAyNGNiMzU2YzgxYjUyYzdiYmIzNmFiOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIxLTAzLTI5ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFN0
eWxlIGNoZWNrZXIgc2hvdWxkIHdhcm4gYWJvdXQgdXNlIG9mIGZ1dHVyZSBPUyB2ZXJzaW9ucyBp
biBXS19BUElfQVZBSUxBQkxFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc29tZSBtb3JlIGJyYWlucyB0byB0aGUgV0tfQVBJX0FWQUlMQUJMRSBz
dHlsZSBjaGVja2VyLiBJdCBpcyBub3cgbW9yZQorICAgICAgICBmdXNzeSBhbmQgd29uJ3QgYWxs
b3cgYW55dGhpbmcgZXhjZXB0IGEgdmFsaWQgdmVyc2lvbiBzdHJpbmcgb3IgYSBUQkEgbWFjcm8u
CisgICAgICAgIFRoZXJlIGlzIGFsc28gYSBtZWNoYW5pc20gdG8gcHJldmVudCBhZGRpbmcgdmVy
c2lvbiBudW1iZXJzIHRoYXQgZXhjZWVkIHRoZQorICAgICAgICBwdWJsaWNseSBhdmFpbGFibGUg
U0RLIHZlcnNpb24gZm9yIHRoZSByZWxldmFudCBPUy4KKworICAgICAgICBGb3IgbWFjT1MsIHRo
ZXJlIGlzIGEgc3BlY2lhbCBjYXNlIHRvIGFsbG93IDEwLm4ubSB2ZXJzaW9uIG51bWJlcnMuIE90
aGVyd2lzZSwKKyAgICAgICAgdGhlIGV4cGVjdGVkIGZvcm1hdCBpcyBgbWFqb3IubWlub3JgLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5weToK
KyAgICAgICAgKFZlcnNpb25OYW1lTWFwLl9faW5pdF9fKTogQWRkICdtYWNvcycgYXMgYW4gYWxp
YXMgZm9yICdtYWMnLgorICAgICAgICAoVmVyc2lvbk5hbWVNYXAubWF4X3B1YmxpY192ZXJzaW9u
KTogQWRkZWQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cC5weToKKyAgICAgICAgKGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJsZSk6Cisg
ICAgICAgIChjaGVja19hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUubWF4X3ZlcnNpb25f
Zm9yX3BsYXRmb3JtKToKKyAgICAgICAgKGNoZWNrX2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWls
YWJsZS5jaGVja192ZXJzaW9uX3N0cmluZyk6CisgICAgICAgIChjaGVja19zdHlsZSk6CisgICAg
ICAgIChjaGVja19taW5fdmVyc2lvbnNfb2Zfd2tfYXBpX2F2YWlsYWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHk6
CisgICAgICAgIChXZWJLaXRTdHlsZVRlc3QpOgorCiAyMDIxLTAzLTI4ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0lOREVYRURfREFUQUJB
U0UgJiBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTLCBpdCBzZWVtcyBsaWtlIGl0
IGlzIG9uIGZvciBhbGwgcG9ydHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3ZlcnNpb25fbmFtZV9tYXAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi92ZXJzaW9uX25hbWVfbWFwLnB5CmluZGV4IGVmYjA5YjJmMTYwZTA2NjJmNGNiYzMyOGZlZDdi
YWFmN2FhZjIxZDIuLmE5NmM0YTQ3NTdkM2Q4NDkyZjE0NDMwZDMwMjNkYjY5ZGVjNjZhMTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXAu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5w
eQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4
MSw5IEBAIGNsYXNzIFZlcnNpb25OYW1lTWFwKG9iamVjdCk6CiAgICAgICAgICAgICAnbGludXgn
OiB7fSwKICAgICAgICAgfQogCisgICAgICAgICMgQWxpYXMgbWFjb3MgdG8gbWFjIHNvIHRoYXQg
ZWl0aGVyIG5hbWUgd29ya3MuCisgICAgICAgIHNlbGYubWFwcGluZ1tQVUJMSUNfVEFCTEVdWydt
YWNvcyddID0gc2VsZi5tYXBwaW5nW1BVQkxJQ19UQUJMRV1bJ21hYyddCisKICAgICAgICAgIyB3
aW5jYWlybyB1c2VzIHRoZSBzYW1lIHZlcnNpb25zIGFzIFdpbmRvd3MKICAgICAgICAgc2VsZi5t
YXBwaW5nW1BVQkxJQ19UQUJMRV1bJ3dpbmNhaXJvJ10gPSBzZWxmLm1hcHBpbmdbUFVCTElDX1RB
QkxFXVsnd2luJ10KIApAQCAtMTA3LDYgKzExMCwxNCBAQCBjbGFzcyBWZXJzaW9uTmFtZU1hcChv
YmplY3QpOgogICAgICAgICAgICAgICAgIGNsb3Nlc3RfbWF0Y2ggPSAob3NfbmFtZSwgb3NfdmVy
c2lvbikKICAgICAgICAgcmV0dXJuIGNsb3Nlc3RfbWF0Y2hbMF0KIAorICAgIGRlZiBtYXhfcHVi
bGljX3ZlcnNpb24oc2VsZiwgcGxhdGZvcm09Tm9uZSk6CisgICAgICAgIGZvdW5kX21heF92ZXJz
aW9uID0gTm9uZQorICAgICAgICBmb3Igb3NfbmFtZSwgb3NfdmVyc2lvbiBpbiBzZWxmLm1hcHBp
bmdfZm9yX3BsYXRmb3JtKHBsYXRmb3JtLCBQVUJMSUNfVEFCTEUpLml0ZW1zKCk6CisgICAgICAg
ICAgICBpZiBvc192ZXJzaW9uID4gZm91bmRfbWF4X3ZlcnNpb246CisgICAgICAgICAgICAgICAg
Zm91bmRfbWF4X3ZlcnNpb24gPSBvc192ZXJzaW9uCisKKyAgICAgICAgcmV0dXJuIGZvdW5kX21h
eF92ZXJzaW9uCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN0cmlwX25hbWVfZm9ybWF0
dGluZyhuYW1lKToKICAgICAgICAgIyA8T1M+IG1ham9yLm1pbm9yLnRpbnkgc2hvdWxkIG1hcCB0
byA8T1M+IG1ham9yCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
LnB5CmluZGV4IDVjOWUxMTU1ODlkZWJiZDQwZjllNDk4NGZiZjQwZWIxY2U5YTY1YjMuLjU3YTY0
MWIxMzRmNTdhMTBhODA5ZGRkZDBjMzQ4MGI2MDM2NDAxM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0yLDcgKzIsNyBAQAogIwogIyBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHlyaWdodCAo
QykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTQ1LDEwICs0NSwxMSBAQCBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKIGlt
cG9ydCB1bmljb2RlZGF0YQogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUsIFZlcnNpb24KIAogZnJvbSB3ZWJraXRweS5z
dHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IG1hdGNoLCBzZWFyY2gsIHN1Yiwgc3VibgogZnJv
bSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcAogCiAjIFRoZSBr
ZXkgdG8gdXNlIHRvIHByb3ZpZGUgYSBjbGFzcyB0byBmYWtlIGxvYWRpbmcgYSBoZWFkZXIgZmls
ZS4KIElOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWSA9ICdpbmNsdWRlX2hlYWRlcl9pbycKQEAgLTMy
OTYsOCArMzI5Nyw4IEBAIGRlZiBnZXRfbGluZV93aWR0aChsaW5lKToKICAgICByZXR1cm4gbGVu
KGxpbmUpCiAKIAotZGVmIGNoZWNrX21pbl92ZXJzaW9uc19vZl93a19hcGlfYXZhaWxhYmxlKGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkNoZWNrcyB0aGUgbWluIHZl
cnNpb24gbnVtYmVycyBvZiBXS19BUElfQVZBSUxBQkxFCitkZWYgY2hlY2tfYXJndW1lbnRzX2Zv
cl93a19hcGlfYXZhaWxhYmxlKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAg
ICIiIkNoZWNrcyB0aGUgYWxsb3dhYmxlIGFyZ3VtZW50cyBvZiBXS19BUElfQVZBSUxBQkxFCiAK
ICAgICBBcmdzOgogICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBj
b250YWluaW5nIHRoZSBmaWxlLgpAQCAtMzMwNSwzNCArMzMwNiw2OCBAQCBkZWYgY2hlY2tfbWlu
X3ZlcnNpb25zX29mX3drX2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcik6CiAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgogICAgICIiIgogCisgICAgQG1lbW9pemVkCisgICAgZGVmIG1heF92ZXJzaW9uX2Zv
cl9wbGF0Zm9ybShwbGF0Zm9ybV9uYW1lKToKKyAgICAgICAgcmV0dXJuIFZlcnNpb25OYW1lTWFw
Lm1hcCgpLm1heF9wdWJsaWNfdmVyc2lvbihwbGF0Zm9ybT1wbGF0Zm9ybV9uYW1lKQorCisgICAg
ZGVmIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHZlcnNpb25fc3RyaW5nLCBwbGF0Zm9ybV9uYW1lKToK
KyAgICAgICAgaWYgcGxhdGZvcm1fbmFtZSA9PSAibWFjb3MiOgorICAgICAgICAgICAgaWYgdmVy
c2lvbl9zdHJpbmcgPT0gIldLX01BQ19UQkEiOgorICAgICAgICAgICAgICAgIHJldHVybgorCisg
ICAgICAgICAgICBtYWNfdmVyc2lvbiA9IE5vbmUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBtYWNfdmVyc2lvbiA9IFZlcnNpb24uZnJvbV9zdHJpbmcodmVyc2lvbl9zdHJpbmcp
CisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBlcnJvcihs
aW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnbWFjb3MoJXMpIGlzIGlu
dmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBtYWpvci5taW5vciB2ZXJzaW9uJyAlIHZl
cnNpb25fc3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBt
YWNfdmVyc2lvbi5tYWpvciAhPSAxMCBhbmQgdmVyc2lvbl9zdHJpbmcuY291bnQoJy4nKSAhPSAx
OgorICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWls
YWJsZScsIDUsICdtYWNvcyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGhh
dmUgb25lIGRlY2ltYWwnICUgdmVyc2lvbl9zdHJpbmcpCisgICAgICAgICAgICBlbGlmIG1hY192
ZXJzaW9uID4gbWF4X3ZlcnNpb25fZm9yX3BsYXRmb3JtKCdtYWNvcycpOgorICAgICAgICAgICAg
ICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNv
cyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hvdWxkIG5vdCBleGNlZWQgJWQnICUg
KHZlcnNpb25fc3RyaW5nLCBtYXhfdmVyc2lvbl9mb3JfcGxhdGZvcm0oJ21hY29zJykpKQorCisg
ICAgICAgIGVsaWYgcGxhdGZvcm1fbmFtZSA9PSAiaW9zIjoKKyAgICAgICAgICAgIGlmIHZlcnNp
b25fc3RyaW5nID09ICJXS19JT1NfVEJBIjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICAgICAgaW9zX3ZlcnNpb24gPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgaW9zX3ZlcnNpb24gPSBWZXJzaW9uLmZyb21fc3RyaW5nKHZlcnNpb25fc3RyaW5nKQor
ICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZXJyb3IobGlu
ZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ2lvcyglcykgaXMgaW52YWxp
ZDsgZXhwZWN0ZWQgV0tfSU9TX1RCQSBvciBhIG1ham9yLm1pbm9yIHZlcnNpb24nICUgdmVyc2lv
bl9zdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGlmIHZlcnNp
b25fc3RyaW5nLmNvdW50KCcuJykgIT0gMToKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnaW9zKCVzKSBpcyBpbnZhbGlkOyB2
ZXJzaW9uIG51bWJlciBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIG1ham9yLm1pbm9yJyAlIHZlcnNp
b25fc3RyaW5nKQorICAgICAgICAgICAgZWxpZiBpb3NfdmVyc2lvbiA+IG1heF92ZXJzaW9uX2Zv
cl9wbGF0Zm9ybSgnaW9zJyk6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdi
dWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ2lvcyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBu
dW1iZXIgc2hvdWxkIG5vdCBleGNlZWQgJWQnICUgKHZlcnNpb25fc3RyaW5nLCBtYXhfdmVyc2lv
bl9mb3JfcGxhdGZvcm0oJ2lvcycpKSkKKwogICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRb
bGluZV9udW1iZXJdICAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCiAKICAgICB3
a19hcGlfYXZhaWxhYmxlID0gc2VhcmNoKHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3N4XCgnLCBs
aW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6CiAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVy
LCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNvc3goKSBpcyBkZXByZWNhdGVkOyB1
c2UgbWFjb3MoKSBpbnN0ZWFkJykKKyAgICAgICAgcmV0dXJuCiAKLSAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCBzdXBwb3J0IGFueSBvcmRlci4KICAgICB3a19hcGlfYXZhaWxhYmxlID0gc2VhcmNo
KHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3NcKChbXlwpXSspXCksIGlvc1woKFteXCldKylcKVwp
JywgbGluZSkKICAgICBpZiB3a19hcGlfYXZhaWxhYmxlOgotICAgICAgICBtYWNvc01pblZlcnNp
b24gPSB3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpCi0gICAgICAgIGlmIG5vdCBtYXRjaChyJ14o
W1xkXC5dK3xXS19NQUNfVEJBKSQnLCBtYWNvc01pblZlcnNpb24pOgotICAgICAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ21hY29zKCVzKSBp
cyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJBIG9yIGEgbnVtYmVyJyAlIG1hY29zTWluVmVy
c2lvbikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWlsYWJsZS5ncm91
cCgxKSwgIm1hY29zIikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWls
YWJsZS5ncm91cCgyKSwgImlvcyIpCiAKLSAgICAgICAgaW9zTWluVmVyc2lvbiA9IHdrX2FwaV9h
dmFpbGFibGUuZ3JvdXAoMikKLSAgICAgICAgaWYgbm90IG1hdGNoKHInXihbXGRcLl0rfFdLX0lP
U19UQkEpJCcsIGlvc01pblZlcnNpb24pOgotICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ2lvcyglcykgaXMgaW52YWxpZDsgZXhwZWN0
ZWQgV0tfSU9TX1RCQSBvciBhIG51bWJlcicgJSBpb3NNaW5WZXJzaW9uKQorICAgIHdrX2FwaV9h
dmFpbGFibGUgPSBzZWFyY2gocidXS19BUElfQVZBSUxBQkxFXChpb3NcKChbXlwpXSspXCksIG1h
Y29zXCgoW15cKV0rKVwpXCknLCBsaW5lKQorICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6CisgICAg
ICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSksICJpb3Mi
KQorICAgICAgICBjaGVja192ZXJzaW9uX3N0cmluZyh3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDIp
LCAibWFjb3MiKQogCiAgICAgd2tfYXBpX2F2YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQSV9BVkFJ
TEFCTEVcKG1hY29zXCgoW15cKV0rKVwpXCknLCBsaW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFi
bGU6Ci0gICAgICAgIG1hY29zTWluVmVyc2lvbiA9IHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSkK
LSAgICAgICAgaWYgbm90IG1hdGNoKHInXihbXGRcLl0rfFdLX01BQ19UQkEpJCcsIG1hY29zTWlu
VmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9h
dmFpbGFibGUnLCA1LCAnbWFjb3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEg
b3IgYSBudW1iZXInICUgbWFjb3NNaW5WZXJzaW9uKQorICAgICAgICBjaGVja192ZXJzaW9uX3N0
cmluZyh3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpLCAibWFjb3MiKQogCiAgICAgd2tfYXBpX2F2
YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQSV9BVkFJTEFCTEVcKGlvc1woKFteXCldKylcKVwpJywg
bGluZSkKICAgICBpZiB3a19hcGlfYXZhaWxhYmxlOgotICAgICAgICBpb3NNaW5WZXJzaW9uID0g
d2tfYXBpX2F2YWlsYWJsZS5ncm91cCgxKQotICAgICAgICBpZiBub3QgbWF0Y2gocideKFtcZFwu
XSt8V0tfSU9TX1RCQSkkJywgaW9zTWluVmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnaW9zKCVzKSBpcyBpbnZhbGlk
OyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyJyAlIGlvc01pblZlcnNpb24pCisgICAg
ICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSksICJpb3Mi
KQorCiAKIGRlZiBjaGVja19zdHlsZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0
ZW5zaW9uLCBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0ZSwgZW51bV9zdGF0ZSwgZXJyb3IpOgogICAg
ICIiIkNoZWNrcyBydWxlcyBmcm9tIHRoZSAnQysrIHN0eWxlIHJ1bGVzJyBzZWN0aW9uIG9mIGNw
cGd1aWRlLmh0bWwuCkBAIC0zNDE1LDcgKzM0NTAsNyBAQCBkZWYgY2hlY2tfc3R5bGUoY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgY2xhc3Nfc3RhdGUsIGZpbGVfc3Rh
dAogICAgIGNoZWNrX2luZGVudGF0aW9uX2Ftb3VudChjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGVycm9yKQogICAgIGNoZWNrX2VudW1fY2FzaW5nKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZW51bV9zdGF0ZSwgZXJyb3IpCiAgICAgY2hlY2tfb25jZV9mbGFnKGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCi0gICAgY2hlY2tfbWluX3ZlcnNpb25zX29mX3dr
X2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKKyAgICBjaGVj
a19hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVy
LCBlcnJvcikKIAogCiBfUkVfUEFUVEVSTl9JTkNMVURFX05FV19TVFlMRSA9IHJlLmNvbXBpbGUo
cicjKD86aW5jbHVkZXxpbXBvcnQpICsiW14vXStcLmgiJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggZmM0YjVj
Y2YzNDhmNTU2NDkyN2NhZTMwODg2YmJlNDdiOGYyODhlNC4uZWM1ZjZhNDljYTE1YWYxNDFiOTcw
Nzk4Y2RkZTE1Y2IzODdjZWNhNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKQEAgLTQ4LDYgKzQ4LDEyIEBAIGZyb20g
d2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IGNwcCBhcyBjcHBfc3R5bGUKIGZyb20gd2Vi
a2l0cHkuc3R5bGUuY2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyLCBfc3BsaXRfaWRlbnRp
Zmllcl9pbnRvX3dvcmRzCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmZpbHRlciBpbXBvcnQgRmlsdGVy
Q29uZmlndXJhdGlvbgogCisjIEVuYWJsZSB0aGlzIGlmIHlvdSBuZWVkIHRvIHNlZSB0aGUgZnVs
bCBkaWZmIHdoZW4gZGVidWdnaW5nIGZhaWx1cmVzLgorIyBodHRwczovL3N0YWNrb3ZlcmZsb3cu
Y29tL3F1ZXN0aW9ucy80Mzg0MjY3NS9ob3ctdG8tcHJldmVudC10cnVuY2F0aW5nLW9mLXN0cmlu
Zy1pbi11bml0LXRlc3QtcHl0aG9uCitpZiBGYWxzZToKKyAgICBpZiAndW5pdHRlc3QudXRpbCcg
aW4gX19pbXBvcnRfXygnc3lzJykubW9kdWxlczoKKyAgICAgICAgIyBTaG93IGZ1bGwgZGlmZiBp
biBzZWxmLmFzc2VydEVxdWFsLgorICAgICAgICBfX2ltcG9ydF9fKCdzeXMnKS5tb2R1bGVzWyd1
bml0dGVzdC51dGlsJ10uX01BWF9MRU5HVEggPSA5OTk5OTk5OTkKIAogIyBUaGlzIGNsYXNzIHdv
cmtzIGFzIGFuIGVycm9yIGNvbGxlY3RvciBhbmQgcmVwbGFjZXMgY3BwX3N0eWxlLkVycm9yCiAj
IGZ1bmN0aW9uIGZvciB0aGUgdW5pdCB0ZXN0cy4gIFdlIGFsc28gdmVyaWZ5IGVhY2ggY2F0ZWdv
cnkgd2Ugc2VlCkBAIC02Mzg1LDIwICs2MzkxLDI2IEBAIGNsYXNzIFdlYktpdFN0eWxlVGVzdChD
cHBTdHlsZVRlc3RCYXNlKToKIAogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdNWU1BQ1JPKGEg
PyBiKCkgOiBjKTsnLCAnJykKIAotICAgIGRlZiB0ZXN0X21pbl92ZXJzaW9uc19vZl93a19hcGlf
YXZhaWxhYmxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxB
QkxFKG1hY29zeCgxLjIuMykpJywgJ21hY29zeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBtYWNvcygp
IGluc3RlYWQgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQorICAgIGRlZiB0ZXN0X2Fy
Z3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMi4zKSknLCAnbWFjb3N4KCkgaXMgZGVw
cmVjYXRlZDsgdXNlIG1hY29zKCkgaW5zdGVhZCAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1
XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpKScsICdtYWNvc3goKSBpcyBkZXByZWNhdGVkOyB1c2UgbWFjb3MoKSBpbnN0ZWFk
ICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxLjIuMyksIGlvcygzLjQuNSkpJywgJycpICAjIHZl
cnNpb24gbnVtYmVycyBhcmUgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSknLCAnJykgICMgV0tf
TUFDX1RCQSBhbmQgV0tfSU9TX1RCQSBhcmUgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfSU9TX1RCQSksIGlvcygzLjQuNSkpJywgJ21hY29z
KFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBudW1iZXIg
IFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDEuMi4zKSwgaW9zKFdLX01BQ19UQkEpKScsICdpb3Mo
V0tfTUFDX1RCQSkgaXMgaW52YWxpZDsgZXhwZWN0ZWQgV0tfSU9TX1RCQSBvciBhIG51bWJlciAg
W2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMS4yLjMpKScsICcnKSAgIyB2ZXJzaW9uIG51bWJlcnMg
YXJlIE9LLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpKScsICcnKSAgIyBXS19NQUNfVEJBIGlzIE9LLgotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcygzLjQuNSkpJywgJycpICAjIHZlcnNpb24g
bnVtYmVycyBhcmUgT0suCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMS4wKSknLCAnJykgICMgdmVyc2lvbiBudW1iZXJzIGFyZSBPSy4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoMTEuMCkpJywgJycpICAj
IHZlcnNpb24gbnVtYmVycyBhcmUgT0suCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMi4zKSknLCAnJykgICMgRXh0ZW5kZWQgdmVyc2lvbiBudW1i
ZXJzIGFyZSBPSyBmb3IgbWFjT1Mgb25seS4KKworICAgICAgICBzZWxmLmFzc2VydF9saW50KCdX
S19BUElfQVZBSUxBQkxFKG1hY29zKDExKSknLCAnbWFjb3MoMTEpIGlzIGludmFsaWQ7IHZlcnNp
b24gbnVtYmVyIHNob3VsZCBoYXZlIG9uZSBkZWNpbWFsICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJs
ZV0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMS4pKScsICdtYWNvcygxMS4pIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3Ig
YSBtYWpvci5taW5vciB2ZXJzaW9uICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4xLjEpKScs
ICdtYWNvcygxMS4xLjEpIGlzIGludmFsaWQ7IHZlcnNpb24gbnVtYmVyIHNob3VsZCBoYXZlIG9u
ZSBkZWNpbWFsICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoMTAuKSknLCAnaW9zKDEwLikgaXMgaW52
YWxpZDsgZXhwZWN0ZWQgV0tfSU9TX1RCQSBvciBhIG1ham9yLm1pbm9yIHZlcnNpb24gIFtidWls
ZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19B
UElfQVZBSUxBQkxFKGlvcygxMC4xLjEpKScsICdpb3MoMTAuMS4xKSBpcyBpbnZhbGlkOyB2ZXJz
aW9uIG51bWJlciBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIG1ham9yLm1pbm9yICBbYnVpbGQvd2tf
YXBpX2F2YWlsYWJsZV0gWzVdJykKKwogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElf
QVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSknLCAnJykgICMgV0tfSU9TX1RCQSBpcyBPSy4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19JT1NfVEJB
KSknLCAnbWFjb3MoV0tfSU9TX1RCQSkgaXMgaW52YWxpZDsgZXhwZWN0ZWQgV0tfTUFDX1RCQSBv
ciBhIG51bWJlciAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfSU9TX1RCQSkpJywgJ21hY29z
KFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBudW1iZXIg
IFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdXS19BUElfQVZBSUxBQkxFKGlvcyhXS19NQUNfVEJBKSknLCAnaW9zKFdLX01BQ19UQkEpIGlz
IGludmFsaWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlf
YXZhaWxhYmxlXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpKScsICcnKSAgIyBXS19NQUNfVEJBIGlzIE9LLgorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9L
LgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1Nf
VEJBKSwgbWFjb3MoV0tfTUFDX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19U
QkEgYXJlIE9LLCBiYWNrd2FyZHMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfSU9TX1RCQSkpJywgJ21hY29zKFdLX0lPU19UQkEpIGlzIGludmFs
aWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBtYWpvci5taW5vciB2ZXJzaW9uICBbYnVpbGQv
d2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfTUFDX1RCQSkpJywgJ2lvcyhXS19NQUNfVEJBKSBpcyBpbnZhbGlk
OyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbWFqb3IubWlub3IgdmVyc2lvbiAgW2J1aWxkL3dr
X2FwaV9hdmFpbGFibGVdIFs1XScpCiAKICAgICBkZWYgdGVzdF9vc192ZXJzaW9uX2NoZWNrcyhz
ZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwJywgJ01pc3BsYWNl
ZCBPUyB2ZXJzaW9uIGNoZWNrLiBQbGVhc2UgdXNlIGEgbmFtZWQgbWFjcm8gaW4gb25lIG9mIGhl
YWRlcnMgaW4gdGhlIHd0Zi9QbGF0Zm9ybS5oIHN1aXRlIG9mIGZpbGVzIG9yIGFuIGFwcHJvcHJp
YXRlIGludGVybmFsIGZpbGUuICBbYnVpbGQvdmVyc2lvbl9jaGVja10gWzVdJykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424829</attachid>
            <date>2021-03-31 15:28:23 -0700</date>
            <delta_ts>2021-03-31 16:05:08 -0700</delta_ts>
            <desc>Patch v3.0</desc>
            <filename>bug-223881-20210331152822.patch</filename>
            <type>text/plain</type>
            <size>14178</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MzA1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmU2MDFjMTA2ZDE4YjRmN2IzZGRhZjY3MmU0NWU3NTBl
ZWJkYTllYS4uZWFmNmM0ZGI3MGIwZTEzMTI2M2M0ZTcwYzQ4ZGU3M2MzZmE3ODZlNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDIxLTAzLTMxICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFN0
eWxlIGNoZWNrZXIgc2hvdWxkIHdhcm4gYWJvdXQgdXNlIG9mIGZ1dHVyZSBPUyB2ZXJzaW9ucyBp
biBXS19BUElfQVZBSUxBQkxFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc29tZSBtb3JlIGJyYWlucyB0byB0aGUgV0tfQVBJX0FWQUlMQUJMRSBz
dHlsZSBjaGVja2VyLiBJdCBpcyBub3cgbW9yZQorICAgICAgICBmdXNzeSBhbmQgd29uJ3QgYWxs
b3cgYW55dGhpbmcgZXhjZXB0IGEgdmFsaWQgdmVyc2lvbiBzdHJpbmcgb3IgYSBUQkEgbWFjcm8u
CisgICAgICAgIFRoZXJlIGlzIGFsc28gYSBtZWNoYW5pc20gdG8gcHJldmVudCBhZGRpbmcgdmVy
c2lvbiBudW1iZXJzIHRoYXQgZXhjZWVkIHRoZQorICAgICAgICBwdWJsaWNseSBhdmFpbGFibGUg
U0RLIHZlcnNpb24gZm9yIHRoZSByZWxldmFudCBPUy4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXAucHk6CisgICAgICAgIChWZXJzaW9uTmFtZU1h
cC5tYXBwaW5nX2Zvcl9wbGF0Zm9ybSk6IEFkZCAnbWFjb3MnIGFzIGFuIGFsaWFzIGZvciAnbWFj
Jy4KKyAgICAgICAgKFZlcnNpb25OYW1lTWFwLm1heF9wdWJsaWNfdmVyc2lvbik6IEFkZGVkLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHk6CisgICAg
ICAgIChjaGVja19hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUpOgorICAgICAgICAoY2hl
Y2tfYXJndW1lbnRzX2Zvcl93a19hcGlfYXZhaWxhYmxlLm1heF92ZXJzaW9uX2Zvcl9wbGF0Zm9y
bSk6CisgICAgICAgIChjaGVja19hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUuY2hlY2tf
dmVyc2lvbl9zdHJpbmcpOgorICAgICAgICAoY2hlY2tfc3R5bGUpOgorICAgICAgICAoY2hlY2tf
bWluX3ZlcnNpb25zX29mX3drX2FwaV9hdmFpbGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
V2ViS2l0U3R5bGVUZXN0KToKKwogMjAyMS0wMy0zMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzUxNTApOiBzZXQtd2Via2l0LWNv
bmZpZ3VyYXRpb24gaXMgdG9vIGFnZ3Jlc3NpdmUgYXQgZGVsZXRpbmcgY29uZmlnIGZpbGVzIHdo
ZW4gc3dpdGNoIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3ZlcnNpb25fbmFtZV9tYXAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi92ZXJzaW9uX25hbWVfbWFwLnB5CmluZGV4IGVmYjA5YjJmMTYwZTA2NjJmNGNiYzMyOGZlZDdi
YWFmN2FhZjIxZDIuLjEwN2IwZTU0OTc3MDMxMzRjZDFlNzc5MmI2OGE1ZTFhMGMyNzc5ZDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXAu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5w
eQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDcsNiAr
MTA3LDE0IEBAIGNsYXNzIFZlcnNpb25OYW1lTWFwKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
Y2xvc2VzdF9tYXRjaCA9IChvc19uYW1lLCBvc192ZXJzaW9uKQogICAgICAgICByZXR1cm4gY2xv
c2VzdF9tYXRjaFswXQogCisgICAgZGVmIG1heF9wdWJsaWNfdmVyc2lvbihzZWxmLCBwbGF0Zm9y
bT1Ob25lKToKKyAgICAgICAgZm91bmRfbWF4X3ZlcnNpb24gPSBOb25lCisgICAgICAgIGZvciBv
c19uYW1lLCBvc192ZXJzaW9uIGluIHNlbGYubWFwcGluZ19mb3JfcGxhdGZvcm0ocGxhdGZvcm0s
IFBVQkxJQ19UQUJMRSkuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIG9zX3ZlcnNpb24gPiBmb3Vu
ZF9tYXhfdmVyc2lvbjoKKyAgICAgICAgICAgICAgICBmb3VuZF9tYXhfdmVyc2lvbiA9IG9zX3Zl
cnNpb24KKworICAgICAgICByZXR1cm4gZm91bmRfbWF4X3ZlcnNpb24KKwogICAgIEBzdGF0aWNt
ZXRob2QKICAgICBkZWYgc3RyaXBfbmFtZV9mb3JtYXR0aW5nKG5hbWUpOgogICAgICAgICAjIDxP
Uz4gbWFqb3IubWlub3IudGlueSBzaG91bGQgbWFwIHRvIDxPUz4gbWFqb3IKQEAgLTE0OSw2ICsx
NTcsMTEgQEAgY2xhc3MgVmVyc2lvbk5hbWVNYXAob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNv
cnRlZChuYW1lcywga2V5PWxhbWJkYSBvc19uYW1lOiBtYXBwaW5nW29zX25hbWVdKQogCiAgICAg
ZGVmIG1hcHBpbmdfZm9yX3BsYXRmb3JtKHNlbGYsIHBsYXRmb3JtPU5vbmUsIHRhYmxlPVBVQkxJ
Q19UQUJMRSk6CisgICAgICAgICMgQWxpYXMgbWFjb3MgdG8gbWFjIGhlcmUuIEFkZGluZyBhIHNl
cGFyYXRlIGVudHJ5IHRvIHRoZSB0YWJsZQorICAgICAgICAjIHdvdWxkIGNhdXNlIGZyb21fbmFt
ZSgpIHRvIHJldHVybiBlaXRoZXIgJ21hYycgb3IgJ21hY29zJy4KKyAgICAgICAgaWYgcGxhdGZv
cm0gPT0gJ21hY29zJzoKKyAgICAgICAgICAgIHBsYXRmb3JtID0gJ21hYycKKwogICAgICAgICAi
IiJyZXR1cm4gcHJvcGVyIG9zX25hbWU6IG9zX3ZlcnNpb24gbWFwcGluZyBmb3IgcGxhdGZvcm0i
IiIKICAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmRlZmF1bHRfc3lzdGVtX3BsYXRmb3JtIGlmIHBs
YXRmb3JtIGlzIE5vbmUgZWxzZSBwbGF0Zm9ybQogICAgICAgICByZXR1cm4gc2VsZi5tYXBwaW5n
LmdldCh0YWJsZSwge30pLmdldChwbGF0Zm9ybSwge30pCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDVjOWUxMTU1ODlkZWJiZDQwZjllNDk4NGZi
ZjQwZWIxY2U5YTY1YjMuLjJmOTAzOWRkNzdjN2YyZWVhNTg2ZWI4YmY3YWM0NTE0YTIwNmViNWIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0y
LDcgKzIsNyBAQAogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmls
ZSBJbmMuCi0jIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25l
a0B3ZWJraXQub3JnKQogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ1LDEwICs0NSwxMSBAQCBpbXBvcnQg
cmUKIGltcG9ydCBzdHJpbmcKIGltcG9ydCB1bmljb2RlZGF0YQogCi1mcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgdW5pY29kZQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUsIFZlcnNp
b24KIAogZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IG1hdGNoLCBz
ZWFyY2gsIHN1Yiwgc3VibgogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1l
bW9pemVkCitmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBWZXJz
aW9uTmFtZU1hcAogCiAjIFRoZSBrZXkgdG8gdXNlIHRvIHByb3ZpZGUgYSBjbGFzcyB0byBmYWtl
IGxvYWRpbmcgYSBoZWFkZXIgZmlsZS4KIElOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWSA9ICdpbmNs
dWRlX2hlYWRlcl9pbycKQEAgLTMyOTYsOCArMzI5Nyw4IEBAIGRlZiBnZXRfbGluZV93aWR0aChs
aW5lKToKICAgICByZXR1cm4gbGVuKGxpbmUpCiAKIAotZGVmIGNoZWNrX21pbl92ZXJzaW9uc19v
Zl93a19hcGlfYXZhaWxhYmxlKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAg
ICIiIkNoZWNrcyB0aGUgbWluIHZlcnNpb24gbnVtYmVycyBvZiBXS19BUElfQVZBSUxBQkxFCitk
ZWYgY2hlY2tfYXJndW1lbnRzX2Zvcl93a19hcGlfYXZhaWxhYmxlKGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZXJyb3IpOgorICAgICIiIkNoZWNrcyB0aGUgYWxsb3dhYmxlIGFyZ3VtZW50cyBv
ZiBXS19BUElfQVZBSUxBQkxFCiAKICAgICBBcmdzOgogICAgICAgY2xlYW5fbGluZXM6IEEgQ2xl
YW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgpAQCAtMzMwNSwzNCArMzMw
Niw2MCBAQCBkZWYgY2hlY2tfbWluX3ZlcnNpb25zX29mX3drX2FwaV9hdmFpbGFibGUoY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRv
IGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogICAgICIiIgogCisgICAgQG1lbW9pemVkCisg
ICAgZGVmIG1heF92ZXJzaW9uX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybV9uYW1lKToKKyAgICAgICAg
cmV0dXJuIFZlcnNpb25OYW1lTWFwLm1hcCgpLm1heF9wdWJsaWNfdmVyc2lvbihwbGF0Zm9ybT1w
bGF0Zm9ybV9uYW1lKQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHZlcnNpb25fc3Ry
aW5nLCBwbGF0Zm9ybV9uYW1lKToKKyAgICAgICAgbWFwcGluZyA9IHsKKyAgICAgICAgICAgICdt
YWNvcyc6ICdXS19NQUNfVEJBJywKKyAgICAgICAgICAgICdpb3MnOiAnV0tfSU9TX1RCQScsCisg
ICAgICAgIH0KKworICAgICAgICBwbGF0Zm9ybV90YmFfbWFjcm8gPSBtYXBwaW5nLmdldChwbGF0
Zm9ybV9uYW1lKQorICAgICAgICBpZiB2ZXJzaW9uX3N0cmluZyA9PSBwbGF0Zm9ybV90YmFfbWFj
cm86CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB0cnk6CisgICAgICAgICAgICB2ZXJz
aW9uID0gVmVyc2lvbi5mcm9tX3N0cmluZyh2ZXJzaW9uX3N0cmluZykKKyAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3drX2Fw
aV9hdmFpbGFibGUnLCA1LCAnJXMoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkICVzIG9yIGEgbWFq
b3IubWlub3IgdmVyc2lvbicgJSAocGxhdGZvcm1fbmFtZSwgdmVyc2lvbl9zdHJpbmcsIHBsYXRm
b3JtX3RiYV9tYWNybykpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBub3QgdmVy
c2lvbl9zdHJpbmcuY291bnQoJy4nKToKKyAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
YnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICclcyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBu
dW1iZXIgc2hvdWxkIGhhdmUgb25lIGRlY2ltYWwnICUgKHBsYXRmb3JtX25hbWUsIHZlcnNpb25f
c3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIG1heF92ZXJzaW9uID0gbWF4
X3ZlcnNpb25fZm9yX3BsYXRmb3JtKHBsYXRmb3JtX25hbWUpCisgICAgICAgIGlmIHZlcnNpb24g
PiBtYXhfdmVyc2lvbjoKKyAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvd2tf
YXBpX2F2YWlsYWJsZScsIDUsICclcyglcykgaXMgaW52YWxpZDsgdmVyc2lvbiBudW1iZXIgc2hv
dWxkIG5vdCBleGNlZWQgJXMnICUgKHBsYXRmb3JtX25hbWUsIHZlcnNpb25fc3RyaW5nLCBtYXhf
dmVyc2lvbikpCisgICAgICAgICAgICByZXR1cm4KKwogICAgIGxpbmUgPSBjbGVhbl9saW5lcy5l
bGlkZWRbbGluZV9udW1iZXJdICAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCiAK
ICAgICB3a19hcGlfYXZhaWxhYmxlID0gc2VhcmNoKHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3N4
XCgnLCBsaW5lKQogICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6CiAgICAgICAgIGVycm9yKGxpbmVf
bnVtYmVyLCAnYnVpbGQvd2tfYXBpX2F2YWlsYWJsZScsIDUsICdtYWNvc3goKSBpcyBkZXByZWNh
dGVkOyB1c2UgbWFjb3MoKSBpbnN0ZWFkJykKKyAgICAgICAgcmV0dXJuCiAKLSAgICAjIEZJWE1F
OiBUaGlzIHNob3VsZCBzdXBwb3J0IGFueSBvcmRlci4KICAgICB3a19hcGlfYXZhaWxhYmxlID0g
c2VhcmNoKHInV0tfQVBJX0FWQUlMQUJMRVwobWFjb3NcKChbXlwpXSspXCksIGlvc1woKFteXCld
KylcKVwpJywgbGluZSkKICAgICBpZiB3a19hcGlfYXZhaWxhYmxlOgotICAgICAgICBtYWNvc01p
blZlcnNpb24gPSB3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpCi0gICAgICAgIGlmIG5vdCBtYXRj
aChyJ14oW1xkXC5dK3xXS19NQUNfVEJBKSQnLCBtYWNvc01pblZlcnNpb24pOgotICAgICAgICAg
ICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ21hY29z
KCVzKSBpcyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJBIG9yIGEgbnVtYmVyJyAlIG1hY29z
TWluVmVyc2lvbikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBpX2F2YWlsYWJs
ZS5ncm91cCgxKSwgIm1hY29zIikKKyAgICAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcod2tfYXBp
X2F2YWlsYWJsZS5ncm91cCgyKSwgImlvcyIpCiAKLSAgICAgICAgaW9zTWluVmVyc2lvbiA9IHdr
X2FwaV9hdmFpbGFibGUuZ3JvdXAoMikKLSAgICAgICAgaWYgbm90IG1hdGNoKHInXihbXGRcLl0r
fFdLX0lPU19UQkEpJCcsIGlvc01pblZlcnNpb24pOgotICAgICAgICAgICAgZXJyb3IobGluZV9u
dW1iZXIsICdidWlsZC93a19hcGlfYXZhaWxhYmxlJywgNSwgJ2lvcyglcykgaXMgaW52YWxpZDsg
ZXhwZWN0ZWQgV0tfSU9TX1RCQSBvciBhIG51bWJlcicgJSBpb3NNaW5WZXJzaW9uKQorICAgIHdr
X2FwaV9hdmFpbGFibGUgPSBzZWFyY2gocidXS19BUElfQVZBSUxBQkxFXChpb3NcKChbXlwpXSsp
XCksIG1hY29zXCgoW15cKV0rKVwpXCknLCBsaW5lKQorICAgIGlmIHdrX2FwaV9hdmFpbGFibGU6
CisgICAgICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSks
ICJpb3MiKQorICAgICAgICBjaGVja192ZXJzaW9uX3N0cmluZyh3a19hcGlfYXZhaWxhYmxlLmdy
b3VwKDIpLCAibWFjb3MiKQogCiAgICAgd2tfYXBpX2F2YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQ
SV9BVkFJTEFCTEVcKG1hY29zXCgoW15cKV0rKVwpXCknLCBsaW5lKQogICAgIGlmIHdrX2FwaV9h
dmFpbGFibGU6Ci0gICAgICAgIG1hY29zTWluVmVyc2lvbiA9IHdrX2FwaV9hdmFpbGFibGUuZ3Jv
dXAoMSkKLSAgICAgICAgaWYgbm90IG1hdGNoKHInXihbXGRcLl0rfFdLX01BQ19UQkEpJCcsIG1h
Y29zTWluVmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3dr
X2FwaV9hdmFpbGFibGUnLCA1LCAnbWFjb3MoJXMpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01B
Q19UQkEgb3IgYSBudW1iZXInICUgbWFjb3NNaW5WZXJzaW9uKQorICAgICAgICBjaGVja192ZXJz
aW9uX3N0cmluZyh3a19hcGlfYXZhaWxhYmxlLmdyb3VwKDEpLCAibWFjb3MiKQogCiAgICAgd2tf
YXBpX2F2YWlsYWJsZSA9IHNlYXJjaChyJ1dLX0FQSV9BVkFJTEFCTEVcKGlvc1woKFteXCldKylc
KVwpJywgbGluZSkKICAgICBpZiB3a19hcGlfYXZhaWxhYmxlOgotICAgICAgICBpb3NNaW5WZXJz
aW9uID0gd2tfYXBpX2F2YWlsYWJsZS5ncm91cCgxKQotICAgICAgICBpZiBub3QgbWF0Y2gocide
KFtcZFwuXSt8V0tfSU9TX1RCQSkkJywgaW9zTWluVmVyc2lvbik6Ci0gICAgICAgICAgICBlcnJv
cihsaW5lX251bWJlciwgJ2J1aWxkL3drX2FwaV9hdmFpbGFibGUnLCA1LCAnaW9zKCVzKSBpcyBp
bnZhbGlkOyBleHBlY3RlZCBXS19JT1NfVEJBIG9yIGEgbnVtYmVyJyAlIGlvc01pblZlcnNpb24p
CisgICAgICAgIGNoZWNrX3ZlcnNpb25fc3RyaW5nKHdrX2FwaV9hdmFpbGFibGUuZ3JvdXAoMSks
ICJpb3MiKQorCiAKIGRlZiBjaGVja19zdHlsZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZp
bGVfZXh0ZW5zaW9uLCBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0ZSwgZW51bV9zdGF0ZSwgZXJyb3Ip
OgogICAgICIiIkNoZWNrcyBydWxlcyBmcm9tIHRoZSAnQysrIHN0eWxlIHJ1bGVzJyBzZWN0aW9u
IG9mIGNwcGd1aWRlLmh0bWwuCkBAIC0zNDE1LDcgKzM0NDIsNyBAQCBkZWYgY2hlY2tfc3R5bGUo
Y2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgY2xhc3Nfc3RhdGUsIGZp
bGVfc3RhdAogICAgIGNoZWNrX2luZGVudGF0aW9uX2Ftb3VudChjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGVycm9yKQogICAgIGNoZWNrX2VudW1fY2FzaW5nKGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZW51bV9zdGF0ZSwgZXJyb3IpCiAgICAgY2hlY2tfb25jZV9mbGFnKGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCi0gICAgY2hlY2tfbWluX3ZlcnNpb25z
X29mX3drX2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKKyAg
ICBjaGVja19hcmd1bWVudHNfZm9yX3drX2FwaV9hdmFpbGFibGUoY2xlYW5fbGluZXMsIGxpbmVf
bnVtYmVyLCBlcnJvcikKIAogCiBfUkVfUEFUVEVSTl9JTkNMVURFX05FV19TVFlMRSA9IHJlLmNv
bXBpbGUocicjKD86aW5jbHVkZXxpbXBvcnQpICsiW14vXStcLmgiJykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXgg
ZmM0YjVjY2YzNDhmNTU2NDkyN2NhZTMwODg2YmJlNDdiOGYyODhlNC4uMjQzOGY4ZDVkMjQwZTNk
ODJjYzBiYjkxMTdkYjkwZjUyMTcwMzFmOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKQEAgLTQ4LDYgKzQ4LDEyIEBA
IGZyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IGNwcCBhcyBjcHBfc3R5bGUKIGZy
b20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyLCBfc3BsaXRf
aWRlbnRpZmllcl9pbnRvX3dvcmRzCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmZpbHRlciBpbXBvcnQg
RmlsdGVyQ29uZmlndXJhdGlvbgogCisjIEVuYWJsZSB0aGlzIGlmIHlvdSBuZWVkIHRvIHNlZSB0
aGUgZnVsbCBkaWZmIHdoZW4gZGVidWdnaW5nIGZhaWx1cmVzLgorIyBodHRwczovL3N0YWNrb3Zl
cmZsb3cuY29tL3F1ZXN0aW9ucy80Mzg0MjY3NS9ob3ctdG8tcHJldmVudC10cnVuY2F0aW5nLW9m
LXN0cmluZy1pbi11bml0LXRlc3QtcHl0aG9uCitpZiBGYWxzZToKKyAgICBpZiAndW5pdHRlc3Qu
dXRpbCcgaW4gX19pbXBvcnRfXygnc3lzJykubW9kdWxlczoKKyAgICAgICAgIyBTaG93IGZ1bGwg
ZGlmZiBpbiBzZWxmLmFzc2VydEVxdWFsLgorICAgICAgICBfX2ltcG9ydF9fKCdzeXMnKS5tb2R1
bGVzWyd1bml0dGVzdC51dGlsJ10uX01BWF9MRU5HVEggPSA5OTk5OTk5OTkKIAogIyBUaGlzIGNs
YXNzIHdvcmtzIGFzIGFuIGVycm9yIGNvbGxlY3RvciBhbmQgcmVwbGFjZXMgY3BwX3N0eWxlLkVy
cm9yCiAjIGZ1bmN0aW9uIGZvciB0aGUgdW5pdCB0ZXN0cy4gIFdlIGFsc28gdmVyaWZ5IGVhY2gg
Y2F0ZWdvcnkgd2Ugc2VlCkBAIC02Mzg1LDIwICs2MzkxLDI1IEBAIGNsYXNzIFdlYktpdFN0eWxl
VGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdNWU1B
Q1JPKGEgPyBiKCkgOiBjKTsnLCAnJykKIAotICAgIGRlZiB0ZXN0X21pbl92ZXJzaW9uc19vZl93
a19hcGlfYXZhaWxhYmxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElf
QVZBSUxBQkxFKG1hY29zeCgxLjIuMykpJywgJ21hY29zeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBt
YWNvcygpIGluc3RlYWQgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQorICAgIGRlZiB0
ZXN0X2FyZ3VtZW50c19mb3Jfd2tfYXBpX2F2YWlsYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMi4zKSknLCAnbWFjb3N4KCkg
aXMgZGVwcmVjYXRlZDsgdXNlIG1hY29zKCkgaW5zdGVhZCAgW2J1aWxkL3drX2FwaV9hdmFpbGFi
bGVdIFs1XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpKScsICdtYWNvc3goKSBpcyBkZXByZWNhdGVkOyB1c2UgbWFjb3MoKSBp
bnN0ZWFkICBbYnVpbGQvd2tfYXBpX2F2YWlsYWJsZV0gWzVdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxLjIuMyksIGlvcygzLjQuNSkpJywgJycp
ICAjIHZlcnNpb24gbnVtYmVycyBhcmUgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSknLCAnJykg
ICMgV0tfTUFDX1RCQSBhbmQgV0tfSU9TX1RCQSBhcmUgT0suCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfSU9TX1RCQSksIGlvcygzLjQuNSkpJywg
J21hY29zKFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBu
dW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKDEuMi4zKSwgaW9zKFdLX01BQ19UQkEpKScs
ICdpb3MoV0tfTUFDX1RCQSkgaXMgaW52YWxpZDsgZXhwZWN0ZWQgV0tfSU9TX1RCQSBvciBhIG51
bWJlciAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMS4yLjMpKScsICcnKSAgIyB2ZXJzaW9uIG51
bWJlcnMgYXJlIE9LLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpKScsICcnKSAgIyBXS19NQUNfVEJBIGlzIE9LLgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcygzLjQuNSkpJywgJycpICAjIHZl
cnNpb24gbnVtYmVycyBhcmUgT0suCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMS4wKSknLCAnJykgICMgdmVyc2lvbiBudW1iZXJzIGFyZSBPSy4K
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShpb3MoMTEuMCkpJywg
JycpICAjIHZlcnNpb24gbnVtYmVycyBhcmUgT0suCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMi4zKSknLCAnJykgICMgRXh0ZW5kZWQgdmVyc2lv
biBudW1iZXJzIGFyZSBPSy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlM
QUJMRShpb3MoMTAuMS4xKSknLCAnJyksICAjIEV4dGVuZGVkIHZlcnNpb24gbnVtYmVycyBhcmUg
T0suCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MSkpJywgJ21hY29zKDExKSBpcyBpbnZhbGlkOyB2ZXJzaW9uIG51bWJlciBzaG91bGQgaGF2ZSBv
bmUgZGVjaW1hbCAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuKSknLCAnbWFjb3MoMTEuKSBp
cyBpbnZhbGlkOyBleHBlY3RlZCBXS19NQUNfVEJBIG9yIGEgbWFqb3IubWlub3IgdmVyc2lvbiAg
W2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1dLX0FQSV9BVkFJTEFCTEUoaW9zKDEwLikpJywgJ2lvcygxMC4pIGlzIGludmFsaWQ7IGV4cGVj
dGVkIFdLX0lPU19UQkEgb3IgYSBtYWpvci5taW5vciB2ZXJzaW9uICBbYnVpbGQvd2tfYXBpX2F2
YWlsYWJsZV0gWzVdJykKKwogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSknLCAnJykgICMgV0tfSU9TX1RCQSBpcyBPSy4KLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19JT1NfVEJBKSknLCAn
bWFjb3MoV0tfSU9TX1RCQSkgaXMgaW52YWxpZDsgZXhwZWN0ZWQgV0tfTUFDX1RCQSBvciBhIG51
bWJlciAgW2J1aWxkL3drX2FwaV9hdmFpbGFibGVdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfSU9TX1RCQSkpJywgJ21hY29zKFdLX0lP
U19UQkEpIGlzIGludmFsaWQ7IGV4cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBudW1iZXIgIFtidWls
ZC93a19hcGlfYXZhaWxhYmxlXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19B
UElfQVZBSUxBQkxFKGlvcyhXS19NQUNfVEJBKSknLCAnaW9zKFdLX01BQ19UQkEpIGlzIGludmFs
aWQ7IGV4cGVjdGVkIFdLX0lPU19UQkEgb3IgYSBudW1iZXIgIFtidWlsZC93a19hcGlfYXZhaWxh
YmxlXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpKScsICcnKSAgIyBXS19NQUNfVEJBIGlzIE9LLgorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJlIE9LLgorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSwg
bWFjb3MoV0tfTUFDX1RCQSkpJywgJycpICAjIFdLX01BQ19UQkEgYW5kIFdLX0lPU19UQkEgYXJl
IE9LLCBiYWNrd2FyZHMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfSU9TX1RCQSkpJywgJ21hY29zKFdLX0lPU19UQkEpIGlzIGludmFsaWQ7IGV4
cGVjdGVkIFdLX01BQ19UQkEgb3IgYSBtYWpvci5taW5vciB2ZXJzaW9uICBbYnVpbGQvd2tfYXBp
X2F2YWlsYWJsZV0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV0tfQVBJX0FWQUlM
QUJMRShpb3MoV0tfTUFDX1RCQSkpJywgJ2lvcyhXS19NQUNfVEJBKSBpcyBpbnZhbGlkOyBleHBl
Y3RlZCBXS19JT1NfVEJBIG9yIGEgbWFqb3IubWlub3IgdmVyc2lvbiAgW2J1aWxkL3drX2FwaV9h
dmFpbGFibGVdIFs1XScpCiAKICAgICBkZWYgdGVzdF9vc192ZXJzaW9uX2NoZWNrcyhzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwJywgJ01pc3BsYWNlZCBPUyB2
ZXJzaW9uIGNoZWNrLiBQbGVhc2UgdXNlIGEgbmFtZWQgbWFjcm8gaW4gb25lIG9mIGhlYWRlcnMg
aW4gdGhlIHd0Zi9QbGF0Zm9ybS5oIHN1aXRlIG9mIGZpbGVzIG9yIGFuIGFwcHJvcHJpYXRlIGlu
dGVybmFsIGZpbGUuICBbYnVpbGQvdmVyc2lvbl9jaGVja10gWzVdJykK
</data>

          </attachment>
      

    </bug>

</bugzilla>